Docker笔记(二)容器数据卷进阶

容器数据卷

什么是容器数据卷

数据存在容器,容器删除,数据就会丢失,如何做到数据持久化?

目的:就是数据的持久化,完全独立与容器的生命周期,因此Docker不会在容器删除时删除其挂载的数据卷。

特点

1:数据卷可以在容器之间共享或重用数据。

2:数据卷中的更改可以直接生效。

3:数据卷中的更改不会包含在镜像的更新中。

4:数据卷的生命周期一直持续到没有容器使用它为止。

具名挂载与匿名挂载

我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的|具名挂载

#如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
-v容器内路径
#匿名挂载
-v卷名:容器内路径#具名挂载
-v/宿主机路径:容器内路径#指定路径挂载!

拓展︰

#通过-v容器内路径:ro rw改变读写权限
ro  readonly #只读
rw  readwrite#可读可写

#一旦这个了设置了容器权限,容器对裁们挂载出来的内容就有限定了!
docker run -d -p --name nginx02 -v juming-nginx : /etc/nginx:ro nginxdocker run -d - --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

# ro只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

用法

方式一 :使用命令挂载

docker run -it -v  /宿主机绝对路径目录:/容器内目录

# 示例
docker run -it -v /home/ceshi:/home centos /bin/bash
# 通过docker inspect [容器id] 查看容器详细配置
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi", # 主机内地址
                "Destination": "/home",  # 容器内地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

方式二 :使用Dockerfile挂载

Dockerfile 用来构建docker镜像的构建文件

# 指令大写
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end----"
CMD /bin/bash

数据卷容器

实现容器建数据共享

# 启动docker01,并创建test.md文件
# docker run -it --name docker01 test/centos:1.0

[root@node1 docker-test-volume]# docker run -it --name docker01 test/centos:1.0
[root@a45217dfa119 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01	volume02
[root@a45217dfa119 /]# cd volume01
[root@a45217dfa119 volume01]# touch test.md


# 启动docker02,通过--volumes-from继承docker01配置
# docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
# 查看volume01下也存在test.md

[root@node1 ~]# docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
[root@1611bfa5128f /]# cd volume01
[root@1611bfa5128f volume01]# ls
test.md

实战

一、安装mysql

# 1.0 获取mysql镜像
docker pull mysql:5.7
# 2.0 启动mysql
# -d 后台运行   -p 端口映射  -v数据卷挂载  -e 环境配置   --name容器名
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/confg.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
posted @ 2021-10-27 17:04  攻城狮~2022  阅读(33)  评论(0编辑  收藏  举报
所有内容都是自己使用过程的总结,如有不严谨或者不正确的地方,麻烦大家留言指出,一起研讨。