Linux 도커(5)
Linux 도커(5)
docker
registry 구축
- registry
- 로컬 레지스트리
- 전제 조건 (x)
- 개인 레지스트리
- 사내에 구성된 private registry
- 클라우드에 구성된 private registry
- 전제 조건
- https 구성을 위한 인증서
- 인증을 위한 구성
- 공개 레지스트리
- 전제 조건
- https 구성을 위한 인증서
- 인증을 위한 구성
- 전제 조건
- 로컬 레지스트리
- 로컬 레지스트리 구성
- Docker engine
- curl -fsSL https://get.docker.com -o get-docker.sh
- sh ./get-docker.sh
- systemctl enable –now docker
- Local registry 구성
- docker run -d –name registry -p 5000:5000 registry
- Docker engine
- 개인 레지스트리 구성
- 사내에 구성하는 rpviate registry
- 준비작업
- 인증서 생성 & 배포
- mkdir -p /auth && cd /auth
- docker run –rm -v /auth:/auth alpine/openssl req -newkey rsa:4096 -nodes -sha256 -x509 -days 365 -keyout /auth/myregistry.com.key -out /auth/myregistry.com.crt -subj ‘/CN=myregistry.com’ -addext “subjectAltName = DNS:myregistry.com”
- (docker client) mkdir -p /etc/docker/certs.d/myregistry.com
- (docker client) cp /auth/myregistry.com.crt /etc/docker/certs.d/myregistry.com/ca.crt
- registry 서버에서도 도커 클라이언트에서 복사한 것처럼 해준다.
- 인증을 위한 정보 생성
- 인증서 생성 & 배포
- private registry 구성
- docker run -d -p 443:443 –restart=always –name registry -v /auth:/certs -v /image-data:/var/lib/registry -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/myregistry.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/myregistry.com.key -e REGISTRY_HTTP_ADDR=0.0.0.0:443 registry
- 준비작업
- 클라우드에 구성하는 private registry(ex: GCP(무료))
- 사내에 구성하는 rpviate registry
Docker Compose
- docker compose CMD
- docker compose CMD 소개
- GO lang으로 만들어졌다.
- docker compose file을 해석한다.(파일은 rest API 방식으로 전달된다.)
- docker compose CMD는 하나의 호스트의 여러 컨테이너를 관리한다.
- 참고사이트
- docker compose 설치
- docker-compose-plugin 설치
- docker-compose CMD (binary 파일)을 직접 다운로드
- docker compose CMD 소개
- docker compose file
- YAML 형식
- 앤서블 문서 참조
- docker compose file의 종류
compose.{yml yaml} docker-compose.{yml yaml}
- 컴포즈 파일(ex. docker-compose.yaml)
- top level
- version
- services
- networks
- volumes
- configs
- secrets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
# 1번 분류 version: "3" services: web: image: nginx # 2번 분류 services: frontend: image: nginx networks: - front-tier - back-tier networks: front-tier back-tier # 3번 분류 services: frontend: image: nginx volumes: - /web:/usr/share/nginx/html - /weblog:/var/log/nginx volumes: weblog: # 4번 분류 configs: http_config: file: ./httpd.conf # 5번 분류 secrets: server-certificate: file: ./server.crt secrets: token: environment: "OAUTH_TOKEN"
- sub level 요소
- services의 서브 요소
- build
- command
- entrypoint
- ports
- expose
- environment
- env_file
- depends_on
++
- volumes
- networks ```yaml # build 관련 services: build: . build: /app/server build: context: /data dockerfile: Dockerfile.txt
- services의 서브 요소
# command 관련 services: command: /bin/bash entrypoing: /bin/php
# ports 관련 services: ports: [“80:80”, “443:443”] # 외부에서 expose: [“80”, “443”] # 내부에서
# environment services: environmnet: k1: v1 k2: v2 environment: # 동작은 같음 - k1=v1 - k2=v2 env_file: envfile.txt
$ cat envfile.txt # envfile.txt안에 들어간 내용은 다음과 같다 k1=v1 k2-v2 ```
- top level
- YAML 형식
This post is licensed under CC BY 4.0 by the author.