[TOAST Study] 7. Local Registry 사용해보기

[가장 빨리 만나는 Docker] 책을 참고하여 실습을 진행해보았다.

: 서버 1에서 로컬 레지스트 컨테이너를 열어 이미지파일을 올리고 서버2에서 이미지 받아오기

도커 명령은 기본적으로는 docker hub를 사용하지만 로컬 레지스트리도 사용이 가능하다. 이또한 도커허브를 통해 도커 이미지로 제공된다.

$ docker pull registry:latest
$ docker run -d -p 5000:5000 --name hello-registry -v /temp/registry:/tmp/registry registry

pull 명령어로 레지스트리 이미지를 받아와 서버가 사용하고 있는 보안그룹에서 5000포트를 열어주고, -v 옵션으로 호스트의 /temp/registry 와 컨테이너의 /tmp/registry 디렉토리가 연결되면서 이미지 파일이 호스트의 /tmp/registry 디렉토리에 저장되는 방식이다.

도커 허브에 올릴때 [도커 허브 아이디] / [이미지 이름] : [태그] 형식 으로 지정하듯 로컬 레지스트리를 사용하기 위해서는 [도커 허브 아이디] 대신 [로컬 호스트 아이피주소] 를 넣어 태그를 지정해준다. 그리고 해당 이미지를 5000번 포트로 push 해준다.
(나는 우분투 환경에 nginx를 설치한 hello:1.0 이미지를 가지고 진행했다)
먼저 tag 명령어로 태그를 생성해준다.

$ docker tag hello:1.0 localhost:5000/hello:1.0
$ docker push localhost:5000/hello:1.0

그리고 서버2에서 pull을 시도 했다. 하지만
http: server gave HTTP response to HTTPS client
에러가 발생했고 구글링을 통해 해결책을 찾은 것은 /etc/docker 디렉토리에 'daemon.json' 파일을 추가해

{
  "insecure-registries":["localhost ip:5000"]
}

위의 내용을 추가해주면 된다. 나는 파일 작성에서 실수로 괄호를 닫지 않아 도커 자체에 문제가 생겨 도커 실행이 잠깐 제대로 되지 않았다. 잘 확인하도록하자

이후 서버 2에서
$ docker pull "localhost ip":5000/hello:1.0
명령어로 이미지를 불러오는데 성공했다.



No comments:

Powered by Blogger.