为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

如何在Docker容器中安装主机目录我正在尝试将主机目录挂载到Docker容器中,以便在主机上完成的任何更新都会反映到Docker容器中。我在哪里做错了什么。这是我做的:kishore$ cat DockerfileFROM ubuntu:trustyRUN apt-get updateRUN apt-get -y install git curl vimCMD ["/bin/bash"]WORKDIR /test_containerVOLUME ["/test_container"]kishore$ tree.├── Dockerfile└── main_folder    ├── tfile1.txt    ├── tfile2.txt    ├── tfile3.txt    └── tfile4.txt1 directory, 5 fileskishore$ pwd/Users/kishore/tdockkishore$ 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 72ca332d9809kishore$ docker run -d -v /Users/kishore/main_folder:/test_container k3_s3:latestc9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0eakishore$ docker run -i -t k3_s3:latest /bin/bashroot@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# exitexitkishore$ docker -vDocker version 0.9.1, build 867b2a9我不知道如何检查boot2docker版本问题,面临的问题:如何将main_folder链接到docker容器中的test_container文件夹?我需要自动完成。如果没有真正使用run -d -v命令,我该怎么做呢?如果boot2docker崩溃会怎么样?存储Docker文件在哪里(除了Dockerfile)?
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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

ADD . /path/inside/docker/container

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

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

docker run -v /host/directory:/container/directory -other -options image_name command_to_run


查看完整回答
反对 回复 2019-08-14
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这个问题的用户正在使用Docker version 0.9.1, build 867b2a9,我会给你一个docker版本> = 17.06的答案。

您想要的是,在容器目录中保持本地目录同步,是通过安装类型的卷来完成的bind。这将绑定源(您的系统)和目标(在docker容器)目录。它与在linux上安装目录几乎相同。

根据Docker文档,现在安装适当的命令mount而不是-v。这是它的文档:

  • --mount:由多个键值对组成,以逗号分隔。每个键/值对采用<key>=<value>元组的形式。该--mount语法比更详细的-v--volume,但按键的顺序并不显著,并且标志的价值更容易理解。

  • type安装件,其可以是bindvolume,或tmpfs(我们将使用bind

  • source安装的。对于绑定装入,这是Docker守护程序主机上的文件或目录的路径。可以指定为sourcesrc

  • destination文件或目录安装在容器中的路径作为其值。可以指定为destinationdsttarget

因此,要安装当前目录(源)与/test_container(目标),我们将使用:

    docker run -it --mount src="$(pwd)",target=/test_container,type=bind k3_s3

如果这些安装参数有空格,则必须在它们周围加上引号。当我知道他们不这样做时,我会`pwd`改用:

    docker run -it --mount src=`pwd`,target=/test_container,type=bind k3_s3

您还必须处理文件权限,请参阅此文章


查看完整回答
反对 回复 2019-08-14
?
MMTTMM

TA贡献1869条经验 获得超4个赞

2个连续的安装:我想这里的很多帖子可能都使用了两个boot2docker,你没有看到任何东西的原因是因为你从boot2docker安装的目录不是来自你的主机。

您基本上需要2个连续的安装:第一个是从主机到系统安装目录,第二个是将新目录从boot2docker安装到您的容器,如下所示:

1.在boot2docker上安装本地系统

sudo mount -t vboxsf hostfolder /boot2dockerfolder

2.在linux容器上挂载boot2docker文件

docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename

然后,当您ls在容器文件夹中时,您将看到主机文件夹的内容。


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 1367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信