docker 容器管理-数据卷Volume

1.基础数据持久化。

1.简单实现将首页显示更改成自己指定内容

1.启动一个nginx容器

docker container run -d --name="nginx_1" -p 80:80 nginx:1.18

2.登录到启动的nginx容器

docker container exec -it nginx_1 /bin/bash

3.进到默认站点目录进行更改

root@379735283aa8:/# cd /usr/share/nginx/html/
root@379735283aa8:/usr/share/nginx/html# ls
50x.html  index.html
root@379735283aa8:/usr/share/nginx/html# echo "123nb" > index.html
root@379735283aa8:/usr/share/nginx/html# cat index.html
123nb

4.浏览器访问测试 10.0.0.11

2.如何实现宿主机与容器之间的数据交互

1.在宿主机手动写一个数据文件

[root@docker-11~]# vim index.html
[root@docker-11~]# cat index.html
321nb

2.将数据文件拷贝到容器站点目录中

docker container cp index.html nginx_1:/usr/share/nginx/html/
# 注意cp不加路径默认是cp当前目录的文件

3.容器中的数据文件下载到本地

docker container cp nginx_1:/usr/share/nginx/html/50x.html ./

3.数据持久化,共享存储

1.容器启动时指定数据目录做映射 -v

docker container run -d --name="nginx_2" -p 81:80 -v /opt/html:/usr/share/nginx/html nginx:1.18
# 指定宿主机和容器的某一个目录进行关联,宿主机修改内容容器里可以同步

2.开启两个nginx容器(91,92),共同挂载一个数据卷,实现静态资源共享

docker container run -d -p 91:80 --name='nginx_v1' -v /opt/html:/usr/share/nginx/html nginx:1.18
docker container run -d -p 92:80 --name="nginx_v2" -v /opt/html:/usr/share/nginx/html nginx:1.18

3.查看容器数据卷挂载路径

[root@docker-11~]# docker container inspect nginx_v1  # inspect查看容器详细信息,找到 Mounts
"Mounts": [
            {
                "Type": "bind",
                "Source": "/opt/html",                     #源路径
                "Destination": "/usr/share/nginx/html",    #目标路径
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
         ],

2.数据卷容器。

作用:集中化管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数据容器进行统一挂载,统一管理。通过容器实现批量挂载的需求。

1.宿主机模拟数据目录

mkdir -p /opt/volume/a
mkdir -p /opt/volume/b
touch /opt/volume/a/a.txt
touch /opt/volume/b/b.txt

2.启动数据卷容器

docker container run -it --name="nignx_volumes" -v /opt/volume/a:/opt/a -v /opt/volume/b:/opt/b centos /bin/bash
crtrl + p q

3.使用数据卷 --volumes-from

docker run -d -p 8085:80 --volumes-from nginx_volumes --name "nginx_8085" nginx:1.18
docker run -d -p 8086:80 --volumes-from nginx_volumes --name "nginx_8086" nginx:1.18

4.登录查看是否成功

docker container exec -it nginx_8085 /bin/bash
cd /opt/ && ls
docker container exec -it nginx_8086 /bin/bash
cd /opt/ && ls
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐