1.数据的挂载

image.png

三种挂载模式
1) docker自动在外部创建文件夹自动挂载容器内部指定的文件夹内容【Dockerfile VOLUME指令的作用】
-v 可以自动挂载 到linux主机或者docker自动管理的这一部分区域
2) 自己在外部创建文件夹,自动挂载 bind mount 模式
3) 可以把数据挂载到内存中。 几乎不用到
—mount 挂载到 linux宿主机(文件系统),手动挂载(不用了)
image.png

2 、volume(卷) 方式

-v 宿主机绝对路径:Docker容器内部绝对路径:叫挂载;这个有空挂载问题
-v 不以/开头的路径:Docker容器内部绝对路径:叫绑定(docker会自动管理,docker不会把他当前目 录,而把它当前卷)

nginx测试html挂载几种不同情况:

  1. 不挂载 效果:访问默认欢迎页
  2. -v /root/html:/usr/share/nginx/html 效果:访问forbidden
  3. -v html:/usr/share/nginx/html:ro 效果:访问默认欢迎页
  4. -v /usr/share/nginx/html 效果:匿名卷 (什么都不写也不要加冒号,直接写容器内的目录)

解释

  1. # -v不以绝对路径方式;
  2. ### 1、先在docker底层创建一个你指定名字的卷(具名卷) html
  3. ### 2、把这个卷和容器内部目录绑定
  4. ### 3、容器启动以后,目录里面的内容就在卷里面存着;
  5. #####-v nginxhtml:/usr/share/nginx/html 也可以以下操作
  6. ## 1 docker create volume nginxhtml 如果给卷里面就行修改,容器内部的也就改了。
  7. ## 2 docker volume inspect nginxhtml
  8. ## 3docker run -d -P -v html:/usr/share/nginx/html --name=nginx nginx
  9. # 可以看到
  10. "Mounts": [
  11. {
  12. "Type": "volume",
  13. "Name": "html",
  14. "Source": "/var/lib/docker/volumes/html/_data",
  15. "Destination": "/usr/share/nginx/html",
  16. "Driver": "local",
  17. "Mode": "z",
  18. "RW": true,
  19. "Propagation": ""
  20. }
  21. ]
  22. #卷:就是为了保存数据
  23. docker volume #可以对docker自己管理的卷目录进行操作;
  24. /var/lib/docker/volumes(卷的根目录)

2、管理卷

  1. docker volume create xxx:创建卷名
  2. docker volume inspect xxx:查询卷详情
  3. docker volume ls: 列出所有卷
  4. docker volume prune: 移除无用卷

3、可视化界面-Portainer

  1. docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce