目录
数据卷
docker run -it -v 主机目录:容器目录 镜像
例
docker run -it -v /home/ceshi:/home centos /bin/bash
#启动后可以根据 docker inspect查看关联信息
"Mounts": [
{
"Type": "bind",
"Source": "/home/ceshi", #主机地址
"Destination": "/home", #容器关联地址1
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
数据会双向同步
好处 直接在本地修改不需要进入容器
mysql 后台启动并持久化数据
#安装镜像
docker pull mysql
#启动
-d #后台运行
-v #卷挂载
-e #环境配置
-p #端口映射
--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 mysql01 mysql:5.7
成功之后用sqlyog 链接测试成功
具名挂在/匿名挂在
#匿名挂在
-v #后面不指定地址
例:
docker run -d -P -v etc/nginx nginx
docker volume ls #查看所有的 volume(卷) 情况
DRIVER VOLUME NAME
local 8d38ceafe1bbae3eea5ea202ac7975dfdf60bb2ef7b375a1f4891b062b31f208
local b82e836e2cd18d329d442d26c0d252e9a9035484b44609a0229d362efebc7253
没有具体的路径
#具名挂在
例:
docker run -d -P -v test-nginx:/etc/nginx nginx
docker volume ls #查看所有的 volume 情况
DRIVER VOLUME NAME
local 8d38ceafe1bbae3eea5ea202ac7975dfdf60bb2ef7b375a1f4891b062b31f208
local b82e836e2cd18d329d442d26c0d252e9a9035484b44609a0229d362efebc7253
local test-nginx
有具体的路径
所有的卷 都在 /var/lib/docker/volumes/xxx/_data
所以大多数情况我们都是用具名挂在
如何确定具名挂载/匿名挂载/路径挂载
-v 容器路径 #匿名挂载
-v 卷名:容器路径 #剧名挂载
-v /宿主机路径:容器路径 #路径挂载
拓展:
#通过ro/rw来改变权限
docker run -d -P -v test-nginx:/etc/nginx:ro nginx #只读 read only
docker run -d -P -v test-nginx:/etc/nginx:rw nginx #可读可写 read write
初识Dockerfile
Dockerfile 就是用来构建 docker镜像的构建文件,命令脚本,体验一下!
通过这个脚本可以生成镜像,镜像是一层一层的脚本一个个的执行每个命令都是一行
#创建一个Dockerfile脚本
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
#执行脚本 创建一个镜像
docker build -f dockerfile1 -t test/centos .
查看结果 docker images
执行镜像 docker run -it 0edd7173368c
docker ps
查看容器 信息 docker inspect 4177960f655b
看到所对应的数据卷
数据卷容器
多个mysql 如何同步数据
#继承容器 4177960f655b 到 docker02 当中
docker run -it --name docker02 --volumes-from 4177960f655b test/centos
在 第一个容器中创建文件 在docker02 当中依然可以找到
如果想实现 mysql 复制
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02
--volume-from mysql01 mysql:5.7
#同步两个数据容器
总结:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止
但是一旦你持久化到本地,之歌时候,本地的数据不会删除的