我想使用我在GCP上的现有compose yaml文件,将一些容器部署到使用GCP Container-Optimized OS映像创建的GCE VM。容器之一需要来自主机的文件。对于容器优化的OS实例,基于https://cloud.google.com/community/tutorials/docker-compose-on-container-optimized-os的教程,我无法运行docker-compose
,而必须使用docker/compse
容器。我的容器之一是cloud-sql-proxy,它需要一个密钥json文件。到目前为止,我还没有找到将文件从主机传递到容器的解决方案。
我的问题是: 是否可以将卷从主机传递到Dockercompose文件中定义的容器?我不知道如何将文件添加到打击命令中的-v arg之一:
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:/rootfs/$PWD" \
-w="/rootfs/$PWD" \
docker/compose:1.13.0 up
答案 0 :(得分:0)
如docs中所述,可以使用-v选项将docker卷安装在docker container run
命令上。因此您只需指定自己的-v file/path/on/host:/file/path/in/container
卷即可。
如果您在docker-compose
文件中进行操作,则与其几乎相似-您指定一个volumes
选项并定义音量:
version: "3.1"
services:
someName:
image: some/image
volumes:
- "file/path/on/host:/file/path/in/container"
答案 1 :(得分:0)
玩转之后,我猜想如果我使用docker / compose image而不是docker-compse
二进制文件,那么最重要的部分是为撰写文件本身设置一个卷:
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /home/Documents/labs:$(pwd) -w "$(pwd)" docker/compose:1.23.2 -f ./docker-compose run service sh
在撰写文件中,卷是从主机挂载到容器的。没有虚拟Docker主机:只有一个Docker主机是我自己的。 docker/compose
就像撰写文件中的任何服务一样。