任务
通过虚拟机中的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
-
这里的localhost对应的是容器IP,有专门的语句查看
3.PNG
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,并把前面的#去掉!!。
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,果然可行~
网友评论