Docker - 卷未在容器中安装最新文件

时间:2015-03-01 00:34:23

标签: linux unix ubuntu docker fig

问题

当我在Docker中启动一个新容器时,我想挂载一个卷,以便获取主机上任何文件的最新更新,并可以在我的容器中使用它们。但是,我发现当我构建图像时,Docker正在装载我的卷。我想要的是在创建新容器时安装卷。

因为我使用Docker来管理我的开发环境,这意味着每当我更新一小段代码时,我都必须重建我的开发环境Docker image ,这通常需要20-30左右分钟。显然,这不是我想要的Docker功能。

以下是我用于构建开发环境容器的内容:


Dockerfile

# 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

fig.yml

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以便它会自动挂载我的卷,但它并没有像我希望的那样工作。


这是一张更清楚地展示我的问题的图片

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您未使用fig启动容器,则volumes中的fig.yml行不会执行任何有用的操作。如果您需要交互式shell,fig并不适合您。

正常docker build您的图片,然后使用-v标记docker run来装载卷:

docker run -it -v <hostpath>:<containerpath> <imageid>