WHCSRL 技术网

docker学习(四)

目录

数据卷

mysql 后台启动并持久化数据

具名挂在/匿名挂在

初识DockerFile


数据卷

  1. docker run -it -v 主机目录:容器目录 镜像
  2. docker run -it -v /home/ceshi:/home centos /bin/bash
  3. #启动后可以根据 docker inspect查看关联信息
  4. "Mounts": [
  5. {
  6. "Type": "bind",
  7. "Source": "/home/ceshi", #主机地址
  8. "Destination": "/home", #容器关联地址1
  9. "Mode": "",
  10. "RW": true,
  11. "Propagation": "rprivate"
  12. }
  13. ],

数据会双向同步 

 好处 直接在本地修改不需要进入容器

mysql 后台启动并持久化数据

  1. #安装镜像
  2. docker pull mysql
  3. #启动
  4. -d #后台运行
  5. -v #卷挂载
  6. -e #环境配置
  7. -p #端口映射
  8. --name #容器名字
  9. 启动命令
  10. docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d
  11. -v /home/mysql/data:/var/lib/mysql
  12. -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

 成功之后用sqlyog 链接测试成功

具名挂在/匿名挂在

  1. #匿名挂在
  2. -v #后面不指定地址
  3. 例:
  4. docker run -d -P -v etc/nginx nginx
  5. docker volume ls #查看所有的 volume(卷) 情况
  6. DRIVER VOLUME NAME
  7. local 8d38ceafe1bbae3eea5ea202ac7975dfdf60bb2ef7b375a1f4891b062b31f208
  8. local b82e836e2cd18d329d442d26c0d252e9a9035484b44609a0229d362efebc7253
  9. 没有具体的路径
  10. #具名挂在
  11. 例:
  12. docker run -d -P -v test-nginx:/etc/nginx nginx
  13. docker volume ls #查看所有的 volume 情况
  14. DRIVER VOLUME NAME
  15. local 8d38ceafe1bbae3eea5ea202ac7975dfdf60bb2ef7b375a1f4891b062b31f208
  16. local b82e836e2cd18d329d442d26c0d252e9a9035484b44609a0229d362efebc7253
  17. local test-nginx
  18. 有具体的路径

所有的卷 都在 /var/lib/docker/volumes/xxx/_data

所以大多数情况我们都是用具名挂在

如何确定具名挂载/匿名挂载/路径挂载

  1. -v 容器路径 #匿名挂载
  2. -v 卷名:容器路径 #剧名挂载
  3. -v /宿主机路径:容器路径 #路径挂载

拓展:

  1. #通过ro/rw来改变权限
  2. docker run -d -P -v test-nginx:/etc/nginx:ro nginx #只读 read only
  3. docker run -d -P -v test-nginx:/etc/nginx:rw nginx #可读可写 read write

初识Dockerfile

Dockerfile 就是用来构建 docker镜像的构建文件,命令脚本,体验一下!

通过这个脚本可以生成镜像,镜像是一层一层的脚本一个个的执行每个命令都是一行

  1. #创建一个Dockerfile脚本
  2. FROM centos
  3. VOLUME ["volume01","volume02"]
  4. CMD echo "----end----"
  5. CMD /bin/bash
  6. #执行脚本 创建一个镜像
  7. docker build -f dockerfile1 -t test/centos .

 查看结果 docker images

 执行镜像 docker run -it 0edd7173368c

docker ps

查看容器 信息 docker inspect 4177960f655b

 看到所对应的数据卷

数据卷容器

多个mysql 如何同步数据

  1. #继承容器  4177960f655b 到 docker02 当中
  2. docker run -it --name docker02 --volumes-from 4177960f655b test/centos

在 第一个容器中创建文件 在docker02 当中依然可以找到 

 

 如果想实现 mysql 复制

  1. docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02
  2. --volume-from mysql01 mysql:5.7
  3. #同步两个数据容器

总结:

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止

但是一旦你持久化到本地,之歌时候,本地的数据不会删除的

推荐阅读