4. docker存储卷

2019-09-25  本文已影响0人  epiiplus1equal0

docker存储卷

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

why data volume.png data valume.png data volume1.png volume type.png

在容器中使用存储卷

在容器中使用存储卷.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-compose

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

上一篇 下一篇

猜你喜欢

热点阅读