前面的所有知识点给大家介绍了docker的使用,估计会有人在使用docker虚拟化服务的时候存在安装和使用上的理解偏差,所以要说明一点,无论是哪种镜像,本质上docker只是打包了一个外在,当你要实例化容器的时候,内在需要用宿主机的,这也就是数据卷存在的意义,比如用MySQL的安装作为一个例子,在阿里云里下载一个MySQL的镜像
[root@hdp3 wy] docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
此时,你在用mysql镜像run容器的时候应该使用数据卷和端口映射
docker run -p 3306:3306 -v /etc/mysql/conf.d:/etc/mysql/conf.d -v /logs:/logs -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
提一点-e
是命令行里设置环境变量。
留一个悬念,你可以尝试不同mysql容器之间,用同样的数据路径或者是容器的数据卷挂载你本地宿主机本来就有的MySQL路径上,试一下是什么效果?