通常,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


当前回答

如果你想连接到容器并安装一些东西 使用apt-get 首先,如上所述,我们的兄弟“Tomáš Záluský”

docker exec -u root -t -i container_id /bin/bash

然后试着

运行apt-get update或apt-get '任何你想要的东西'

这对我很有效 希望对大家有用

其他回答

对于任何已经运行的容器有此问题的人,并且他们不一定想要重建,下面的命令连接到具有根权限的运行容器:

docker exec -ti -u root container_name bash

你也可以使用它的ID连接,而不是它的名字,通过查找它:

docker ps -l

为了保存您的更改,以便下次启动容器(或docker-compose集群)时它们仍然存在,请注意,如果从头开始重建,这些更改将不会重复:

docker commit container_id image_name

回滚到以前的图像版本(警告:这将删除历史记录而不是追加到最后,所以要保持对当前图像的引用,首先使用可选步骤标记它):

docker history image_name
docker tag latest_image_id my_descriptive_tag_name  # optional
docker tag desired_history_image_id image_name

启动一个未运行的容器并以root身份连接:

docker run -ti -u root --entrypoint=/bin/bash image_id_or_name -s

从正在运行的容器中复制:

docker cp <containerId>:/file/path/within/container /host/path/target

导出一份镜像文件。

docker save container | gzip > /dir/file.tar.gz

你可以使用以下方法将其恢复到另一个Docker安装:

gzcat /dir/file.tar.gz | docker load

它的速度要快得多,但不压缩需要更多的空间,使用:

docker save container | dir/file.tar

And:

cat dir/file.tar | docker load

我使用的是Ubuntu映像,在使用docker桌面时曾遇到过这个问题。

解决方法如下:

apt-get更新 安装sudo

如何在CentOS上做到这一点还没有答案。 在Centos上,您可以在Dockerfile中添加以下内容

RUN echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \
    chmod 0440 /etc/sudoers.d/user

刚刚明白。正如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

如果你想连接到容器并安装一些东西 使用apt-get 首先,如上所述,我们的兄弟“Tomáš Záluský”

docker exec -u root -t -i container_id /bin/bash

然后试着

运行apt-get update或apt-get '任何你想要的东西'

这对我很有效 希望对大家有用