gpt4 book ai didi

bash - 如何在 Docker 容器中挂载主机目录

转载 作者:bug小助手 更新时间:2023-10-28 01:28:33 26 4
gpt4 key购买 nike

我正在尝试将主机目录挂载到 Docker 容器中,以便在主机上完成的任何更新都会反射(reflect)到 Docker 容器中。

我哪里做错了。这是我所做的:

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<p></p>

1 directory, 5 files
kishore$ pwd
/Users/kishore/tdock

kishore$ docker build --tag=k3_s3:latest .<p></p>

<pre><code>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
</code></pre>

kishore$ docker run -d -v /Users/kishore/main_folder:/test_container k3_s3:latest
<code>c9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0ea</code>

kishore$ docker run -i -t k3_s3:latest /bin/bash<p></p>

<pre><code>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 ..
</code></pre>

root@0f17e2313a46:/test_container# exit
exit

kishore$ docker -v
Docker version 0.9.1, build 867b2a9

  • 我不知道如何查看 boot2docker 版本

问题,面临的问题:

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

最佳答案

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

ADD . /path/inside/docker/container

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

第二种方法是您尝试的方式,即挂载卷。由于试图尽可能便携,您无法将主机目录映射到 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

关于bash - 如何在 Docker 容器中挂载主机目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com