[英]mount a directory from docker container to the linux ubuntu host machine
我想使用 docker-compose.yml 将目录从 docker 挂载到我的 linux docker-compose.yml
主机。
docker容器里面的目录是/usr/local/XXX
,我想挂载到/home/Projects/XX
我怎样才能让它发生?
这是我的docker-compose.yml
文件:
version: '3'
services:
MyContainer:
image: XX.XXX.XXX.XXX:XXXX/XXX/MyContainer:latest
restart: always
container_name: MyContainer
hostname: MyContainer_docker
privileged: true
ports:
- "XXXX:XX"
volumes:
- /home/Project/workspace/XXX/XXXX:/home/XX
environment:
- ...
extra_hosts:
- ...
networks:
net_plain3:
ipv4_address: ...
networks:
# ...etc...
使用正确的驱动程序选项是可能的。
从技术上讲,您仍然将主机目录挂载到容器中,但结果是主机目录中填充了容器目录中的数据。 通常情况恰恰相反。 这就是您需要这些驱动程序选项的原因。
services:
somebox:
volumes:
- xx-vol:/usr/local/XXX
volumes:
xx-vol:
driver: local
driver_opts:
type: none
o: bind
device: /home/Projects/XX
创建容器时,空的命名卷会使用挂载位置的映像内容进行初始化。
- 婊子
所以这里的关键是创建一个命名卷,将其用作主机上所需位置的设备。
作为完整的工作演示。
我创建以下 Dockerfile 以在 /workspace 目录中添加文本文件:
FROM busybox
WORKDIR /workspace
RUN echo "Hello World" > hello.txt
然后一个 compose.yaml 来构建这个图像并使用这些驱动程序选项安装一个卷:
services:
databox:
build: ./
volumes:
- data:/workspace
volumes:
data:
driver: local
driver_opts:
type: none
o: bind
device: /home/blue/scrap/vol/data
现在我运行以下命令:
$ mkdir data
$ docker-compose up
[+] Running 1/0
⠿ Container vol-databox-1 Created 0.0s
Attaching to vol-databox-1
vol-databox-1 exited with code 0
$ cat /home/blue/scrap/vol/data/hello.txt
Hello World
如您所见,hello.txt 文件最终位于主机上。 它不是在容器启动后创建的,而是在容器启动时已经在容器的文件系统中,因为它是在构建期间添加的。
这意味着,可以使用容器中的数据填充主机目录,这样数据就不必在挂载卷后生成,这通常是这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.