[英]How to properly edit host directory from a docker container
在这里,我不是在问如何将目录从主机安装到Docker容器,而是要如何编辑从容器安装的目录。
我将提供有关用例的更多详细信息
现在,我正在使用Gitlab分支,并使用GDK (Gitlab开发套件),并在安装过程中运行以下命令:
gdk install gitlab_repo=https://gitlab.com/MY-FORK/gitlab.git
该命令将在项目内部创建一个名为gitlab的目录
为了进行该项目,我将使用主机上的文本编辑器,因此我需要同步两个目录
这是我的尝试:
docker run -it -p 3000:3000 -v /gitlab:${project-location}/gitlab ${image-name}
这种方法的问题是当我运行安装命令时:
gdk install gitlab_repo=https://gitlab.com/MY-FORK/gitlab.git
它失败,因为它试图更改已装入目录中的文件,并且不允许这样做(拒绝权限)
提示:所有安装步骤均在Dockerfile中进行了描述,因此一切都在容器内运行!
那么,有没有解决方法或另一种方法?
当主机上文件的权限和所有权(通常为UID)与容器本身内部使用的权限和所有权不匹配时,就会发生主机卷的权限问题(将装入的目录绑定到容器中)。 您需要调整容器内使用的用户,更改主机上文件的权限,或者同时调整两者。
另一个可能的问题是使用适用于Windows的Docker或适用于Mac的Docker,以及使用未与嵌入式VM共享的目录。 在这些情况下,卷装入将导致一个空文件夹。 默认情况下,这两个产品中的/ Users与VM共享。
请注意,此问题相当典型,也是我尝试尽可能使用docker的“本地”驱动程序使用命名卷的原因。 命名卷将初始化为映像的内容,包括文件权限,并且您可以通过使用单独的管理容器来管理它们,该管理容器会为需要进行的任何更改安装相同的卷(例如,运行tar -xzf
的简单busybox容器更新内容)。
编辑:这是从容器内部编辑文件的示例
$ ls -al data
total 16
drwxr-xr-x 4 bmitch bmitch 4096 Jun 8 2016 .
drwxr-xr-x 12 bmitch bmitch 4096 Jan 22 20:13 ..
-rw-r--r-- 1 bmitch bmitch 0 Jun 8 2016 1
-rw-r--r-- 1 bmitch bmitch 0 Jun 8 2016 2
drwxr-xr-x 2 bmitch bmitch 4096 Jun 8 2016 a
drwxr-xr-x 2 bmitch bmitch 4096 Jun 8 2016 b
$ id
uid=1000(bmitch) gid=1000(bmitch) groups=1000(bmitch),24(cdrom),27(sudo),120(bluetooth),127(vboxusers),999(docker)
$ docker run -v `pwd`/data:/data -u 1000 -it --rm busybox
/ $ ls -al /data
total 16
drwxr-xr-x 4 1000 1000 4096 Jun 8 2016 .
drwxr-xr-x 19 root root 4096 Jan 23 10:24 ..
-rw-r--r-- 1 1000 1000 0 Jun 8 2016 1
-rw-r--r-- 1 1000 1000 0 Jun 8 2016 2
drwxr-xr-x 2 1000 1000 4096 Jun 8 2016 a
drwxr-xr-x 2 1000 1000 4096 Jun 8 2016 b
/ $ echo 'hello from inside the container' >/data/inside-container.txt
/ $ ls -al /data
total 20
drwxr-xr-x 4 1000 1000 4096 Jan 23 10:25 .
drwxr-xr-x 19 root root 4096 Jan 23 10:24 ..
-rw-r--r-- 1 1000 1000 0 Jun 8 2016 1
-rw-r--r-- 1 1000 1000 0 Jun 8 2016 2
drwxr-xr-x 2 1000 1000 4096 Jun 8 2016 a
drwxr-xr-x 2 1000 1000 4096 Jun 8 2016 b
-rw-r--r-- 1 1000 root 32 Jan 23 10:25 inside-container.txt
/ $ cat /data/inside-container.txt
hello from inside the container
/ $ exit
$ ls -al data
total 20
drwxr-xr-x 4 bmitch bmitch 4096 Jan 23 05:25 .
drwxr-xr-x 12 bmitch bmitch 4096 Jan 22 20:13 ..
-rw-r--r-- 1 bmitch bmitch 0 Jun 8 2016 1
-rw-r--r-- 1 bmitch bmitch 0 Jun 8 2016 2
drwxr-xr-x 2 bmitch bmitch 4096 Jun 8 2016 a
drwxr-xr-x 2 bmitch bmitch 4096 Jun 8 2016 b
-rw-r--r-- 1 bmitch root 32 Jan 23 05:25 inside-container.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.