容器中的root用户和密码

本文翻译于 “Root User and Password Inside a Docker Container”

我们常使用 root 权限打开 docker 容器,显然这存在着一定的安全性问题。本文将讨论如何使用 non-root 用户创建 docker 镜像,来确保一些资源的安全性。

1
2
3
4
5
FROM ubuntu:16.04
RUN apt-get update
RUN useradd -m john
USER john
CMD /bin/bash
DOCKER

上面的例子创建了一个非 root 用户的镜像,正常启动后,进入容器即以 john 用户身份登录,此时使用包管理器安装软件包则会报出权限不足错误,需要切换至 root 用户。当你在烦恼切换时提示需要你输入 root 账户的密码时,有一个简单的方式可以直接以 root 方式登陆,那就是使用下面的命令。

1
docker exec -it -u 0 container_name bash
SHELL

当然你也可以使用下面的命令

1
docker exec -it -u root container_name bash
SHELL

如果说,你一定要在容器中为非 root 用户指定特别权限,你也可以安装 sudo 命令。下面的例子创建了一个非 root 用户 john,并授予其 sudo 权限

1
2
3
4
5
FROM ubuntu:16.04
RUN apt-get update && apt-get -y install sudo
RUN useradd -m john && echo "john:john" | chpasswd && adduser john sudo
USER john
CMD /bin/bash
DOCKER

用户的映射问题

通常使用 docker run -itd --user `id -u`:`id -g` xxxx 命令创建容器后,进入系统会报找不到用户的错误,这时可以先在外面查看得到uidgid 然后进入该容器的root模式,并修改容器内的用户的uidgid到正确的映射。

1
2
usermod -u 1000 ubuntu
groupmod -g 100 ubuntu
SHELL
Licensed under CC BY-NC-SA 4.0

请在评论前阅读我们的评论政策


内容是由智能博客生成器生产 powered by ChatGGPTT
使用 Hugo 构建
主题 StackedJimmy 设计,Jacob 修改