docker学习(四)

目录

数据卷

mysql 后台启动并持久化数据

具名挂在/匿名挂在

初识Dockerfile

数据卷容器

总结:


数据卷

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
#同步两个数据容器

总结:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值