[Ubuntu 16.04] Docker Private Registry Computer Tip

우분투 16.04에서 Docker의 사설 저장소를 이용해 보려고 합니다.

우선 사설 저장소를 설치하는 것은 역시나 docker 데몬이 돌고있는 docker host 에서

$ REGPORT=5000
$ docker run -d \
        --name docker-registry \
        -p ${REG_PORT}:5000 \
        -v /dhv/registry:/var/lib/registry \
        --restart=always \
        registry:2

와 같이 설치하여 동작시킵니다.

그리고는 다음과 같이 tag를 달고 사설 저장소에 push를 시키는데,

$ REG_HOST=1.2.3.4 # my-ip
$ REGPORT=5000
$ IMG=my-img:1.0
$ docker tag ${IMG} ${REG_HOST}:${REG_PORT}/${IMG}
$ docker push ${REG_HOST}:${REG_PORT}/${IMG}

그리고 다른 docker host 등에서 가져오려면

$ REG_HOST=1.2.3.4 # my-ip
$ REGPORT=5000
$ docker pull ${REG_HOST}:${REG_PORT}/${IMG}

이렇게 하면 되다고 나오는데,
문제는 localhost 말고 ip로 지정하면 오류가 발생합니다.

현재 docker info를 확인해 보면

$ docker info
...
Insecure Registries:
 127.0.0.0/8

와 같이 자신의 IP가 Insecure Registeries 에 등록되지 않은 것이었습니다.

우분투 16.04 LTS 버전 및 Docker 1.13 버전은 꼭 다음 위치의 내용을 설정하고
docker 서비스를 재기동시켜야 했습니다.

참고로 이전 버전에는

/etc/default/docker 파일에
DOCKER_OPTS="--insecure-registry $REG_HOST:$REG_PORT"
를 추가하거나

/lib/systemd/system/docker.service 파일에
ExecStart=/usr/bin/dockerd -H fd://
에 --insecure-registry $REG_HOST:$REG_PORT
와 같이 추가하라고 되어 있는데 모두 제대로 동작하지 않습니다.

대신

/etc/docker/daemon.json 파일에
{
    "insecure-registries": ["1.2.3.4:5000"]
}

와 같이 설정하고

$ sudo service docker restart

하고 나서

$ docker info
...
Insecure Registries:
 1.2.3.4:5000
 127.0.0.0/8

과 같이 해당 저장소가 추가 된 것이 보이며,
이것을 해당 Ip로 잘 push 및 pull 이 동작하는 것을 확인할 수 있었습니다.

해당 저장소를 사용하려는 각 docker host에서 위의 내용을 모두 설정해 주어야 했습니다.


어느 분께는 도움이 되셨기를...

덧글

  • bunseokbot 2017/04/20 15:18 # 삭제 답글

    제가 이 문제 때문에 2시간동안 삽질중이였는데 바로 해결되었습니다. 정말 감사합니다.
  • 지훈현서아빠 2017/04/24 10:58 #

    저는 적어도 5시간 이상은 헤매었던 기억이...
    도움이 되셨다니 저의 보람입니다~~ ^^
댓글 입력 영역

구글애드텍스트