如何在码头集装箱内使用sudo?
通常,docker容器是使用root用户运行的。 我想使用不同的用户,使用docker的USER指令是没有问题的。 但是这个用户应该能够在容器中使用sudo 。 该命令丢失。
这里有一个简单的Dockerfile用于这个目的:
FROM ubuntu:12.04
RUN useradd docker && echo "docker:docker" | chpasswd
RUN mkdir -p /home/docker && chown -R docker:docker /home/docker
USER docker
CMD /bin/bash
运行这个容器,我用用户'docker'登录。 当我尝试使用sudo时,找不到该命令。 所以我试图在我的Dockerfile中使用安装sudo软件包
RUN apt-get install sudo
这导致无法找到软件包sudo
刚刚得到它。 正如regan指出的那样,我必须将用户添加到sudoers组中。 但主要原因是我忘记更新存储库缓存,所以apt-get找不到sudo包。 现在正在工作。 以下是完成的代码:
FROM ubuntu:12.04
RUN apt-get update &&
apt-get -y install sudo
RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
USER docker
CMD /bin/bash
其他答案不适合我。 我一直在搜索,发现了一篇博客文章,讲述了一个团队如何在码头集装箱内运行非root用户。
这是TL; DR版本:
RUN apt-get update
RUN apt-get install sudo
RUN adduser --disabled-password --gecos '' docker
RUN adduser docker sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER docker
# this is where I was running into problems with the other approaches
RUN sudo apt-get update
我为此使用了FROM node:9.3
,但我怀疑其他类似的容器基地也会起作用。
当容器中既没有sudo也没有apt-get时,您也可以使用命令以root用户身份跳转到正在运行的容器
docker exec -u root -t -i container_id /bin/bash
链接地址: http://www.djcxy.com/p/18231.html
上一篇: How to use sudo inside a docker container?
下一篇: How do I assign a port mapping to an existing Docker container?