如何通过编辑器编辑容器docker中的文件

如何通过编辑器编辑容器docker中的文件,docker,containers,docker-compose,Docker,Containers,Docker Compose,我使用了docker compose并运行了我的容器。将数据卷装入docker compose.yml中,如下所示: version: '2' services: ### Workspace containter workspace: build: ./workspace volumes_from: - volume_src volume_src: build: ./volume/src volumes: - ./src:/var/www/h

我使用了
docker compose
并运行了我的
容器
。将数据卷装入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容器
工作区
作为权限

docker compose exec workspace bash

root@a4f923f71693:/var/www/html#

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

然后我转到主机上的sourcecode
src
文件夹。我用我的
sublime文本
进行编辑。但权限不能保存

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

如何按编辑器编辑文件数据卷(不允许)

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

从命令行代码段中,您仍然以用户身份登录
datnq
。 因此,在对文件执行任何操作之前,应先以
root
身份登录

假设您在
datnq@quocdat-电脑:~/web/src$

Do:

sudo-s subl a.php

注意到被触摸的文件
a.php
是如何归root所有的吗

从命令行代码段中,您仍然以用户身份登录
datnq
。 因此,在对文件执行任何操作之前,应先以
root
身份登录

假设您在
datnq@quocdat-电脑:~/web/src$

Do:


sudo-s subl a.php

您是否尝试通过容器内的root用户或主机上的sudo更改该文件的权限?@ldg:如果我更改权限,则更改一个文件即可。但我希望在容器上创建的所有文件始终在主机上编辑。因为我是通过root进行ssh的,所以我在容器上创建的所有文件都是经过root许可的。然后它们以
root
权限装载到我的主机。当然,如果我不使用
root
permisson,我可以编辑文件。检查主机中是否有名为
docker
的组,如果没有,则创建该组。将要登录的用户添加到该组。有关这方面的更多信息,请参阅安装部分的Docker文档:
datnq@quocdat-pc:~/web$groups
我的用户登录名属于group
docker
。您是否尝试通过容器内的root用户或主机上的sudo更改该文件的权限?@ldg:如果我更改我的权限一个文件是OK的。但我希望在容器上创建的所有文件始终在主机上编辑。因为我是通过root进行ssh的,所以我在容器上创建的所有文件都是经过root许可的。然后它们以
root
权限装载到我的主机。当然,如果我不使用
root
permisson,我可以编辑文件。检查主机中是否有名为
docker
的组,如果没有,则创建该组。将要登录的用户添加到该组。有关这方面的更多信息,请参阅安装部分的Docker文档:
datnq@quocdat-pc:~/web$groups
我的用户登录名属于group
docker
。谢谢@Samuel Toh:我知道了。我试过你的方法。很好用<代码>注意被触摸的文件a.php是如何归root所有的=>我在容器中创建了文件
a.php
(通过root进行SSH)。所以它同步到我的主机
src
是由root所有的<代码>datnq@quocdat-pc:~/web/src$`-rw-r--r--1 root root 0 Th08 5 09:35 a.php`我可以在容器中创建文件而不通过root权限进行同步吗?查看您对该文件的权限,似乎除了用户
root
自己之外,其他人都可以读取、写入和执行。它的世界权限仅建议
读取并执行
。可能尝试在容器内执行chmod
757a.php
,看看主机上的
subl a.php
是否有效@QuocDat让我知道它是否有效谢谢,但是如果我使用chmod
757
表示
其他人拥有完全权限。他们不安全,我感到震惊。每次我创建一个文件时。我必须为他们购买chmod
757
。这不是一个好方法:D。还有什么吗?@QuocDat yep这确实不是一个优雅的解决方案。老实说,我也不确定,所以我为你做了一些研究,这家伙似乎有一个“黑客”的方法,强迫容器以用户身份运行它的进程,与你登录的用户的
uid
相同。显然不是最好的解决方案,但值得一试,然后从那里调整。看:谢谢@Samuel Toh:我明白了。我试过你的方法。很好用<代码>注意被触摸的文件a.php是如何归root所有的
=>我在容器中创建了文件
a.php
(通过root进行SSH)。所以它同步到我的主机
src
是由root所有的<代码>datnq@quocdat-pc:~/web/src$
`-rw-r--r--1 root root 0 Th08 5 09:35 a.php`我可以在容器中创建文件而不通过root权限进行同步吗?查看您对该文件的权限,似乎除了用户
root
自己之外,其他人都可以读取、写入和执行。它的世界权限仅建议
读取并执行
。可能尝试在容器内执行chmod
757a.php
,看看主机上的
subl a.php
是否有效@QuocDat让我知道它是否有效谢谢,但是如果我使用chmod
757
表示
其他人拥有完全权限。他们不安全,我感到震惊。每次我创建一个文件时。我必须为他们购买chmod
757
。这不是一个好方法:D。还有什么吗?@QuocDat yep这确实不是一个优雅的解决方案。老实说,我也不确定,所以我为你做了一些研究,这家伙似乎有一个“黑客”的方法,强迫容器以用户身份运行它的进程,与你登录的用户的
uid
相同。显然不是最好的解决方案,但值得一试,然后从那里调整。见: