>운영 및 유지보수 >Docker >Docker 컨테이너에 사용자를 추가할 수 없습니다.

Docker 컨테이너에 사용자를 추가할 수 없습니다.

WBOY
WBOY원래의
2023-05-13 16:47:08699검색

최근 클라우드 컴퓨팅과 컨테이너화 기술의 급속한 발전으로 Docker는 가장 인기 있는 컨테이너 기술 중 하나가 되었습니다. 그러나 Docker가 널리 사용되고 있음에도 불구하고 Docker 컨테이너를 사용할 때 해결해야 할 몇 가지 일반적인 문제가 여전히 남아 있습니다. 문제 중 하나는 Docker 컨테이너 내에 사용자를 추가할 수 없다는 것입니다.

Docker 컨테이너에 사용자를 추가할 수 없는 이유는 무엇인가요?

먼저 Docker가 내부적으로 어떻게 작동하는지 이해해야 합니다. Docker는 Linux 커널 네임스페이스를 사용하여 프로세스 간 격리를 달성합니다. 이러한 네임스페이스에는 PID 네임스페이스, UTS 네임스페이스, 네트워크 네임스페이스 등이 포함됩니다. 그 중 사용자 네임스페이스는 사용자와 사용자 그룹 ID를 분리하는 데 사용됩니다. 기본적으로 Docker 컨테이너는 호스트 사용자 네임스페이스의 UID 및 GID를 사용합니다. 즉, 새 사용자가 생성되면 컨테이너의 네임스페이스에 해당 UID 및 GID가 없기 때문에 컨테이너에서 useradd와 같은 명령을 사용하여 사용자를 생성할 수 없습니다. useradd等命令创建用户,因为再创建一个新用户时,容器内的命名空间中没有对应的UID和GID。

如何在Docker容器内增加用户?

要在Docker容器内增加用户,我们需要进行一些额外的操作。具体来说,我们需要通过修改容器的配置文件来启用用户namespace,并为该用户命名空间指定一个独立的UID和GID,并将容器内的root用户映射到该命名空间的用户。

以Ubuntu为例,在容器内使用以下命令即可启用用户namespace:

sysctl kernel.unprivileged_userns_clone=1

该命令将允许非特权用户对用户命名空间进行克隆(clone)操作。接下来,我们需要为该用户命名空间指定一个独立的UID和GID,并将容器内的root用户映射到该命名空间的用户,使用以下命令:

echo "namespace    id  range" > /etc/subuid
echo "namespace    id  range" > /etc/subgid

其中,namespace为该用户命名空间的命名空间ID,id为该用户命名空间的初始UID和GID,range为该用户命名空间允许的用户数目。

接下来,我们需要使用adduser

Docker 컨테이너에 사용자를 추가하는 방법은 무엇입니까?

Docker 컨테이너 내에 사용자를 추가하려면 몇 가지 추가 작업을 수행해야 합니다. 특히, 컨테이너의 구성 파일을 수정하여 사용자 네임스페이스를 활성화하고, 사용자 네임스페이스에 대해 독립적인 UID 및 GID를 지정하고, 컨테이너의 루트 사용자를 네임스페이스 사용자에 매핑해야 합니다.

Ubuntu를 예로 들어 컨테이너에서 다음 명령을 사용하여 사용자 네임스페이스를 활성화합니다.

adduser --uid 1000 --gid 1000 myuser

이 명령을 사용하면 권한 없는 사용자가 사용자 네임스페이스를 복제할 수 있습니다. 다음으로, 사용자 네임스페이스에 대해 독립적인 UID 및 GID를 지정하고 컨테이너의 루트 사용자를 네임스페이스 사용자에 매핑해야 합니다. 🎜rrreee🎜 여기서 네임스페이스는 사용자 네임스페이스 공간 ID의 이름입니다. , id는 사용자 네임스페이스의 초기 UID와 GID이고, range는 사용자 네임스페이스에 허용되는 사용자 수입니다. 🎜🎜다음으로 adduser 명령을 사용하여 새 사용자를 생성하고 해당 사용자를 컨테이너에 추가해야 합니다. 🎜rrreee🎜 그중 --uid 및 --gid 매개변수는 사용자를 컨테이너에 추가합니다. 이전에 정의한 별도의 UID 및 GID 네임스페이스에 있습니다. 🎜🎜요약🎜🎜Docker 컨테이너에 사용자를 추가할 수 없는 문제는 사용자 네임스페이스를 활성화하고 네임스페이스에 대해 독립적인 UID 및 GID를 지정하면 해결할 수 있습니다. 이를 위해서는 약간의 추가 작업이 필요하지만 안전성과 격리성이 향상되면 그만한 가치가 있습니다. 컨테이너 기술이 계속해서 발전함에 따라 미래에는 더 간단하고 편리한 솔루션이 등장할 것이라고 믿습니다. 🎜

위 내용은 Docker 컨테이너에 사용자를 추가할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.