测试文件的同步
再来测试!
1、停止容器
2、宿主机修改文件
3、启动容器
4、容器内的数据依旧是同步的
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
6. 练习:安装MySQL思考:MySQL的数据持久化的问题
# 获取mysql镜像 [root@iz2zeak7sgj6i7hrb2g862z home]# docker pull mysql:5.7 # 运行容器,需要做数据挂载 #安装启动mysql,需要配置密码的,这是要注意点! # 参考官网hub docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag #启动我们得 -d 后台运行 -p 端口映射 -v 卷挂载 -e 环境配置 -- name 容器名字 $ docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql03 mysql:5.7 # 启动成功之后,我们在本地使用sqlyog来测试一下 # sqlyog-连接到服务器的3306--和容器内的3306映射 # 在本地测试创建一个数据库,查看一下我们映射的路径是否ok!测试连接:注意3310端口要在阿里云服务器的安全组中打开,否则无法连接。
当我们在本地用SQLyog新建名称为test的数据库时候,容器容器也会创建
假设我们将包含mysql的容器删除时,
发现,我们挂载到本地的数据卷依旧没有丢失,这就实现了容器数据持久化功能。
7. 具名和匿名挂载 # 匿名挂载 -v 容器内路径! $ docker run -d -P --name nginx01 -v /etc/nginx nginx # 查看所有的volume(卷)的情况 $ docker volume ls DRIVER VOLUME NAME # 容器内的卷名(匿名卷挂载) local 21159a8518abd468728cdbe8594a75b204a10c26be6c36090cde1ee88965f0d0 local b17f52d38f528893dd5720899f555caf22b31bf50b0680e7c6d5431dbda2802c # 这里发现,这种就是匿名挂载,我们在 -v只写了容器内的路径,没有写容器外的路径! # 具名挂载 -P:表示随机映射端口 $ docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx 9663cfcb1e5a9a1548867481bfddab9fd7824a6dc4c778bf438a040fe891f0ee # 查看所有的volume(卷)的情况 $ docker volume ls DRIVER VOLUME NAME local 21159a8518abd468728cdbe8594a75b204a10c26be6c36090cde1ee88965f0d0 local b17f52d38f528893dd5720899f555caf22b31bf50b0680e7c6d5431dbda2802c local juming-nginx #多了一个名字 # 通过 -v 卷名:查看容器内路径 # 查看一下这个卷 $ docker volume inspect juming-nginx [ { "CreatedAt": "2020-05-23T13:55:34+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data", #默认目录 "Name": "juming-nginx", "Options": null, "Scope": "local" } ]所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/自定义的卷名/_data下,
如果指定了目录,docker volume ls 是查看不到的。
拓展:
# 通过 -v 容器内路径: ro rw 改变读写权限 ro #readonly 只读 rw #readwrite 可读可写 $ docker run -d -P --name nginx05 -v juming:/etc/nginx:ro nginx $ docker run -d -P --name nginx05 -v juming:/etc/nginx:rw nginx # ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作! 8. 初识 DockerfileDockerfile 就是用来构建docker镜像的构建文件!命令脚本!先体验一下!