【问题标题】:How to edit files in container docker by editor如何通过编辑器编辑容器 docker 中的文件
【发布时间】:2016-08-05 01:34:35
【问题描述】:

我使用了docker-compose 并运行了我的container。将docker-compose.yml中的数据卷挂载为:

 version: '2'
 services:

 ### Workspace containter
 workspace: 
  build: ./workspace
  volumes_from:
    - volume_src

volume_src:
   build: ./volume/src
   volumes: 
     - ./src:/var/www/html

我 ssh 容器 workspace 作为权限 root

docker-compose exec workspace bash

root@a4f923f71693:/var/www/html#

我触摸一个文件:touch a.php

然后我转到我主机上的文件夹源代码src。我用我的sublime text 进行编辑。但权限不保存。

datnq@quocdat-pc:~/web/src$ 
drwxr-xr-x 10 root root   4096 Th08  4 15:15 a.php

如何通过编辑器编辑文件数据量(非权限)

【问题讨论】:

  • 您是否尝试通过容器内的 root 用户或通过主机中的 sudo 更改该文件的权限?
  • @ldg:如果我更改我的权限,一个文件就可以了。但我希望我在容器上创建的所有文件总是在我的主机上编辑。因为我通过 root SSH,所以我在容器上创建的所有文件都获得了 root 的许可。然后他们以root 权限安装到我的主机上。如果我不使用root 许可,我当然可以编辑文件。
  • 检查您的主机中是否有一个名为docker 的组,如果没有则创建它。将您要登录的用户添加到该组。有关这方面的更多信息,请参阅安装部分的 Docker 文档:docs.docker.com/engine/installation/linux/ubuntulinux/#/…
  • datnq@quocdat-pc:~/web$ groups datnq docker 我的用户登录属于docker组。

标签: docker containers docker-compose


【解决方案1】:

注意被触摸的文件a.php 是如何被root 拥有的?

在命令行 sn-p 中,您仍然以用户 datnq 的身份登录。 因此,在您对文件执行任何操作之前,您应该先以root 身份登录。

假设你在datnq@quocdat-pc:~/web/src$

做:
sudo -s subl a.php

【讨论】:

  • 谢谢@Samuel Toh:我明白了。我试过你的方法。它工作正常! Notice how the touched file a.php is owned by root? => 我在容器中创建了文件a.php(root SSH)。所以它同步到我的主机src 归根用户所有。 datnq@quocdat-pc:~/web/src$ `-rw-r--r-- 1 root root 0 Th08 5 09:35 a.php`
  • 我可以在容器内创建文件并且不通过root权限同步吗?
  • 查看您对该文件的权限,似乎除了用户root 自己之外可以进行读取、写入和执行。世界许可仅建议read and execute。可能尝试在容器内执行 chmod 757 a.php 并查看主机上的 subl a.php 是否有效。 @QuocDat 让我知道它是否有效
  • 谢谢,但如果我 chmod 757 表示 others 拥有完全权限。我担心他们不安全。每次我创建一个文件。我必须为他们 chmod 757。这不是好方法:D。还有什么?
  • @QuocDat 是的,这确实不是一个优雅的解决方案。老实说,我也不确定,所以我为你做了一些研究,这个家伙似乎有一种“hacky”的方式,它强制容器以与你登录的uid 相同的用户身份运行它的进程在用户中。显然不是最好的解决方案,但值得一试,然后从那里调整一些东西。见:denibertovic.com/posts/handling-permissions-with-docker-volumes
猜你喜欢
  • 2020-05-01
  • 2018-05-09
  • 2015-08-31
  • 2014-08-24
  • 1970-01-01
  • 2018-10-29
  • 2018-01-14
  • 1970-01-01
  • 2016-10-18
相关资源
最近更新 更多