当主机上缺少容器UID时,为什么我的Docker容器不起作用?

时间:2017-02-01 21:37:41

标签: docker docker-compose

我创建了一个用于运行wildfly服务器的docker镜像。在泊坞窗图片中,我定义了一个名为“imixs'”的单独用户。此用户正在容器内运行服务(wildfly服务器)。

正如我在几个例子中看到的,我用UID 1000创建了我的服务用户。

RUN groupadd -r imixs -g 1000 && useradd -u 1000 -r -g imixs -m -d /home/imixs -s /sbin/nologin -c "imixs user" imixs && \
    chmod 755 /opt 

现在我有这种情况,在主机上,缺少此UID,容器无法正确执行,因为服务(wildfly)声称缺少写入权限。

  1. 在这种情况下,是否建议使用-u选项启动容器,以使用与主机系统不同的用户运行容器?

    docker run ... -u myuser ....

  2. 如何告诉docker-compose使用与主机系统不同的用户运行容器?

  3. 一般建议使用其他用户创建映像吗?

  4. 我的dokerfile可以在这里看到:https://hub.docker.com/r/imixs/wildfly/~/dockerfile/

1 个答案:

答案 0 :(得分:0)

我想我必须撤回自己的问题。从docker版本1.6升级到当前版本1.13.0并将docker-compose表单1.5升级到1.10.0后,我解决了这个问题。 也许我的旧安装一般有问题,重新安装修复了这个问题。 在任何情况下,如果容器运行的服务与非特权用户(未由主机系统定义),我可以确认没有读/写权限问题。

回答我自己的问题:

  1. 是的,建议在除root之外的非特权用户的容器中运行服务(uid 0)
  2. 我仍然不知道docker-compose是否可以更改用于运行特定容器的用户
  3. 不建议不要创建以root用户身份运行的图像