4

问题

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

因为我使用 Docker 来管理我的开发环境,这意味着每当我更新一小段代码时,我都必须重建我的开发环境 Docker镜像,这通常需要大约 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

无花果.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,因为它不会给我一个交互式外壳,所以我docker run -it <container_id>改用它。我选择使用fig它来自动挂载我的卷,但它并没有像我希望的那样工作。


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

在此处输入图像描述

4

1 回答 1

1

如果您不使用fig启动容器,则volumes您的行fig.yml没有做任何有用的事情。如果你需要一个交互式的 shell,fig它并不是真正适合你的工具。

就像docker build正常的图像一样,然后使用-v标志docker run来安装卷:

docker run -it -v <hostpath>:<containerpath> <imageid>
于 2015-03-01T02:41:17.943 回答