当前位置: 首页 > 知识库问答 >
问题:

如何在Docker容器中装入主机目录

翟京
2023-03-14
kishore$ cat Dockerfile

FROM ubuntu:trusty
RUN apt-get update
RUN apt-get -y install git curl vim
CMD ["/bin/bash"]
WORKDIR /test_container
VOLUME ["/test_container"]
kishore$ tree
.
├── Dockerfile
└── main_folder
    ├── tfile1.txt
    ├── tfile2.txt
    ├── tfile3.txt
    └── tfile4.txt

kishore$ docker build --tag=k3_s3:latest .

Uploading context 7.168 kB
Uploading context
Step 0 : FROM ubuntu:trusty
 ---> 99ec81b80c55
Step 1 : RUN apt-get update
 ---> Using cache
 ---> 1c7282005040
Step 2 : RUN apt-get -y install git curl vim
 ---> Using cache
 ---> aed48634e300
Step 3 : CMD ["/bin/bash"]
 ---> Running in d081b576878d
 ---> 65db8df48595
Step 4 : WORKDIR /test_container
 ---> Running in 5b8d2ccd719d
 ---> 250369b30e1f
Step 5 : VOLUME ["/test_container"]
 ---> Running in 72ca332d9809
 ---> 163deb2b1bc5
Successfully built 163deb2b1bc5
Removing intermediate container b8bfcb071441
Removing intermediate container d081b576878d
Removing intermediate container 5b8d2ccd719d
Removing intermediate container 72ca332d9809
kishore$ docker run -i -t k3_s3:latest /bin/bash

root@0f17e2313a46:/test_container# ls -al
total 8
drwx------  2 root root 4096 Apr 29 05:15 .
drwxr-xr-x 66 root root 4096 Apr 29 05:15 ..
kishore$ docker -v
Docker version 0.9.1, build 867b2a9
    null

面临的问题和问题:

  1. 如何将main_folder链接到docker容器中的test_container文件夹?
  2. 我需要自动生成这个。在不真正使用run-d-v命令的情况下,如何做到这一点?
  3. 如果boot2docker崩溃会发生什么?Docker文件存储在哪里(Dockerfile除外)?

共有1个答案

文自怡
2023-03-14

有几种方法可以做到这一点。最简单的方法是使用dockerfileadd命令,如下所示:

ADD . /path/inside/docker/container

但是,在构建dockerfile之后在主机上对此目录所做的任何更改都不会在容器中显示。这是因为在构建容器时,docker会将目录压缩到.tar中,并将该上下文永久上载到容器中。

第二种方法是您尝试的方法,即装入卷。由于要尽可能地具有可移植性,您无法将主机目录映射到dockerfile中的docker容器目录,因为主机目录可能会根据您运行的计算机而更改。要将主机目录映射到docker容器目录,在使用docker Run时需要使用-v标志,例如:

# Run a container using the `alpine` image, mount the `/tmp`
# directory from your host into the `/container/directory`
# directory in your container, and run the `ls` command to
# show the contents of that directory.
docker run \
    -v /tmp:/container/directory \
    alpine \
    ls /container/directory
 类似资料:
  • 这是我当前的DockerFile: 我的项目是这样的:

  • 原题:如何使用DockerFile中的卷指令? 我要解决的实际问题是--如何在构建期间将主机卷装入Dockerfile中的docker容器中,即在期间具有功能。 对我来说,其背后的原因是在Docker中构建东西时,我不希望那些()缓存锁定在单个Docker中,而是共享/重用它们。这就是我问这个问题的主要原因。 最新更新: 在docker V18.09之前,正确答案应该是以以下开头的答案: 有一种方

  • 问题内容: 在Docker容器中挂载主机目录非常容易。 但是我需要另一种方式。 我使用Docker容器作为开发环境来开发WordPress插件。该Docker容器包含运行WordPress所需的一切(MySQL,Apache,PHP和WordPress)。我从Docker容器中的主机挂载了我的插件src文件夹,以便可以在开发期间测试我的插件。 对于调试,如果我在主机上运行的IDE具有对Docker

  • 假设我有一个应用程序具有这个简单的DockerFile: 然后我运行了一个容器: 所以它工作正常,并将一些日志存储在docker容器的中。 我也看到docker-mount目录从容器到主机,但它并没有解决我的问题我需要一种方法备份我的文件从Docker到主机。

  • 问题内容: 我想将目录从docker容器挂载到本地文件系统。该目录是网站根目录,我需要能够使用任何编辑器在本地计算机上对其进行编辑。 我知道我可以运行,但是这样做只能在容器内创建一个空目录。 如何在Linux主机上的Docker容器内挂载目录? 问题答案: 如果您的目标是提供现成的LAMP,则应在Dockerfile中使用VOLUMES声明。 问题是docker不会挂载文件,因为它们已经在创建卷的

  • 我用这个参数挂载了容器: -v /home/test/:/home/test 在主机的/home/test内部有一个指向/mnt/文件夹的符号链接。 但是,尽管可以看到链接指向何处,但在容器内部似乎断开了: 这甚至可以在docker中实现吗?我不确定是否有办法做到这一点。 我知道我可以直接挂载符号链接指向的位置,但我只是想知道这是否可能。