主机目录如何挂载在docker容器中? [英] How to mount host directory in docker container?
问题描述
我正在尝试将主机目录安装到docker容器中,以便在主机上完成的任何更新都反映到docker容器中。我在谷歌搜索和阅读Docker音量链接后无法成功。
I am trying to mount a host directory into the docker container so that any updates done on the host is reflected into the docker containers. I couldn't succeed after googling and reading the docker volume links.
有人可以指出我做错了什么。这是我做的
Can somebody point me where I am doing wrong. Here is what I did
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
1个目录,5个文件
kishore $ pwd
/ Users / kishore / tdock
1 directory, 5 files kishore$ pwd /Users/kishore/tdock
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 -d -v / Users / kishore / main_folder:/ test_container k3_s3:最新
c9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0ea
kishore$ docker run -d -v /Users/kishore/main_folder:/test_container k3_s3:latest
c9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0ea
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 ..
root @ 0f17e2313a46:/ test_container#exit
退出
root@0f17e2313a46:/test_container# exit exit
kishore$ docker -v
Docker version 0.9.1, build 867b2a9
- 我不知道如何检查boot2docker
面临的问题:
- 如何将main_folder链接到docker容器中的test_container文件夹?
- 我需要自动进行这个操作,如何在没有真正使用运行-d -v命令。
- 如果boot2docker崩溃会发生什么? docker文件存储在哪里(除Dockerfile之外)?
推荐答案
你可以这样做的方法最简单的方法是使用dockerfile ADD
命令,如下所示:
There are a couple ways you can do this. The simplest way to do so is to use the dockerfile ADD
command like so:
ADD . /path/inside/docker/container
然而,建立后主机对此目录的任何更改docker文件不会显示在容器中。这是因为在构建容器的时候,docker将目录压缩成一个 .tar
并将该上下文上传到容器中。
However, any changes made to this directory on the host after building the dockerfile will not show up in the container. This is because when building a container, docker compresses the directory into a .tar
and uploads that context into the container permanently.
第二种方式是尝试这种方法,即安装卷。由于尝试尽可能便携,因此主机目录可能根据您正在运行的计算机而有所变化,因此无法将主机目录映射到docker文件中的docker容器目录。要将主机目录映射到docker容器目录,您需要在使用docker运行时使用 -v
标志:
The second way to do this is the way you attempted, which is to mount a volume. Due to trying to be as portable as possible you cannot map a host directory to a docker container directory within a dockerfile, because the host directory can change depending on which machine you are running on. To map a host directory to a docker container directory you need to use the -v
flag when using docker run like so:
docker run -v /host/directory:/container/directory -other -options image_name command_to_run
这篇关于主机目录如何挂载在docker容器中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!