Docker 패키지 및 Docker Private Registry 설치
본 문서는 Ubuntu 환경에서 Docker 패키지를 설치 후, Docker Private Registry를 만들어 운용하는 방법을 설명한다.
🗺️ 개요
본 문서는 우분투 리눅스 환경에서 docker 패키지를 설치 한 후, Docker Registry 이미지를 이용하여 Docker Private Registry 설정하여 운용하는 환경 구성에 대해서 설명합니다.
설정 시 사용한 환경은 아래와 같습니다.
- 우분투: 20.04
- Docker: 25.0.1
- Docker-Compose: 1.25.0
🐳 Docker 패키지 설치
우분투 리눅스 콘솔에서 아래 명령을 입력하여 Docker 패키지 설치를 진행합니다. 각종 패키지 설치 시 sudo 권한이 필요합니다. 설치 완료 후 개인 사용자에게 docker 사용 권한을 부여하여 개인 사용자가 docker 이용 시 sudo 권한 없이 이용할 수 있도록 설정합니다.
# 도커 사용 모듈 설치
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 도커 설치 준비
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
# 도커 설치
sudo apt install docker-ce docker-ce-cli docker-compose containerd.io
# 도커 설치 확인
sudo systemctl status docker
sudo docker run hello-world
# 유저가 도커 사용할 수 있도록 그룹에 추가
sudo usermod -aG docker $USER
sudo chmod 666 /var/run/docker.sock
# Docker Daemon 연결 설정
sudo vi /etc/docker/daemon.json
# daemon.json 파일에 아래 내용 기입
# 192.168.X.X에 자신에게 맞는 IP 정보를 기입합니다.
# 예) ["192.168.1.1:5000"]
{
"insecure-registries": ["192.168.X.X:5000"]
}
# Docker 재시작
sudo systemctl restart docker
📝 Docker Private Registry 설정
Docker Registry는 docker-compose를 사용하여 설치합니다. docker registry와 web-registry를 설치하여 사용 편의성을 개선합니다. docker-compose.yaml에 docker registry와 web-registry 설치에 필요한 설정을 작성합니다.
volume 경로를 따로 설정하지 않으면 /var/lib/docker/volumes 에 볼륨 파일이 생성됩니다. 하지만, 저는 기본 경로가 아닌 제가 원하는 경로로 볼륨 파일의 경로를 설정하여 사용합니다.
registry의 파일 볼륨 경로와 registry의 환경 설정 볼륨 경로를 설정하면, 이미지 재기동 시 이전 사용과 동일한 상태로 Docker registry를 구동할 수 있습니다. 물론 안전한 사용을 위해 해당 경로를 주기적으로 백업해두면 좋습니다!
- [registry의 파일 볼륨 경로]는 docker image 등록 시 관련 파일이 저장되는 경로입니다.
- [registry의 환경 설정 볼륨 경로]는 docker registry 환경 설정 파일이 저장되는 볼륨 경로입니다. 딱히 설정을 수정할 일은 없으나 혹시 몰라 설정하는 항목입니다.
- [web-registry의 환경 설정 볼륨 경로]는 docker web-registry 환경 설정 파일이 저장되는 볼륨 경로입니다.
version: '3'
services:
docker-registry:
image: registry:latest
container_name: registry
ports:
- 48800:5000
volumes:
- registry_volume:/var/lib/registry/docker
- registry_conf:/etc/docker/
- /var/run/docker.sock:/var/run/docker.sock
web-registry:
image: hyper/docker-registry-web
container_name: web-registry
ports:
- 48880:8080
volumes:
- web_conf:/conf
volumes:
registry_volume:
driver: local
driver_opts:
type: none
o: bind
device: [registry의 파일 볼륨 경로]
registry_conf:
driver: local
driver_opts:
type: none
o: bind
device: [registry의 환경 설정 볼륨 경로]
web_conf:
driver: local
driver_opts:
type: none
o: bind
device: [web-registry의 환경 설정 볼륨 경로]
version: '3'
services:
docker-registry:
image: registry:latest
container_name: registry
ports:
- 48800:5000
volumes:
- registry_volume:/var/lib/registry
- /var/run/docker.sock:/var/run/docker.sock
web-registry:
image: hyper/docker-registry-web
container_name: web-registry
ports:
- 48880:8080
volumes:
- registry_conf_volume:/conf
위의 파일을 작성 후 아래 명령으로 이미지를 실행합니다.
# 아래 명령은 docker-compose.yaml 파일이 존재하는 디렉토리 내에서 수행해야 합니다.
docker compose up -d
웹브라우저를 열어 우분투 리눅스 PC의 IP주소와 포트 48800/v2/_catalog, 48880에 접속해봅니다. 예) http://192.168.1.1:48800/v2/_catalog, http://192.168.1.1:48800/
48800v2/_catalog 접속 시 "repositories"란 문자열이 출력되면 정상입니다. 48880 접속 시 화면 좌측 상단에 Web Registry란 문구가 있으면 정상입니다.
Web Registry 설정이 필요합니다.
# web-registry sh 진입
docker exec -it web-registry bash
# 환경 설정 파일 수정
vi /conf/config.yml
# url, name 항목을 자신에 맞게 변경
url: 'http://192.168.1.1:48800/v2'
name: '192.168.1.1:48800'
# web-registry sh 종료
exit
# docker 재기동
# 아래 명령은 docker-compose.yaml 파일이 존재하는 디렉토리 내에서 수행해야 합니다
docker compose down
docker compose up -d
재기동 후 웹브라우저로 다시 Web Registry 접속 시 에러 문구가 나타나면 안됩니다!
docker-registry 설정이 끝났으면, 임시로 이미지를 만들어 등록 확인을 수행합니다.
# 기본 hello-world 이미지를 이용해 private registry용 tag 생성
docker tag hello-world 192.168.1.1:48800/test/hello
# private registry에 이미지 push
docker push 192.168.1.1:48800/test/hello
Using default tag: latest
The push refers to repository [192.168.1.4:48800/test/hello]
*******: Pushed
latest: digest: sha256:*********** size: 524
위와 같이 push가 정상적으로 완료되면 docker-registry는 정상적으로 설정되었습니다. 이미지 push 후 web-registry를 웹 브라우저로 방문해보면 방금 push 한 이미지를 확인할 수 있습니다.