通常,使用用户 root 运行docker容器 . 我'd like to use a different user, which is no problem using 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
5 回答
刚刚得到它 . Regan指出,我不得不将用户添加到sudoers组 . 但主要原因是我忘了更新存储库缓存,所以apt-get找不到sudo包 . 它现在正在运作 . 这是完成的代码:
其他答案对我不起作用 . 我一直在搜索并找到一个blog post,其中包含了一个团队如何在docker容器中运行非root用户 .
这是TL; DR版本:
我正在使用
FROM node:9.3
,但我怀疑其他类似的容器基地也能正常工作 .当容器中既没有sudo也没有apt-get时,您也可以使用命令以root用户身份跳转到正在运行的容器中
如果你想连接到容器并安装一些东西
使用apt-get
首先如上所述从我们的兄弟回答"Tomáš Záluský"
然后尝试
它与我合作希望它对所有人都有用
如果您有一个以root身份运行的容器来运行需要访问
sudo
命令的脚本(您无法更改),则可以在$PATH
中创建一个新的sudo
脚本来调用传递的命令 .例如在你的Dockerfile中: