docker学习(四)

docker学习(四),第1张

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4992830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存