다른 사용자로 명령 실행
이 단계에서는 실행 중인 컨테이너 내부에서 특정 사용자로 명령을 실행하는 방법을 배우게 됩니다. 기본적으로 docker exec는 컨테이너 내부에서 root 사용자로 명령을 실행하지만, -u 또는 --user 플래그를 사용하여 다른 사용자를 지정할 수 있습니다. 이는 보안과 최소 권한의 원칙을 준수하는 데 중요합니다.
my-nginx 컨테이너를 계속 사용해 보겠습니다. 먼저, ls / 명령이 기본적으로 어떤 사용자로 실행되는지 확인해 보겠습니다.
docker exec my-nginx whoami
출력은 root일 가능성이 높습니다. 이는 docker exec의 기본 사용자이기 때문입니다.
이제 다른 사용자로 명령을 실행해 보겠습니다. Nginx 이미지는 일반적으로 Nginx 프로세스를 root 가 아닌 사용자, 종종 nginx라는 사용자로 실행합니다. nginx 사용자로 whoami 명령을 실행해 보겠습니다.
docker exec -u nginx my-nginx whoami
출력으로 nginx가 표시되어 명령이 nginx 사용자로 실행되었음을 확인합니다.
사용자 이름 대신 사용자 ID(UID) 를 지정할 수도 있습니다. 컨테이너 내부에서 nginx 사용자의 UID 를 찾기 위해 /etc/passwd 파일을 살펴볼 수 있습니다.
docker exec my-nginx cat /etc/passwd | grep nginx
출력은 UID 및 GID(Group ID) 를 포함하여 nginx 사용자에 대한 항목을 표시합니다. 예를 들어, nginx:x:101:101:nginx user,,,:/nonexistent:/bin/false와 같은 형태일 수 있습니다. 이 예에서 UID 는 101입니다.
이제 UID 를 사용하여 whoami 명령을 실행해 보겠습니다. 이전 단계에서 찾은 실제 UID 가 다른 경우 101을 해당 UID 로 바꾸십시오.
docker exec -u 101 my-nginx whoami
출력은 다시 nginx여야 하며, docker exec에 대한 사용자를 지정하기 위해 사용자 이름 또는 UID 를 사용할 수 있음을 보여줍니다.
root 가 아닌 사용자로 명령을 실행하는 것은 특히 민감한 파일과 상호 작용하거나 root 권한이 필요하지 않은 작업을 수행할 때 좋은 보안 관행입니다.