Docker - 卷未在容器中装载最新文件
Docker - Volume not mounting latest files in container
问题
当我在 Docker 中启动一个新容器时,我想挂载一个卷,以便获得主机上所有文件的最新更新,并可以在我的容器中使用它们。但是,我发现 Docker 在我构建 image 时安装了我的卷。我想要的是在创建新容器时安装卷。
因为我正在使用Docker来管理我的开发环境,这意味着每当我更新一小段代码时,我都必须重建我的开发环境Docker image ,通常需要 20-30 分钟左右。显然,这不是我想要 Docker.
的功能
这是我用来构建我的开发环境容器的东西:
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
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
以便它会自动挂载我的卷,但它并没有像我希望的那样工作。
这里有一张图片可以更清楚地说明我的问题
如果您没有使用 fig
启动容器,则 fig.yml
中的 volumes
行没有任何用处。如果您需要交互式 shell,fig
并不是真正适合您的工具。
只是 docker build
你的图像像正常一样,然后使用 -v
标志来 docker run
挂载卷:
docker run -it -v <hostpath>:<containerpath> <imageid>
问题
当我在 Docker 中启动一个新容器时,我想挂载一个卷,以便获得主机上所有文件的最新更新,并可以在我的容器中使用它们。但是,我发现 Docker 在我构建 image 时安装了我的卷。我想要的是在创建新容器时安装卷。
因为我正在使用Docker来管理我的开发环境,这意味着每当我更新一小段代码时,我都必须重建我的开发环境Docker image ,通常需要 20-30 分钟左右。显然,这不是我想要 Docker.
的功能这是我用来构建我的开发环境容器的东西:
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
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
以便它会自动挂载我的卷,但它并没有像我希望的那样工作。
这里有一张图片可以更清楚地说明我的问题
如果您没有使用 fig
启动容器,则 fig.yml
中的 volumes
行没有任何用处。如果您需要交互式 shell,fig
并不是真正适合您的工具。
只是 docker build
你的图像像正常一样,然后使用 -v
标志来 docker run
挂载卷:
docker run -it -v <hostpath>:<containerpath> <imageid>