서버

1. 작업 디렉토리 생성

mkdir -p ~/docker-registry && cd ~/docker-registry

2. SSL 인증서 생성

인증서용 디렉토리 생성

mkdir certs && cd certs

서버 개인 키 및 셀프 사인 인증서 생성 (IP 주소 사용)

여기서 IP 주소는 예시로 192.168.3.14을 사용합니다.

openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes \\
					  -keyout server.key -out server.crt \\
					  -subj "/C=KR/ST=Seoul/L=Seoul/O=acs7th/OU=IT/CN=192.168.3.14" \\
					  -addext "subjectAltName = IP:192.168.3.14"

3. Docker Compose 파일 작성

cd ..

docker-compose.yml 파일 생성

services:
  registry:
    image: registry:latest
    restart: always
    networks:
      - registry-net
    volumes:
      - ./data:/var/lib/registry
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED=true
      - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory

  registry-ui:
    image: joxit/docker-registry-ui:latest
    restart: always
    environment:
      - REGISTRY_TITLE=ACS7th Private Registry
      - REGISTRY_URL=https://192.168.3.14
    networks:
      - registry-net

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - 443:443
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs/server.crt:/etc/nginx/server.crt
      - ./certs/server.key:/etc/nginx/server.key
      - ./htpasswd:/etc/nginx/htpasswd
      - ./logs:/var/log/nginx
    depends_on:
      - registry
      - registry-ui
    networks:
      - registry-net

networks:
  registry-net:

4. 인증 정보 설정

htpasswd 파일 생성 (사용자 이름과 비밀번호 설정)

apt-get install apache2-utils
htpasswd -cb htpasswd kevin pass123#