Skip to main content

Runtime별 컨테이너 정보 설정(Docker/podman)

시작하는말

안녕하세요, 고니입니다.
기존에 작성했던 컨텐츠들 업데이트를 하면서 문서의 리팩토링(Refactoring)을 진행해보려고 합니다.

Insecure registry란?

레지스트리는 통한 컨테이너 pulling은 https가 기본통신이지만, 특수한 환경에 의해 http로 통신해야 하는 경우 insecure registry 설정을 수행해야 http로 작업이 가능합니다.

설정작업

  1. Docker 기반에서 수행

    • Docker기반의 경우 설치된 환경에 따라 참조하는 파일 위치가 분리되어 있기 때문에 현재 사용중인 환겨에 맞추어 한군데의 파일만 설정하면 됩니다.
    • systemd에 설정된 설정값 변경
      $> cat /etc/systemd/system/docker.service.d/docker-options.conf
      [Service]
      Environment="DOCKER_OPTS=--bip 172.10.255.1/24 \
      ...
      --insecure-registry={{ 등록할 호스트1 }} --insecure-registry={{ 등록할 호스트2 }} \
      ...
      

    • daemon.json에 정의된 값 변경
      $> cat /etc/docker/daemon.json
      {
       "insecure-registries":["등록할 호스트1", "등록할 호스트2"]
      }

    • Docker 재기동
      $> systemctl daemon-reload
      $> systemctl restart docker

  2. Podman 기반에서 수행

    $> vi /etc/containers/registries.conf
    ...
    unqualified-search-registries = ["registry.fedoraproject.org", "registry.access.redhat.com", "registry.centos.org", "docker.io", "20.20.20.20", "10.10.10.10"]
    ...
    [[registry]]
    location = "10.10.10.10:80"
    insecure = true
    
    [[registry]]
    location = "20.20.20.20:80"
    insecure = true

확인방법

  1. Docker 기반에서 확인
    $> docker info
    ...
    Insecure Registries
    {{ 등록할 호스트1 }}
    {{ 등록할 호스트2 }}

  2. Podman에서 확인
    $> podman login 10.10.10.10:80
    Username:
    Password:
    Login Successed
    • daemonless이기 때문에 바로 적용
    • 기존 Docker에서 컨테이너 내려받을때는 포트정보가 없어도 되었지만, podman에서 내려받을때는 :80을 꼭 명시해야 함(default가 443이기 때문에 포트정보가 없는 경우 443으로 내려받으려고 시도함