Docker 数据卷 volume
需求:容器删除后,容器内的数据丢失,如mysql容器废了,那库都没了
数据的持久化,宿主机和容器同步数据,
# 命令:docker run -v /HOST/DIR:/CONTAINER/DIR
docker run -v /home/data:/data
实战MySQL
# 命令:
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
具名和匿名挂载
# 匿名挂载
-v 容器内路径 # 不写HOST的路径地址
# 具名挂载
-v 卷名:容器内路径
# 指定路径挂载
-v 宿主机路径:容器路径
docker volume ls # 版本低的还没有这个命令
"Volumes": {
"/etc/nginx": "/var/lib/docker/volumes/73bc9f5eb56cb82373b5ec5eede3febc3ed344ed4b7b4fd674d6abc8a3a27563/_data"
}
拓展
# 通过 -v 容器路径:rw | ro
# read only ro 只读
# read write rw 读写
# 一旦设置了容器权限,容器对我们挂载出来的内容就被设定的权限
# ro 就是只能通过宿主机改,容器没有权限
初识Dockerfile
Dockerfile 就是用来构建镜像的文件,一个命令脚本, 通过这个脚本可生产镜像,每一个命令都是一层
方式二:在构建镜像的时候,指定卷目录,匿名挂载
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo "----END---"
CMD /bin/bash
数据卷容器
多个msyql 数据如何同步
# --volume-from
# 只要有一个容器使用文件,那么文件就一直存在,双向拷贝
# 容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止