实战案例:容器数据卷四部曲(三)目录数据卷
文章目录
- 一、在宿主机创建容器所使用的目录
- 二 、查看容器相关目录
- 三、引用宿主机的数据卷启动容器
- 四、进入到容器内测试写入数据
- 五、在宿主机修改数据
- 六、只读方法挂载数据卷
- 七、删除容器
一、在宿主机创建容器所使用的目录
root@ubuntu1804:~# mkdir /data/testdir
root@ubuntu1804:~# echo Test page on host > /data/testdir/index.html
二 、查看容器相关目录
root@ubuntu1804:~# docker images "*nginx*"
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-ubuntu1804 1.20.2 244dd10f1b53 43 hours ago 402MB
nginx-ubuntu1804 1.20.2 99c6261cef9c 43 hours ago 213MBroot@ubuntu1804:~# docker run -it --rm nginx-ubuntu1804:1.20.2 bash
/ # cat /etc/nginx/conf/nginx.conf
...location / {root /data/nginx/html;index index.html index.htm;}
...
/ # cat /data/nginx/html/index.html
Test Page nginx-ubuntu1804
/ # exit
root@ubuntu1804:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
三、引用宿主机的数据卷启动容器
root@ubuntu1804:~# docker run -d -v /data/testdir:/data/nginx/html/ -p 8001:80 nginx-ubuntu1804:1.20.2
b9aae84935d6b1658440bd5277ec77432e6b8528cb79686596eda236b9c53367
root@ubuntu1804:~# docker run -d -v /data/testdir:/data/nginx/html/ -p 8002:80 nginx-ubuntu1804:1.20.2
10c1921c544c49c6f1f16c7886aadf305935a740d892ccc942e6012c43c2a07b
root@ubuntu1804:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10c1921c544c nginx-ubuntu1804:1.20.2 "nginx" 2 seconds ago Up 1 second 443/tcp, 0.0.0.0:8002->80/tcp modest_mclaren
b9aae84935d6 nginx-ubuntu1804:1.20.2 "nginx" 6 seconds ago Up 6 seconds 443/tcp, 0.0.0.0:8001->80/tcp gifted_haslettroot@ubuntu1804:~# curl 127.0.0.1:8001
Test page on host
root@ubuntu1804:~# curl 127.0.0.1:8002
Test page on host
四、进入到容器内测试写入数据
进入其中一个容器写书数据,其他容器的数据也变化
root@ubuntu1804:~# docker exec -it 3eeb3460e7eb bash
root@3eeb3460e7eb:/# cat /data/nginx/html/index.html
Test page on host
root@3eeb3460e7eb:/# echo Test page v2 on host > /data/nginx/html/index.html
root@3eeb3460e7eb:/# cat /data/nginx/html/index.html
Test page v2 on host# 进入另一个容器看到数据变化
root@ubuntu1804:~# docker exec -it b3382aba0c05 bash
root@b3382aba0c05:/# cat /data/nginx/html/index.html
Test page v2 on host# 访问应用
root@ubuntu1804:~# curl 127.0.0.1:8001
Test page v2 on host
root@ubuntu1804:~# curl 127.0.0.1:8002
Test page v2 on host
五、在宿主机修改数据
root@ubuntu1804:~# echo Test page v3 on host > /data/testdir/index.html
root@ubuntu1804:~# curl 127.0.0.1:8001
Test page v3 on host
root@ubuntu1804:~# curl 127.0.0.1:8002
Test page v3 on hostroot@ubuntu1804:~# docker exec -it 3eeb3460e7eb bash
root@3eeb3460e7eb:/# cat /data/nginx/html/index.html
Test page v3 on hostroot@ubuntu1804:~# docker exec -it b3382aba0c05 bash
root@b3382aba0c05:/# cat /data/nginx/html/index.html
Test page v3 on host
六、只读方法挂载数据卷
默认数据卷为可读可写,加ro选项,可以实现只读挂载,对于不希望容器修改的数据,比如:配置文件,脚本等,可以用此方式甜挂载
docker run -d -v /data/testdir:/data/nginx/html/:ro -p 8003:80 nginx-ubuntu1804:1.20.2
6239e42d735b75c4f2d8aaafdf7b57de466a2d2842fa3e25750979dcd7b49a1droot@ubuntu1804:~# docker exec -it 6239e42d735b bash
root@6239e42d735b:/# cat /data/nginx/html/index.html
Test page v3 on host
root@6239e42d735b:/# echo Test page v4 on host > /data/nginx/html/index.html
bash: /data/nginx/html/index.html: Read-only file system
七、删除容器
root@ubuntu1804:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6239e42d735b nginx-ubuntu1804:1.20.2 "nginx" About a minute ago Up About a minute 443/tcp, 0.0.0.0:8003->80/tcp quirky_knuth
3eeb3460e7eb nginx-ubuntu1804:1.20.2 "nginx" 10 minutes ago Up 10 minutes 443/tcp, 0.0.0.0:8002->80/tcp angry_davinci
b3382aba0c05 nginx-ubuntu1804:1.20.2 "nginx" 10 minutes ago Up 10 minutes 443/tcp, 0.0.0.0:8001->80/tcp dreamy_matsumoto
root@ubuntu1804:~# docker rm -f `docker ps -aq`
6239e42d735b
3eeb3460e7eb
b3382aba0c05
root@ubuntu1804:~# cat /data/testdir/index.html
Test page v3 on host# 新建的容器还可以继续使用原有的数据卷
root@ubuntu1804:~# docker run -d -v /data/testdir:/data/nginx/html/ -p 8004:80 nginx-ubuntu1804:1.20.2
3b0bfc442cd89d890e748b1afad19c2f71bb36b51a3d394ff1e9a9d1a8b3c41f
root@ubuntu1804:~# curl 127.0.0.1:8004
Test page v3 on host