1、容器如何挂载

image.png

每一个容器里面的内容,支持三种挂载方式:

  1. docker自动在外部创建文件夹自动挂载容器内部指定的文件夹内容【Dockerfile VOLUME指令的作用】
  2. 自己在外部创建文件夹,手动挂载
  3. 可以把数据挂载到内存中。
    • —mount 挂载到 linux宿主机,手动挂载(不用了)
    • -v 可以自动挂载,到linux’主机或者docker自动管理的这一部分区域
  1. Volumes(卷) :存储在主机文件系统的一部分中,该文件系统由Docker管理
  2. (在Linux上是“ / var / lib / docker / volumes /”)。
  3. Docker进程不应修改文件系统的这一部分。 卷是在Docker中持久存储数据的最佳方法。
  1. Bind mounts(绑定挂载) 可以在任何地方 存储在主机系统上。 它们甚至可能是重要的系统文件或
  2. 目录。 Docker主机或Docker容器上的非Docker进程可以随时对其进行修改。
  1. tmpfs mounts(临时挂载) 仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统

2、volume(卷)

匿名卷使用

  1. docker run -dP -v :/etc/nginx nginx
  2. #docker将创建出匿名卷,并保存容器/etc/nginx下面的内容
  3. # -v 宿主机:容器里的目录

具名卷使用

  1. docker run -dP -v nginx:/etc/nginx nginx
  2. #docker将创建出名为nginx的卷,并保存容器/etc/nginx下面的内容

提示

  1. 如果将空卷装入存在文件或目录的容器中的目录中,则容器中的内容(复制)到该卷中。
  2. 如果启动一个容器并指定一个尚不存在的卷,则会创建一个空卷。

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

  • 如果自己开发测试,用 -v 绝对路径的方式
  • 如果是生产环境建议用卷
  • 除非特殊 /bin/docker 需要挂载主机路径的则操作 绝对路径挂载