본문 바로가기
DevOps

Docker : Install() { Docker 설치, Rootless Mode 설정 }

by yaans 2024. 4. 9.

 


Docker 설치 과정

공식 문서 : 설치

https://docs.docker.com/engine/install/ubuntu/  

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

 

1. 사전 유틸 패키지 설치  
2. docker 공식 GPG 추가  
3. docker repository를 패키지 관리자에 추가  
4. docker 설치  

docker-ce  # docker daemon
docker-ce-cli # docker client command      
containerd.io # docker runtime engine

 

 

Ubuntu 22.04 LTS 사용 중

명령어 히스토리 ( 공식 문서 참고 )

 

 

Docker 설치 완료 

sudo docker run hello-world

 



Docker 관리자 권한 부여 ?  No !
Rootless Mode ?  Yes ! 

바로 Docker를 사용하려고 하면 permission denied가 발생

 

기존에는 유저를 생성하고 유저에게 root 관리자 권한을 주었으나,

지금은 rootless mode가 출시되었다

 

공식 문서 : Run the Docker daemon as a non-root user (Rootless mode)

https://docker-docs.uclv.cu/engine/security/rootless/

 

Run the Docker daemon as a non-root user (Rootless mode)

Run the Docker daemon as a non-root user (Rootless mode)

docs.docker.com

 

Docker Engine 19.03에 소개된 rootless mode는

daemon, container runtime의 잠재적 취약점을 완화하기 위해 non-root 로 운영할 것을 권장하고 있다

하지만 아직 실험 단계의 기능이며 하단의 제한 조건이 있으니 참고하길

 

 

Rootless 모드는 user namespace 내에서 root 권한 없이 Docker Daemon, container를 실행

Rootless 모드는 SETUID 비트 또는 파일 기능이 있는 바이너리를 사용하지 않는다.

( 예외 : user namespace에서 여러 UID/GID를 사용하는데 필요한 newuidmap, newgidmap )

 

 

Rootless Mode 설정

사전 준비 

 

1. newuidmap, newgidmap 가 설치되어 있어야 한다. 대부분의 uidmap의 패키지에서 제공된다

 

2. Ubuntu의 경우 추가 사전 준비가 필요하지 않다. overlay2 저장소 드라이버가 기본적으로 활성화되어 있다.

 

 

설치

스크립트 확인 : https://get.docker.com/rootless

curl -fsSL https://get.docker.com/rootless | sh

 

실행 후,

 

친절하다. 부족한 설정을 위한 명령어를 가이드해준다

 

 

추가 실행 명령어 (내 경우)

sudo sh -x
apt-get install -y uidmap

 

exit

 

설치 명령어 재 실행 (잘되는 중...)

 

 

추가적인 설정&실행 정보

# 공식 문서의 사례와 다르니 잘 확인할 것 
# 나의 경우는 아래 두 가지 추가 설정 
export PATH=/home/ubuntu/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

 

 

결과

관리자 권한 없이 docker 명령어를 실행할 수 있게 되었다

 

 


 

댓글