当我在Docker中启动一个新容器时,我想挂载一个卷,以便获取主机上任何文件的最新更新,并可以在我的容器中使用它们。但是,我发现当我构建图像时,Docker正在装载我的卷。我想要的是在创建新容器时安装卷。
因为我使用Docker来管理我的开发环境,这意味着每当我更新一小段代码时,我都必须重建我的开发环境Docker image ,这通常需要20-30左右分钟。显然,这不是我想要的Docker功能。
以下是我用于构建开发环境容器的内容:
# This docker file constructs an Ubuntu development environment and configures the compiler/libs needed
FROM ubuntu:latest
ADD . /gdms-rcon/liaison
WORKDIR /gdms-rcon/liaison
RUN rm -rf ./build
RUN apt-get update
RUN apt-get install -y -f gcc g++ qtbase5-dev cmake mysql-client
liaison:
build: ./liaison/
command: /bin/bash
volumes:
- liaison:/gdms-rcon/liaison
working_dir: /gdms-rcon/liaison
我还使用fig.yml
文件来简化构建。
要运行,我使用:fig build
要访问我的容器以编译我的源代码,我使用:docker run -it <container_id>
也许我对我的命令做错了什么?我没有使用fig up
,因为它不会给我一个交互式shell,所以我使用docker run -it <container_id>
代替。我选择使用fig
以便它会自动挂载我的卷,但它并没有像我希望的那样工作。
答案 0 :(得分:1)
如果您未使用fig
启动容器,则volumes
中的fig.yml
行不会执行任何有用的操作。如果您需要交互式shell,fig
并不适合您。
正常docker build
您的图片,然后使用-v
标记docker run
来装载卷:
docker run -it -v <hostpath>:<containerpath> <imageid>