docker入门三:搭建可以从本机访问的容器

2020-10-08  本文已影响0人  沿哲

任务

通过虚拟机中的mysql镜像建立容器使得本机可以通过IP与端口号访问容器内部并使用mysql

1. pull好mysql镜像

我用的是mysql:8

docker pull mysql:8

2. 启动镜像,建立容器

容器名称:mysql-test2
端口映射:将容器的22号端口映射出来,使得从其他主机上可以访问3307来访问容器
MYSQL_ROOT_PASSWORD:会在第3步用到

docker  run -itd --name mysql-test2 -p 3307:22 -e MYSQL_ROOT_PASSWORD=123456 mysql:8 

建立好的效果图如下,通过docker ps查看容器建立情况


2.PNG

3. 进入容器内启动mysql

按照如下语句进入,回车后需要输入密码。密码就是在启动mysql镜像的时候设定的

mysql -h localhost -u root -p

4. apt-get update(容器内部操作)

从刚才的mysql退出(ctrl+d),配置其它。首先update


4.PNG

5. install ssh、vim(容器内部操作)

update好之后进行安装工作

 apt-get install openssh-server
 apt-get install vim

6. 设定密码

passwd root

输入自己记得的密码再回车


6.PNG

7. 对sshd_config文件进行编辑(容器内部操作)

在etc/ssh文件夹下

vi sshd_config

对下面这两句进行修改,均改成yes,并把前面的#去掉!!。

7.PNG 7.PNG

8. 重启ssh(容器内部操作)

一句话的功夫

service ssh restart

9. 电脑本机登录虚拟机的镜像

root@后的内容自己在虚拟机中输入ifconfig查看,端口3307
登录进容器后输入下面这句话,本机也可以使用了!

mysql -h localhost -u root -p
9.PNG

用Xshell试一下,相同的操作,仍然可以访问容器并开启mysql服务


9.PNG

附:对localhost探究

如果在mysql启动语句中-h 后不加localhost,那应该用什么IP地址呢?肯定不是虚拟机ifconfig之后虚拟机的地址,那么会是ifconfig之后显示的docker的IP地址吗?经过我的实验,我发现不是!
对于容器有专门的IP地址查看操作,如下

docker inspect --format '{{ .NetworkSettings.IPAddress }}' c9d  #c9d是我的容器ID前三位

经过这个语句查到的IP的确和ifconfig查到的不太一样~

用正经方法查到的IP代替localhost,果然可行~


上一篇 下一篇

猜你喜欢

热点阅读