useradd 不在 amazonlinux 基础映像中
useradd not in amazonlinux base image
似乎 useradd
不在 amazonlinux docker 基本映像中。
useradd
将在我的 Dockerfile 安装 openldap-devel 时工作,因此 RUN useradd my_user
将在我的图像具有以下内容时工作:
FROM amazonlinux
RUN yum -y install python3 \
gcc \
python3-pip \
python3-devel \
openldap-devel
当我的图像刚从
构建时
FROM amazonlinux
RUN yum -y install python3 \
gcc \
python3-pip \
python3-devel
命令 RUN useradd my_user
失败并显示错误消息 /bin/sh: useradd: command not found
如何在 amazonlinux 基础映像中安装 useradd
而无需安装所有 openldap-devel
我设法通过 运行 在 AmazonLinux EC2 机器上执行以下命令找出包 useradd
所属的包:
$ yum whatprovides /usr/sbin/useradd
2:shadow-utils-4.1.5.1-24.amzn2.x86_64 : Utilities for managing accounts and shadow password files
Repo : amzn2-core
Matched from:
Filename : /usr/sbin/useradd
因此将我的 Dockerfile 更改为以下内容使其工作:
FROM amazonlinux
RUN yum -y install python3 \
python3-pip \
shadow-utils
您可以使用 shadow-utils
包,正如 demeter 所指出的那样。
在我的例子中,安装 shadow-utils
花了太长时间来创建我的 docker 图像,因为它安装了很多依赖项。所以我会给你两个选择:
1 - 使用 docker USER 命令:
您可以在 Dockerfile 中执行此操作:
FROM amazoncorretto:11.0.14-al2
USER 1000
这将允许您使用 non-root 用户启动容器。从here可以看出,不需要用户存在。缺点是这个用户没有名字,也没有 $HOME。我认为这通常是可以的,但是如果容器中有任何软件需要 $HOME 文件夹,它可能会带来一些问题。
2 - 使用现有用户:
在容器中,如果您 运行 cat /etc/passwd
您将看到现有用户的列表。通常,您将拥有权限最少的 nobody
用户。所以在你的 Dockerfile 中你可以这样做:
FROM amazoncorretto:11.0.14-al2
USER nobody
你很好
似乎 useradd
不在 amazonlinux docker 基本映像中。
useradd
将在我的 Dockerfile 安装 openldap-devel 时工作,因此 RUN useradd my_user
将在我的图像具有以下内容时工作:
FROM amazonlinux
RUN yum -y install python3 \
gcc \
python3-pip \
python3-devel \
openldap-devel
当我的图像刚从
构建时FROM amazonlinux
RUN yum -y install python3 \
gcc \
python3-pip \
python3-devel
命令 RUN useradd my_user
失败并显示错误消息 /bin/sh: useradd: command not found
如何在 amazonlinux 基础映像中安装 useradd
而无需安装所有 openldap-devel
我设法通过 运行 在 AmazonLinux EC2 机器上执行以下命令找出包 useradd
所属的包:
$ yum whatprovides /usr/sbin/useradd
2:shadow-utils-4.1.5.1-24.amzn2.x86_64 : Utilities for managing accounts and shadow password files
Repo : amzn2-core
Matched from:
Filename : /usr/sbin/useradd
因此将我的 Dockerfile 更改为以下内容使其工作:
FROM amazonlinux
RUN yum -y install python3 \
python3-pip \
shadow-utils
您可以使用 shadow-utils
包,正如 demeter 所指出的那样。
在我的例子中,安装 shadow-utils
花了太长时间来创建我的 docker 图像,因为它安装了很多依赖项。所以我会给你两个选择:
1 - 使用 docker USER 命令:
您可以在 Dockerfile 中执行此操作:
FROM amazoncorretto:11.0.14-al2
USER 1000
这将允许您使用 non-root 用户启动容器。从here可以看出,不需要用户存在。缺点是这个用户没有名字,也没有 $HOME。我认为这通常是可以的,但是如果容器中有任何软件需要 $HOME 文件夹,它可能会带来一些问题。
2 - 使用现有用户:
在容器中,如果您 运行 cat /etc/passwd
您将看到现有用户的列表。通常,您将拥有权限最少的 nobody
用户。所以在你的 Dockerfile 中你可以这样做:
FROM amazoncorretto:11.0.14-al2
USER nobody
你很好