美文网首页
4. docker存储卷

4. docker存储卷

作者: epiiplus1equal0 | 来源:发表于2019-09-25 22:54 被阅读0次

docker存储卷

本文基于马哥的docker和k8s视频总结, 在此致谢马哥.

  • 分层构建, 联合挂载
why data volume.png data valume.png data volume1.png volume type.png
  • 绑定挂载卷: 容器上的目录和宿主机目录都需自行指定
  • 由docker管理的卷: 容器上的目录自行指定, 宿主机目录由docker管理, 自动创建和关联

在容器中使用存储卷

  • 实现容器和宿主机共享一份数据文件
在容器中使用存储卷.png
docker run --help
  -v, --volume list  Bind mount a volume

由docker管理的卷

# docker管理的卷, -v选项指定容器里面的目录
docker container run --name bbox1 -it --rm -v /data/ busybox
/ # ls / # 可以查看到/data目录
/ # ls /data # 此时/data目录中无数据

docker inspect bbox1 | grep -A 10 Mounts
        "Mounts": [
            {
                "Type": "volume",
                "Name": "32f93d0afb5af3fff2a841a32cbbc8677256bff022ad0d278c081d85ef87cd53",
                "Source": "/var/lib/docker/volumes/32f93d0afb5af3fff2a841a32cbbc8677256bff022ad0d278c081d85ef87cd53/_data", # 可以查看到容器上的/data目录对应宿主机上"Source"值对应的目录
                "Destination": "/data", 
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

# 在容器上的/data目录创建文件, 宿主机上映射的目录内可以查看到对应内容
# 同样的在宿主机上映射的目录创建的目录, 同理可在容器的/data目录内看到对应内容

绑定挂载卷

# 绑定挂载卷
docker container run --name bbox2 -it -v HOSTDIR:VOLUMEDIR busybox
  HOSTDIR # 宿主机上的目录
  VOLUMEDIR # 容器里的目录

docker container run --name bbox2 -it --rm -v /data/volume/bbox2:/data busybox
# 在宿主机上 ls -R /data 可以看见指定目录被自动依次创建
echo test >> /data/volume/bbox2/test.txt

特别注意: 容器被删除后所使用的数据(包括目录和文件)依旧被保留 <==> 持久存储 !

这就意味着下次再次启动容器时只要命令指定的内容一致, 而且 -v 选项指定的目录也一直, 则新建的容器可以使用原来的数据和文件

使用模板过滤信息

# 根用"."表示
docker inspect bbox2 -f {{.Mounts}}
[{bind  /data/volume/bbox2 /data   true rprivate}]

docker inspect bbox2 -f {{.NetworkSettings.IPAddress}}
172.17.0.2

如何让一个容器复制另外一个容器的存储卷

共享存储卷.png
docker run --help
  --volumes-from list  Mount volumes from the specified container(s)
# 可以自己新建一个专门用于做基础支撑的容器, 然后让其他容器都以这个容器为模板进行创建
# 这个用于做基础支撑的容器不要去删除!
# 先创建一个基础支撑容器, 此容器可以关闭
docker container create --name infracon -it \ 
                        -v /data/infracon/volume/:/data/web/html \
                        busybox

# 然后依次以基础支撑容器为模板创建你需要创建的容器
# 注意创建的容器内的程序可能会有依赖关系, 因此要注意创建的先后顺序!
docker container run --name mariadb1 -it --volumes-from infracon --network container:infracon mariadb
docker container run --name tomcat1 -it --volumes-from infracon --network container:infracon tomcat
docker container run --name nginx1 -it --volumes-from infracon --network container:infracon nginx
  • 以基础支撑容器为模板创建的容器在用命令docker inspect container_name查看信息时看不到IP地址的信息, 因为它是Join进来的, 但是在容器内会有显示, 说明你创建的新容器没有问题

docker-compose

docker的容器编排工具, 实现单机编排容器与制作镜像

相关文章

  • 4. docker存储卷

    docker存储卷 本文基于马哥的docker和k8s视频总结, 在此致谢马哥. 分层构建, 联合挂载 绑定挂载卷...

  • Docker(四) 存储卷

    docker存储卷 数据卷 为什么需要数据卷(存储卷)docker镜像由多个只读层叠加而成,启动容器时,docke...

  • docker存储卷

    docker存储卷 Docker镜像由多个只读层叠加而成,而启动容器时,Docker会加载只读镜像层,并在镜像栈顶...

  • docker修改默认存储目录

    docker 默认存储映像、卷和集群状态等持久化数据的路径是/var/lib/docker。那么如何修改默认的存储...

  • Docker Volume 存储卷

  • 4. Docker数据卷

    3 Docker数据管理 如下图, 是对根的数据写入到了容器的可写层, 但是把/data的数据写入到了一个另外的v...

  • Docker实战系列(3)-数据管理

    数据卷( Data Volume )可以用来存储 Docker 应用的数据,也可以用来在 Docker 容器间进行...

  • Docker容器技术(五)之数据卷的使用

    1、什么是数据卷? Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷,简单的理解...

  • Docker volume使用

    volumem命令 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data ...

  • 修改docker默认存储位置

    修改目录存储 因为运行的容器、镜像、存储卷都在这个目录,因此在安装之前直接将/var/lib/docker通过挂载...

网友评论

      本文标题:4. docker存储卷

      本文链接:https://www.haomeiwen.com/subject/xkwgectx.html