如何配置docker-compose.yml以root身份启动容器

Car*_*res 14 docker docker-compose

我试图用docker-compose-yml连接两个容器,但是没有用.这是我的docker-compose.yml文件:

version: "3"
services:
    datapower:
        build: .
        ports:
            - "9090:9090"
        depends_on:
            - db
    db:
        image: "microsoft/mssql-server-linux:2017-latest"
        environment:
            SA_PASSWORD: "your_password"
            ACCEPT_EULA: "Y"
        ports:
        - "1433:1433"
Run Code Online (Sandbox Code Playgroud)

当我做:

码头工人组成

这是我的两个容器.然后我停止一个容器,然后我独立运行相同的容器,如:

docker-compose run -u root --name nameofcontainer'在docker-compose.yml中命名的容器的名称'

这样,容器的连接起作用.存在一种方法来配置我的docker-compose.yml来连接我的容器,如root而不停止容器并且可以独立运行?

我希望你理解我的问题,可以帮助我!

感谢大家!

yam*_*enk 27

更新:

存在user可以在撰写文件中设置的属性.这在docker-compose文件参考中有记录.

...
services:
    datapower:
        build: .
        user: root
        ports:
            - "9090:9090"
        depends_on:
            - db
...
Run Code Online (Sandbox Code Playgroud)

  • @AlexanderZeitler如果您想从命令`USER = root docker-compose up'并在撰写文件中传递它,可以破解它:`user:$ USER` (3认同)
  • 添加到 @Theo 响应 - 这确实使您能够运行 _commands_ 来生成用户,例如 `USER=$(id -u) docker-compose up` 和在撰写文件 `user: $USER` 中。当您想要以非 root 用户身份运行容器时(因为您应该_始终强烈考虑这样做_),并且需要以编程方式找出所述用户,这非常有用。 (2认同)

F1L*_*nux 18

在以下位置设置用户和组docker-compose.yml:

发现了另一种方法,不仅可以在 docker-compose.yml 文件中设置用户,还可以设置组,该方法未记录在 Docker Compose 文件参考 @yamenk 在接受的答案中提供的帮助中。

我需要提出一个明确设置用户和组的容器,发现user:参数docker-compose.yml可以填充为由冒号分隔的UID:GID映射。

下面是我的 docker-compose.yml 文件中的一个片段,其中该表单经过测试并发现可以正常工作:

services:
 zabbix-agent:
  image: zabbix/zabbix-agent2:ubuntu-6.0-latest
  container_name: DockerHost1-zabbix-agent2
  user: 0:0
<SNIP>
Run Code Online (Sandbox Code Playgroud)

参考:

https://github.com/zabbix/zabbix-docker/issues/710

希望这可以节省其他人寻找这个的浪费周期!