Docker에 Private Registry Login하기(without HTTPS)

sobu·2020년 12월 9일
0

Intro

언젠가 Docker daemon에 자신이 만든 Registry를 등록할만한 일이 있을지도 모른다. 하지만 슬프게도 바로 되지 않을 수도 있는데...

아마 docker login을 시도하면 아래와 같은 에러가 나올 때가 있다. (Registry가 HTTPS가 아닐 때..)

Error response from daemon: Get https://registry.gitlab.your.path/v2/: dial tcp 123.123.123.123:443: connect: connection refused

HTTPS가 아닌 Registry 서버는 로컬에 있는 게 아니라면 별도의 설정을 해줘야 한다. (대체? 저 에러 메세지로만 어떻게 HTTPS 문제라고 생각할 수 있겠는가...)

여러가지 자료를 찾아보면 /etc/init.d/docker를 수정하라는 사람도 있고, /etc/docker/daemon.json을 수정하라는 사람도 있다. 참고로 이 파일들은 docker daemon을 실행하는데 중요한 파일들이고 수정을 잘못 한다면, 아래와 같은 오류를 볼 수도 있을 것이다.

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2020-12-09 14:33:41 KST; 56s ago
     Docs: https://docs.docker.com
  Process: 4986 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
 Main PID: 4986 (code=exited, status=1/FAILURE)

12월 09 14:33:41 main systemd[1]: Stopped Docker Application Container Engine.
12월 09 14:33:41 main systemd[1]: docker.service: Start request repeated too quickly.
12월 09 14:33:41 main systemd[1]: docker.service: Failed with result 'exit-code'.
12월 09 14:33:41 main systemd[1]: Failed to start Docker Application Container Engine.
12월 09 14:33:42 main systemd[1]: docker.service: Start request repeated too quickly.
12월 09 14:33:42 main systemd[1]: docker.service: Failed with result 'exit-code'.
12월 09 14:33:42 main systemd[1]: Failed to start Docker Application Container Engine.
12월 09 14:34:12 main systemd[1]: docker.service: Start request repeated too quickly.
12월 09 14:34:12 main systemd[1]: docker.service: Failed with result 'exit-code'.
12월 09 14:34:12 main systemd[1]: Failed to start Docker Application Container Engine.

그러하니, 수정할 때에는 위의 파일들을 잘 백업해 놓길 바란다.

Insecure-registry 예외에 등록하기

여러 시도 끝에, /etc/docker/daemon.json를 수정하기로 했다.

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "insecure-registries": ["123.456.78.8:1", "1.2.3.4:5000"]
}

위와 같이 "insecure-registries"를 작성하고 sudo service docker restart를 통해 Docker를 재시작 해주면 예외 리스트에 추가가 된다. 이 과정에서 문법이 틀리면 위에서 언급한 에러가 발생할 수 있다.
참고로, "runtimes"은 nvidia-docker를 설치하면서 생긴 것이다.

Confirm

적용된 내용을 확인하기 위해서는 docker info명령어를 활용한다.

...
...
...
Insecure Registries:
 123.456.78.8:1
 1.2.3.4:5000
 127.0.0.0/8
...
...
...
 

Info 정보 중간에 자신이 추가한 예외 리스트를 볼 수 있다.

Apply

docker login registry.your.private.com를 통하여 접속하여 즐기면 된다.

profile
Maybe, Am I human?

0개의 댓글