在使用 Docker 时,有时你可能希望将容器中的文件或目录映射到主机上的目录中,以便在主机和容器之间共享数据。这可以通过 Docker 的卷(volumes)或绑定挂载(bind mounts)来实现。
以下是如何使用 Docker 将容器中的目录映射到主机上的目录的步骤:
docker run
命令你可以在运行容器时使用 -v
或 --mount
选项来指定卷或绑定挂载。
-v
选项-v
选项的语法是 [host_path]:[container_path]
,其中 host_path
是主机上的目录,container_path
是容器中的目录。
docker run -d \
-v /path/on/host:/path/in/container \
--name my_container \
my_image
例如,将主机上的 /home/user/data
目录映射到容器中的 /app/data
目录:
docker run -d \
-v /home/user/data:/app/data \
--name my_container \
my_image
--mount
选项--mount
选项提供了更详细的语法,适合需要更多配置的情况。
docker run -d \
--mount type=bind,source=/path/on/host,target=/path/in/container \
--name my_container \
my_image
例如,将主机上的 /home/user/data
目录映射到容器中的 /app/data
目录:
docker run -d \
--mount type=bind,source=/home/user/data,target=/app/data \
--name my_container \
my_image
如果你使用 Docker Compose 来管理容器,可以在 docker-compose.yml
文件中定义卷或绑定挂载。
以下是一个示例 docker-compose.yml
文件:
version: '3.8'
services:
my_service:
image: my_image
volumes:
- /home/user/data:/app/data
然后运行:
docker-compose up -d
在 Dockerfile 中,你可以使用 VOLUME
指令来声明卷,但这只是一个声明,实际的挂载还是需要在运行容器时指定。
FROM ubuntu:latest
VOLUME /app/data
在运行容器时,使用 -v
或 --mount
选项来实际挂载主机目录:
docker run -d \
-v /home/user/data:/app/data \
--name my_container \
my_image
领取专属 10元无门槛券
手把手带您无忧上云