Post

Linux 도커(5)

Linux 도커(5)

docker

registry 구축

  1. registry
    • 로컬 레지스트리
      • 전제 조건 (x)
    • 개인 레지스트리
      • 사내에 구성된 private registry
      • 클라우드에 구성된 private registry
      • 전제 조건
        • https 구성을 위한 인증서
        • 인증을 위한 구성
    • 공개 레지스트리
      • 전제 조건
        • https 구성을 위한 인증서
        • 인증을 위한 구성
  2. 로컬 레지스트리 구성
    1. Docker engine
      • curl -fsSL https://get.docker.com -o get-docker.sh
      • sh ./get-docker.sh
      • systemctl enable –now docker
    2. Local registry 구성
      • docker run -d –name registry -p 5000:5000 registry
  3. 개인 레지스트리 구성
    • 사내에 구성하는 rpviate registry
      1. 준비작업
        • 인증서 생성 & 배포
          • 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 서버에서도 도커 클라이언트에서 복사한 것처럼 해준다.
        • 인증을 위한 정보 생성
      2. 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(무료))

Docker Compose

  1. docker compose CMD
    1. docker compose CMD 소개
      • GO lang으로 만들어졌다.
      • docker compose file을 해석한다.(파일은 rest API 방식으로 전달된다.)
      • docker compose CMD는 하나의 호스트의 여러 컨테이너를 관리한다.
      • 참고사이트
    2. docker compose 설치
      • docker-compose-plugin 설치
      • docker-compose CMD (binary 파일)을 직접 다운로드
  2. docker compose file
    1. YAML 형식
      • 앤서블 문서 참조
    2. docker compose file의 종류
      • compose.{ymlyaml}
      • docker-compose.{ymlyaml}
    3. 컴포즈 파일(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의 서브 요소
          1. build
          2. command
          3. entrypoint
          4. ports
          5. expose
          6. environment
          7. env_file
          8. depends_on

          ++

          1. volumes
          2. networks ```yaml # build 관련 services: build: . build: /app/server build: context: /data dockerfile: Dockerfile.txt

      # 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 ```

This post is licensed under CC BY 4.0 by the author.