Docker Run 挂载目录

在使用 Docker 运行容器时,经常需要将宿主机的目录或文件挂载到容器中,以实现数据共享和持久化存储。Docker 提供了 -v--volume 参数来实现挂载目录的功能。

1. 挂载单个目录

使用 -v 参数可以将宿主机的目录挂载到容器中。语法如下:

docker run -v <宿主机目录>:<容器目录> <镜像名>

其中,<宿主机目录> 是宿主机上的目录路径,<容器目录> 是容器中的目录路径。

示例:

docker run -v /path/on/host:/path/in/container nginx

上述命令将宿主机上的 /path/on/host 目录挂载到了容器中的 /path/in/container 目录。

2. 挂载多个目录

如果需要挂载多个目录,可以在 -v 参数后继续添加多个挂载配置。示例:

docker run -v /path/on/host1:/path/in/container1 -v /path/on/host2:/path/in/container2 nginx

上述命令将宿主机上的 /path/on/host1 目录挂载到容器中的 /path/in/container1 目录,并且将宿主机上的 /path/on/host2 目录挂载到容器中的 /path/in/container2 目录。

3. 挂载为只读模式

默认情况下,挂载的目录在容器内是可读写的。如果希望将挂载目录设置为只读模式,可以在挂载配置后添加 :ro 参数。示例:

docker run -v /path/on/host:/path/in/container:ro nginx

上述命令将宿主机上的 /path/on/host 目录以只读模式挂载到容器中的 /path/in/container 目录。

4. 挂载匿名卷

除了挂载宿主机的目录,还可以使用匿名卷来存储容器中的数据。匿名卷是 Docker 在容器内部创建的一个特殊目录,用于存储容器运行时产生的数据。示例:

docker run -v /path/in/container nginx

上述命令将在容器中创建一个匿名卷,将其挂载到容器中的 /path/in/container 目录。

5. 挂载具名卷

除了匿名卷,还可以使用具名卷来存储容器中的数据。具名卷是 Docker 提供的一种高级挂载方式,可以在容器之间共享和重用数据。示例:

docker run -v <卷名>:<容器目录> <镜像名>

示例:

docker run -v my_volume:/path/in/container nginx

上述命令将具名卷 my_volume 挂载到容器中的 /path/in/container 目录。

6. 挂载类型

挂载目录时,可以指定挂载的类型。Docker 支持以下挂载类型:

  • rw(默认):可读写
  • ro:只读

示例:

docker run -v /path/on/host:/path/in/container:ro nginx

上述命令将宿主机上的 /path/on/host 目录以只读模式挂载到容器中的 /path/in/container 目录。

7. 使用环境变量

在挂载目录时,还可以使用环境变量来动态指定挂载路径。示例:

docker run -v $PWD:/path/in/container nginx

上述命令将当前工作目录挂载到容器中的 /path/in/container 目录。

总结

通过以上方式,我们可以方便地在 Docker 容器中挂载宿主机的目录,实现数据的共享和持久化存储。在实际应用中,可以根据具体需求选择适合的挂载