容器数据卷
·干什么用?
如果数据都在容器中,那么我们容器删除,数据就会丢失!
将数据持久化就不会丢失,这个技术就是一个数据共享的技术。
docker容器中的数据,同步到本地,目录的挂载
总结:容器的持久化和同步操作!容器间的数据共享!
·使用数据卷
# 方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内端目录
·测试
#-v 挂载
PS C:\Users\41074\Desktop> docker run -it --name linux -v d:\log:/home centos /bin/bash
#启动后查看容器的情况,查看是否挂载成功
PS C:\Users\41074\Desktop> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aba58462eb6a centos "/bin/bash" 29 seconds ago Up 29 seconds linux
PS C:\Users\41074\Desktop> docker inspect linux
实战:安装MySQL
#获取镜像 PS C:\Users\41074\Desktop> docker pull mysql Using default tag: latest #运行容器,需要做数据挂载! #安装启动mysql,需要配置密码的,这点需要注意 #启动我们的 -d 后台运行 -p 端口映射 -v 卷挂载 -e 环境配置 --name 容器名字 #官方用例: $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
#启动mysql PS C:\Users\41074\Desktop> docker run -d --name mysql -p 3310:3306 -v d:\log\mysql\conf:/etc/mysql/conf.d -v d:\log\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql d6e9cf4ae81d6d4720adc7e4b254c40b95a99391699c0834d8a2b07b6e0b26cf PS C:\Users\41074\Desktop> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d6e9cf4ae81d mysql "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 33060/tcp, 0.0.0.0:3310->3306/tcp mysql #启动成功后,我们用sqlyog来连接测试一下 #sqlyog 连接到服务器3310端口,3310和容器内的3306映射过了 #在本地创建一个数据库,查看一下我们映射的路径是否ok
拓展:
# 通过 -v 容器内路径:ro rw 改变读写权限 ro: readonly #只读 rw: readwrite #可读可写 # 一旦设置了容器权限,容器对我们挂载出来的内容就限定了! docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx:ro nginx docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx:rw nginx # ro 只要看到ro就说明这个路径只能通过宿主机操作,容器内部是不能操作的。