【Docker】RancherOS에서 본격적인 자택 서버를 구축하자(5) ~private registry 로 docker image를 관리~

private registry로 docker image를 관리합시다.


  • 통상은 자작한 docker의 image를 docker hub등에 올려서 관리합니다만, 이번은
    private registry를 자사 서버에 세우고, 외부에 공개하고 싶지 않은 image를 거기에서 관리합니다



  • 관련 기사


  • RancherOS에서 본격적인 집 서버를 구축합시다.
  • RancherOS에서 rancher-server를 설치합시다.
  • RancherOS에서 rancher-agent를 구축합시다.
  • RancherOS에서 GlusterFS를 사용하여 데이터를 영구화합시다.
  • RancherOS에 private registory를 세워 docker image를 관리하자 ← ← 지금 여기
  • Rancher의 CATALOG 라이브러리 목록

  • 장점


  • 외부에 공개하고 싶지 않은 image를 관리할 수 있다
  • 다른 환경 (로컬 docker 등)에서 만든 이미지를 그대로 사용할 수 있습니다
  • 즉, production 환경에서 docker build 등 두드리지 않기 때문에 안전

  • 사양 확인


  • 로컬로 만든 이미지를 docker push 〜〜로 설정하여 관리 할 수 ​​있으며 puroduction 서버에서 즉시 사용할 수 있습니다
  • 만든 이미지는 registry-frontend에서 확인할 수 있습니다
  • docker pull 〜〜 어디서나 이미지를 풀 수 있습니다

  • 사용할 라이브러리


  • registry:2.3.0
  • konradkleine/docker-registry-frontend:v2

  • registry + registry-frontend


  • registry-frontend라는 사람이 현재 registry에 무엇이 push되어 있는지 확인할 수 있습니다
  • 우선 rancher의 관리 화면에서 Add stack합니다



  • docker-compose.yml
    registry:
      image: registry:2.3.0
      volumes:
        - vol_registry:/var/lib/registry
      volume_driver: convoy-gluster
      ports:
        - 5000:5000
      labels:
        io.rancher.scheduler.global: 'true'
    
    registry-frontend:
      image: konradkleine/docker-registry-frontend:v2
      environment:
        - ENV_DOCKER_REGISTRY_HOST=registry
        - ENV_DOCKER_REGISTRY_PORT=5000
      links:
        - registry:registry
      ports:
        - 8888:80
    
    
  • create 하고 잠시 기다린다

  • https 오류



  • --insecure-registry가 어떻게 하면
    FATA[0004] Error: v1 ping attempt failed with error: Get https://example.com:5000/v1/_ping: EOF.
    If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry example.com:5000` to the daemon's arguments.
    In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/example.com:5000/ca.crt
    
  • 분명히, private registry의 통신에는 https통신이 사용되는 것 같고, 증명서 없는 어서 온다.
    그래서 http로 하도록 설정을 쓰는 것이 쉬웠기 때문에 그곳에서 우선 대응

  • RancherOS의 경우


    $ sudo ros config set rancher.docker.args "['daemon','--insecure-registry,docker.ooo.com:5000']"
    
    $ sudo ros config get rancher.docker
    
    #ここでrestartをするわけだが、コンテナも一時的に死ぬので注意
    $ sudo system-docker restart docker
    

    boot2docker의 경우


    $ boot2docker ssh
    $ sudo vi /var/lib/boot2docker/profile
    
      EXTRA_ARGS="--insecure-registry docker.oooo.com:5000"
    
    #ここでrestartをするわけだが、コンテナも一時的に死ぬので注意
    $ sudo /etc/init.d/docker restart
    

    CoreOS의 경우


    coreos:
      units:
        - name: docker.service
          drop-ins:
            - name: 50-insecure-registry.conf
              content: |
                [Service]
                Environment=DOCKER_OPTS='--insecure-registry="example.com:5000"'
    
    ## coreosをrestart
    
    

    registry의 동작 확인


  • 다른 환경에서 액세스 시도
  • $ docker login docker.oooo.com:5000
    $ docker pull centos
    $ docker tag centos docker.oooo.com:5000/centos
    $ docker push docker.oooo.com:5000/centos
    
    


    
    ##いったん消してpullしてみる
    $ docker images
    $ docker rmi xxxxxxxx{centosのID}
    $ docker pull docker.oooo.com:5000/centos
    

    frontend의 ​​동작 확인


  • frontend는 외부에 게시하고 싶지 않으므로 .ssh/config에서 로컬 포워드 설정에서 8888을 전달합니다
  • 액세스하면 이런 느낌



  • 이제 registry를 설정할 수 있습니다.


  • 많은 registray에 빠져 버렸다
  • mac의 boot2docker인 어느 정도 개발하고 나서, production 서버에 push 할 수 있게 되었다
  • 좋은 웹페이지 즐겨찾기