티스토리 뷰

728x170

본 포스팅은 다음 URL에 보다 상세히 정의하였습니다.

[Docker Registry] Docker Image를 활용한 Local Registry 구축




==============이전 포스팅==============

 포스팅은 Docker Private Registry 설치과정을 살펴보겠습니다.


Kubernetes & Docker Install 과정을 살펴보며, 추후 CICD 구축에 활용될 수 있도록 하는데 목적이 있습니다.

금일은 Docker Public Registry인 Docker Hub를 사용할 수도 있지만, 개인 공간의 Registry를 사용할 수 있는 Private Registry를 구축하여 사내에서 사용할 수 있도록 구현하는 방법에 대해 알아보겠습니다.


Private Registry를 사용 할 경우 다음과 같은 장점이 있습니다.

- Docker Hub등의 Public Registry의 경우 하나의 이미지만 private 등록이 가능하고 organization의 경우 비용을 지불해야 하지만 Private Registry의 경우 제한이 없다.

- 개인 공간에서 보다 많은 권한을 부여하여 사용할 수 있다.


위와 같은 사유로 인해 내부 Private Cloud 환경에 적용가능한 Docker Private Registry를 지금부터 구현해 보도록 하겠습니다.

먼저 Docker를 설치하는 방법은 이전 포스팅을 참고하시기 바랍니다. (ex) wget -qO- https://get.docker.com/ | sh)



Docker Registry를 구현하는 방법은 간단합니다.

1. Docker registry Images 가져오기


[root@k8s-master ~]# docker pull registry:latest

latest: Pulling from library/registry

Digest: sha256:5a156ff125e5a12ac7fdec2b90b7e2ae5120fa249cf62248337b6d04abc574c8

Status: Image is up to date for registry:latest


- 위와 같이 Docker Repository를 생성하고 다음 정상 생성되었는지 확인합니다.


[root@k8s-master ~]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

k8s.gcr.io/kube-proxy                   v1.12.1             61afff57f010        12 days ago         96.6MB

k8s.gcr.io/kube-controller-manager      v1.12.1             aa2dd57c7329        12 days ago         164MB

k8s.gcr.io/kube-scheduler               v1.12.1             d773ad20fd80        12 days ago         58.3MB

k8s.gcr.io/kube-apiserver               v1.12.1             dcb029b5e3ad        12 days ago         194MB

k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        3 weeks ago         220MB

weaveworks/weave-npc                    2.4.1               f4dbcb83cd0a        4 weeks ago         49.1MB

weaveworks/weave-kube                   2.4.1               84685279975a        4 weeks ago         131MB

registry                                latest              2e2f252f3c88        5 weeks ago         33.3MB

hello-world                             latest              4ab4c602aa5e        5 weeks ago         1.84kB

localhost:5000/hello-world              latest              4ab4c602aa5e        5 weeks ago         1.84kB

k8s.gcr.io/coredns                      1.2.2               367cdc8433a4        7 weeks ago         39.2MB

k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        7 weeks ago         122MB

k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        10 months ago       742kB

[root@k8s-master ~]#


위와 같이 docker docker images로 정상 생성여부를 확인하고 Docker에 접속할 계정을 생성합니다.


2. Docker registry 실행


[root@k8s-master ~]# docker run --name MyPrivate-Docker -d -p 5000:5000 registry

18b0a60c87486ee4c975d9c684c97f8eb4ddc9b5b151bf62522a537878f5cf26

[root@k8s-master ~]#


- docker run 명령어로 컨테이너 기동

- --name은 docker image 이름

- -d 백그라운드 실행

- -p 5000:5000 registry 실행


3. Docker registry 확인


[root@k8s-master ~]# docker ps -a

CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                    PORTS                    NAMES

18b0a60c8748        registry                                "/entrypoint.sh /etc…"   2 hours ago         Up 2 hours                0.0.0.0:5000->5000/tcp   MyPrivate-Docker

3f284bab3ec4        k8s.gcr.io/kubernetes-dashboard-amd64   "/dashboard --insecu…"   19 hours ago        Up 19 hours                                        k8s_kubernetes-dashboard_kubernetes-dashboard-77fd78f978-mfxb8_kube-system_4076aa96-d1ec-11e8-9fdd-9883898074d3_0

42afe6996e1e        k8s.gcr.io/pause:3.1                    "/pause"                 19 hours ago        Up 19 hours                                        k8s_POD_kubernetes-dashboard-77fd78f978-mfxb8_kube-system_4076aa96-d1ec-11e8-9fdd-9883898074d3_0

7f7a92cbbc2d        registry                                "htpasswd -Bbn oss-w…"   23 hours ago        Exited (0) 23 hours ago                            elated_shaw

56bbba510c6b        367cdc8433a4                            "/coredns -conf /etc…"   44 hours ago        Up 44 hours                                        k8s_coredns_coredns-576cbf47c7-gxn2m_kube-system_02e11897-d120-11e8-9fdd-9883898074d3_0

26be33132fa2        367cdc8433a4                            "/coredns -conf /etc…"   44 hours ago        Up 44 hours                                        k8s_coredns_coredns-576cbf47c7-kkvr6_kube-system_02df3d23-d120-11e8-9fdd-9883898074d3_0

6995158de9dc        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_coredns-576cbf47c7-kkvr6_kube-system_02df3d23-d120-11e8-9fdd-9883898074d3_0

db3b92728afa        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_coredns-576cbf47c7-gxn2m_kube-system_02e11897-d120-11e8-9fdd-9883898074d3_0

2a2fefb22d3a        weaveworks/weave-npc                    "/usr/bin/weave-npc"     44 hours ago        Up 44 hours                                        k8s_weave-npc_weave-net-tztj4_kube-system_d5042d26-d120-11e8-9fdd-9883898074d3_0

04fa21080461        weaveworks/weave-kube                   "/home/weave/launch.…"   44 hours ago        Up 44 hours                                        k8s_weave_weave-net-tztj4_kube-system_d5042d26-d120-11e8-9fdd-9883898074d3_0

7b7c95654523        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_weave-net-tztj4_kube-system_d5042d26-d120-11e8-9fdd-9883898074d3_0

249d98d4917b        61afff57f010                            "/usr/local/bin/kube…"   44 hours ago        Up 44 hours                                        k8s_kube-proxy_kube-proxy-qrzlj_kube-system_02a35976-d120-11e8-9fdd-9883898074d3_0

d9c6f9803dcc        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_kube-proxy-qrzlj_kube-system_02a35976-d120-11e8-9fdd-9883898074d3_0

876e79418397        3cab8e1b9802                            "etcd --advertise-cl…"   44 hours ago        Up 44 hours                                        k8s_etcd_etcd-k8s-master_kube-system_c6ac110cbbe80b7156d7f1bb985f7e90_0

412572ade07b        aa2dd57c7329                            "kube-controller-man…"   44 hours ago        Up 44 hours                                        k8s_kube-controller-manager_kube-controller-manager-k8s-master_kube-system_daad197fa30823e693fd52c5496dd730_0

440c51e6a50e        d773ad20fd80                            "kube-scheduler --ad…"   44 hours ago        Up 44 hours                                        k8s_kube-scheduler_kube-scheduler-k8s-master_kube-system_3c7cced3664379c67e8177757da3fa42_0

514b6c8c0ef6        dcb029b5e3ad                            "kube-apiserver --au…"   44 hours ago        Up 44 hours                                        k8s_kube-apiserver_kube-apiserver-k8s-master_kube-system_eaf429bef615820fb3cf2cf19487e575_0

6587e6460728        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_kube-scheduler-k8s-master_kube-system_3c7cced3664379c67e8177757da3fa42_0

c7a1c218307f        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_kube-controller-manager-k8s-master_kube-system_daad197fa30823e693fd52c5496dd730_0

2d4cb190fbde        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_kube-apiserver-k8s-master_kube-system_eaf429bef615820fb3cf2cf19487e575_0

8c40e37290b0        k8s.gcr.io/pause:3.1                    "/pause"                 44 hours ago        Up 44 hours                                        k8s_POD_etcd-k8s-master_kube-system_c6ac110cbbe80b7156d7f1bb985f7e90_0

[root@k8s-master ~]#


- 위와 같이 docker ps -a로 확인하면 추가한 docker registry를 확인할 수 있습니다.


[root@k8s-master ~]# docker ps -l

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

18b0a60c8748        registry            "/entrypoint.sh /etc…"   2 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp   MyPrivate-Docker

[root@k8s-master ~]#


- docker ps -l 을 사용하면 최근에 추가한 컨테이너를 확인할 수 있죠.

4. Listen Port 확인


[root@k8s-master ~]# netstat -an | grep 5000

tcp6       0      0 :::5000                 :::*                    LISTEN

[root@k8s-master ~]#


- 바인딩한 5000번 포트가 정상적으로 Listen하고 있어요.

- 컨테이너의 5000번 포트가 호스트의 5000 포트로 노출되며, 도커 레지스트리는 http를 통해 기본적인 API를 제공합니다.



Docker Registry를 구축을 완료하였으면 이제 실제로 사용하는 방법에 대해 살펴보겠습니다.

1. Dockerfile 작성


[root@k8s-master dockerDir]# cat Dockerfile

FROM ubuntu:12.04

MAINTAINER Nara Son <nara0617@gmail.com>

CMD echo 'My First Docker!'

[root@k8s-master dockerDir]#


- 간단한 Dockerfile을 작성합니다.


2. Dockerfile을 이용하여 Docker Image를 생성합니다.


[root@k8s-master dockerDir]# docker build -t nrson/hello_docker .

Sending build context to Docker daemon  10.24kB

Step 1/3 : FROM ubuntu:12.04

12.04: Pulling from library/ubuntu

d8868e50ac4c: Pull complete

83251ac64627: Pull complete

589bba2f1b36: Pull complete

d62ecaceda39: Pull complete

6d93b41cfc6b: Pull complete

Digest: sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005

Status: Downloaded newer image for ubuntu:12.04

 ---> 5b117edd0b76

Step 2/3 : MAINTAINER Nara Son <nara0617@gmail.com>

 ---> Running in 61841107951e

Removing intermediate container 61841107951e

 ---> 5c511b84c641

Step 3/3 : CMD echo 'My First Docker!'

 ---> Running in 76011577d3f1

Removing intermediate container 76011577d3f1

 ---> b1e1ab7e9b17

Successfully built b1e1ab7e9b17

Successfully tagged nrson/hello_docker:latest

[root@k8s-master dockerDir]#


- nrson/hello_docker라는 tag 이름으로 docker 이미지를 생성하였습니다.


3. docker images 생성확인


[root@k8s-master dockerDir]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED              SIZE

nrson/hello_docker                      latest              b1e1ab7e9b17        About a minute ago   104MB

k8s.gcr.io/kube-proxy                   v1.12.1             61afff57f010        12 days ago          96.6MB

k8s.gcr.io/kube-apiserver               v1.12.1             dcb029b5e3ad        12 days ago          194MB

k8s.gcr.io/kube-controller-manager      v1.12.1             aa2dd57c7329        12 days ago          164MB

k8s.gcr.io/kube-scheduler               v1.12.1             d773ad20fd80        12 days ago          58.3MB

k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        3 weeks ago          220MB

weaveworks/weave-npc                    2.4.1               f4dbcb83cd0a        4 weeks ago          49.1MB

weaveworks/weave-kube                   2.4.1               84685279975a        4 weeks ago          131MB

registry                                latest              2e2f252f3c88        5 weeks ago          33.3MB

localhost:5000/hello-world              latest              4ab4c602aa5e        5 weeks ago          1.84kB

hello-world                             latest              4ab4c602aa5e        5 weeks ago          1.84kB

k8s.gcr.io/coredns                      1.2.2               367cdc8433a4        7 weeks ago          39.2MB

k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        7 weeks ago          122MB

k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        10 months ago        742kB

ubuntu                                  12.04               5b117edd0b76        18 months ago        104MB

[root@k8s-master dockerDir]# docker run nrson/hello_docker

My First Docker!

[root@k8s-master dockerDir]#


보시는 것처럼 방금전 생성한 nrson/hello_docker가 생성된 것을 볼 수 있습니다.

docker run 수행 시 Dockerfile에 작성한 My First Docker!가 출력되는 것을 볼 수 있습니다.

그럼 이제 생성한 이미지를 Docker Private Registry에 Push해야 겠죠?


4. docker tag를 이용하여 docker registry에 push

앞서 생성한 Private Registry에 이미지를 올려보도록 하겠습니다.


[root@k8s-master dockerDir]# docker tag nrson/hello_docker 0.0.0.0:5000/hello_docker

[root@k8s-master dockerDir]#


- 다시 docker images로 생성된 이미지를 확인해보면


[root@k8s-master dockerDir]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

0.0.0.0:5000/hello_docker               latest              b1e1ab7e9b17        4 minutes ago       104MB

nrson/hello_docker                      latest              b1e1ab7e9b17        4 minutes ago       104MB

...

[root@k8s-master dockerDir]#


위와 같이 생성된 시간이 동일하게 나오죠?

이것으로 미루어보아 신규로 생성한 0.0.0.0:5000/hello_docker 이미지는 nrson/hello_docker와 동일한 이미지임을 알수 있습니다.

자 그럼 Private Docker에 Push를 실행해 보도록 할께요.


5. Private Docker에 이미지 push

- docker push를 수행할때 다음과 같은 오류를 접할경우가 있을 것입니다.


[root@k8s-master dockerDir]# docker push 172.21.70.22:5000/hello_docker

The push refers to repository [0.0.0.0:5000/hello_docker]

Get https://172.21.70.22:5000/v2/: http: server gave HTTP response to HTTPS client

[root@k8s-master dockerDir]#


다음과 같은 문제는 추가한 신규 registry의 경우 docker daemon에 insecure-registries를 등록해 주어야 합니다.


[root@k8s-master dockerDir]# cat /etc/docker/daemon.json

{

 "insecure-registries" : ["172.21.70.22:5000"]

}

[root@k8s-master dockerDir]# systemctl restart docker

[root@k8s-master dockerDir]#


다음과 같이 /etc/docker/daemon.json을 작성합니다.

docker를 재기동 하고 다시 수행해 볼까요?


[root@k8s-master dockerDir]# docker push 172.21.70.22:5000/hello_docker

The push refers to repository [172.21.70.22:5000/hello_docker]

3efd1f7c01f6: Pushed

73b4683e66e8: Pushed

ee60293db08f: Pushed

9dc188d975fd: Pushed

58bcc73dcf40: Pushed

latest: digest: sha256:a7d1c874613c59e73380dbcc3e0c8506b8919c4e0e0e23bdf02de01ff60cecbd size: 1359

[root@k8s-master dockerDir]#



드디어 성공! 지금까지 따라오기 힘드시죠?

자 그럼 한번 정리하고 다음으로 넘어갈께요.

1. docker private rregistry를 설치하구요.

2. docker run... 5000:5000으로 docker 기동합니다.

3. 다음으로 Dockerfile을 생성하여 Docker 이미지를 생성하고

4. docker tag로 tag를 명시하여 이미지를 업로드합니다.



다음으로 Docker Private Registry에서 Pulling하여 실행하는 방법에 대해 알아보겠습니다.

중요한 사항은 현대 local repository에 올라가 있는 image와 container를 모두 삭제한 이후 실행하는 것이 보다 확실할 수 있습니다.


1. docker rmi [image] and docker rm [container] 수행

- 올라가 있는 Container를 docker rm으로 제거합니다.


[root@k8s-master dockerDir]# docker ps -a

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                           PORTS                    NAMES

2d526befc1a6        172.21.70.22:5000/hello_docker   "/bin/sh -c 'echo 'M…"   About an hour ago   Exited (0) About an hour ago                              awesome_bhaskara

e9e8af1300c1        registry                         "/entrypoint.sh /etc…"   About an hour ago   Up About an hour                 0.0.0.0:5000->5000/tcp   MyPrivate-Docker

eb3cf068457c        367cdc8433a4                     "/coredns -conf /etc…"   About an hour ago   Up About an hour                                          k8s_coredns_coredns-576cbf47c7-kkvr6_kube-system_02df3d23-d120-11e8-9fdd-9883898074d3_1

[root@k8s-master dockerDir]# docker rm 2d526befc1a6

2d526befc1a6

[root@k8s-master dockerDir]#


- 다음으로 올라가 있는 Image 역시 제거합니다.


[root@k8s-master dockerDir]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

172.21.70.22:5000/hello_docker          latest              cb13f721e08d        2 hours ago         104MB

k8s.gcr.io/kube-proxy                   v1.12.1             61afff57f010        12 days ago         96.6MB

k8s.gcr.io/kube-apiserver               v1.12.1             dcb029b5e3ad        12 days ago         194MB

k8s.gcr.io/kube-controller-manager      v1.12.1             aa2dd57c7329        12 days ago         164MB

k8s.gcr.io/kube-scheduler               v1.12.1             d773ad20fd80        12 days ago         58.3MB

k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        3 weeks ago         220MB

weaveworks/weave-npc                    2.4.1               f4dbcb83cd0a        4 weeks ago         49.1MB

weaveworks/weave-kube                   2.4.1               84685279975a        4 weeks ago         131MB

registry                                latest              2e2f252f3c88        5 weeks ago         33.3MB

hello-world                             latest              4ab4c602aa5e        5 weeks ago         1.84kB

localhost:5000/hello-world              latest              4ab4c602aa5e        5 weeks ago         1.84kB

k8s.gcr.io/coredns                      1.2.2               367cdc8433a4        7 weeks ago         39.2MB

k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        7 weeks ago         122MB

k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        10 months ago       742kB

ubuntu                                  12.04               5b117edd0b76        18 months ago       104MB

[root@k8s-master dockerDir]# docker rmi 172.21.70.22:5000/hello_docker

Untagged: 172.21.70.22:5000/hello_docker:latest

Untagged: 172.21.70.22:5000/hello_docker@sha256:a7d1c874613c59e73380dbcc3e0c8506b8919c4e0e0e23bdf02de01ff60cecbd

Deleted: sha256:cb13f721e08d906a55ab69b2be8d60c7f7c9c3343abf91dff8387cb6a70c4c96

[root@k8s-master dockerDir]# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

k8s.gcr.io/kube-proxy                   v1.12.1             61afff57f010        12 days ago         96.6MB

k8s.gcr.io/kube-controller-manager      v1.12.1             aa2dd57c7329        12 days ago         164MB

k8s.gcr.io/kube-apiserver               v1.12.1             dcb029b5e3ad        12 days ago         194MB

k8s.gcr.io/kube-scheduler               v1.12.1             d773ad20fd80        12 days ago         58.3MB

k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        3 weeks ago         220MB

weaveworks/weave-npc                    2.4.1               f4dbcb83cd0a        4 weeks ago         49.1MB

weaveworks/weave-kube                   2.4.1               84685279975a        4 weeks ago         131MB

registry                                latest              2e2f252f3c88        5 weeks ago         33.3MB

localhost:5000/hello-world              latest              4ab4c602aa5e        5 weeks ago         1.84kB

hello-world                             latest              4ab4c602aa5e        5 weeks ago         1.84kB

k8s.gcr.io/coredns                      1.2.2               367cdc8433a4        7 weeks ago         39.2MB

k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        7 weeks ago         122MB

k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        10 months ago       742kB

ubuntu                                  12.04               5b117edd0b76        18 months ago       104MB

[root@k8s-master dockerDir]#



2. 172.21.70.22:5000 Docker Registry에서 docker run 수행


[root@k8s-master dockerDir]# docker run 172.21.70.22:5000/hello_docker

Unable to find image '172.21.70.22:5000/hello_docker:latest' locally

latest: Pulling from hello_docker

396e9d6ee8c9: Already exists

403b0fc2e6f1: Already exists

7124ef1a91d2: Already exists

f47441d15565: Already exists

588e8920e707: Already exists

Digest: sha256:a7d1c874613c59e73380dbcc3e0c8506b8919c4e0e0e23bdf02de01ff60cecbd

Status: Downloaded newer image for 172.21.70.22:5000/hello_docker:latest

My First Docker!

[root@k8s-master dockerDir]#


- 위와 같이 정상적으로 docker run이 수행된 것을 볼 수 있습니다. locally에서 찾아보니 해당 이미지가 없어서 172.21.70.22:5000에서 이미지를 Pulling해서 실행하는 것을 볼 수 있습니다.

- Dockerfile에 명시한 CMD echo 'My First Docker!' 의 경우 echo 출력 후 바로 종료되어 Container 역시 종료됨을 알 수 있습니다.


[root@k8s-master dockerDir]# docker ps -l

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                     PORTS               NAMES

7c91c953f2ab        172.21.70.22:5000/hello_docker   "/bin/sh -c 'echo 'M…"   3 minutes ago       Exited (0) 3 minutes ago                       optimistic_noyce

[root@k8s-master dockerDir]#


- docker run 수행 후 echo가 출력되고 3분전 해당 Container가 Exited 된 것을 볼 수 있습니다.



자 지금까지 살펴본 Docker Private Registry에는 한가지 문제가 있는데요. 바로 GUI를 제공하지 않는다는 점이죠.

해서 지금부터는 GUI를 지원하는 Docker Registry Web을 설치해 보도록하겠습니다.

1. docker-registry-web을 설치하기 위한 yaml파일 작성


[root@k8s-master dockerDir]# cat config.yaml

registry:

 # 기존에 설치한 docker private registry

 url: http://172.21.70.22:5000/v2

 # Docker registry name

 name: 172.21.70.22:5000

 # docker 권한 부여

 readonly: false

 auth:

 enabled: false

[root@k8s-master dockerDir]#



2. docker-registry-web 실행


[root@k8s-master dockerDir]# docker run -it -p 8080:8080 --name registry-web --link MyPrivate-Docker -v /root/dockerDir/config.yaml:/conf/config.yml:ro hyper/docker-registry-web

CATALINA_OPTS: -Djava.security.egd=file:/dev/./urandom -Dcontext.path=

Using CATALINA_BASE:   /var/lib/tomcat7

Using CATALINA_HOME:   /usr/share/tomcat7

Using CATALINA_TMPDIR: /var/lib/tomcat7/temp

Using JRE_HOME:        /usr/lib/jvm/java-7-openjdk-amd64

Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar

Oct 18, 2018 7:58:13 AM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler ["http-bio-8080"]

Oct 18, 2018 7:58:13 AM org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 323 ms

Oct 18, 2018 7:58:13 AM org.apache.catalina.core.StandardService startInternal

INFO: Starting service Catalina

Oct 18, 2018 7:58:13 AM org.apache.catalina.core.StandardEngine startInternal

INFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)

2018-10-18 07:58:22,305 [localhost-startStop-1] INFO  hibernate4.HibernatePluginSupport  - Set db generation strategy to 'update' for datasource DEFAULT


Configuring Spring Security Core ...

... finished configuring Spring Security Core


2018-10-18 07:58:22,814 [localhost-startStop-1] INFO  cache.CacheBeanPostProcessor  - postProcessBeanDefinitionRegistry start

2018-10-18 07:58:22,821 [localhost-startStop-1] INFO  cache.CacheBeanPostProcessor  - postProcessBeanFactory

2018-10-18 07:58:23,643 [localhost-startStop-1] WARN  config.ConfigurationFactory  - No configuration found. Configuring ehcache from ehcache-failsafe.xml  found in the classpath: jar:file:/var/lib/tomcat7/webapps/ROOT/WEB-INF/lib/ehcache-2.9.0.jar!/ehcache-failsafe.xml

2018-10-18 07:58:24,175 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: access_control

2018-10-18 07:58:24,176 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: event

2018-10-18 07:58:24,177 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role

2018-10-18 07:58:24,178 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role_access

2018-10-18 07:58:24,179 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user

2018-10-18 07:58:24,180 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user_role

2018-10-18 07:58:24,180 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: access_control

2018-10-18 07:58:24,181 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: event

2018-10-18 07:58:24,182 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role

2018-10-18 07:58:24,183 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role_access

2018-10-18 07:58:24,183 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user

2018-10-18 07:58:24,184 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user_role

2018-10-18 07:58:24,185 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: access_control

2018-10-18 07:58:24,186 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: event

2018-10-18 07:58:24,186 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role

2018-10-18 07:58:24,187 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: role_access

2018-10-18 07:58:24,187 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user

2018-10-18 07:58:24,188 [localhost-startStop-1] INFO  sql.DatabaseMetaData  - HHH000262: Table not found: user_role

2018-10-18 07:58:24,325 [localhost-startStop-1] INFO  ehcache.GrailsEhCacheManagerFactoryBean  - Initializing EHCache CacheManager

2018-10-18 07:58:25,591 [localhost-startStop-1] WARN  web.TokenService  - Authorization disabled

2018-10-18 07:58:26,607 [localhost-startStop-1] INFO  filter.AnnotationSizeOfFilter  - Using regular expression provided through VM argument net.sf.ehcache.pool.sizeof.ignore.pattern for IgnoreSizeOf annotation : ^.*cache\..*IgnoreSizeOf$

2018-10-18 07:58:26,611 [localhost-startStop-1] INFO  sizeof.AgentLoader  - Located valid 'tools.jar' at '/usr/lib/jvm/java-7-openjdk-amd64/jre/../lib/tools.jar'

2018-10-18 07:58:26,616 [localhost-startStop-1] INFO  sizeof.JvmInformation  - Detected JVM data model settings of: 64-Bit OpenJDK JVM with Compressed OOPs

2018-10-18 07:58:26,838 [localhost-startStop-1] INFO  sizeof.AgentLoader  - Extracted agent jar to temporary file /var/lib/tomcat7/temp/ehcache-sizeof-agent6155212255395185609.jar

2018-10-18 07:58:26,838 [localhost-startStop-1] INFO  sizeof.AgentLoader  - Trying to load agent @ /var/lib/tomcat7/temp/ehcache-sizeof-agent6155212255395185609.jar

2018-10-18 07:58:26,841 [localhost-startStop-1] INFO  impl.DefaultSizeOfEngine  - using Agent sizeof engine

2018-10-18 07:58:26,859 [localhost-startStop-1] INFO  impl.DefaultSizeOfEngine  - using Agent sizeof engine

2018-10-18 07:58:26,888 [localhost-startStop-1] INFO  context.GrailsConfigUtils  - [GrailsContextLoader] Grails application loaded.

2018-10-18 07:58:26,920 [localhost-startStop-1] INFO  conf.BootStrap  - Starting registry-web ver. 0.1.3-SNAPSHOT-bededf47611365f0a6d2bb87942e3b86c1e92d9f

2018-10-18 07:58:26,948 [localhost-startStop-1] INFO  web.ConfigService  - [environmentProperties, localProperties]

2018-10-18 07:58:26,954 [localhost-startStop-1] INFO  web.ConfigService  - resolved config:

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.url: http://172.21.70.22:5000/v2

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.auth:

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.auth.key: /config/auth.key

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.readonly: false

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.trust_any_ssl: false

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.basic_auth:

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.enabled: false

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.auth.enabled: false

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.context_path:

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.auth.issuer: test-issuer

2018-10-18 07:58:26,956 [localhost-startStop-1] INFO  web.ConfigService  - registry.name: 172.21.70.22:5000

2018-10-18 07:58:26,958 [localhost-startStop-1] INFO  conf.BootStrap  - auth enabled: false

Oct 18, 2018 7:58:27 AM org.apache.coyote.AbstractProtocol start

INFO: Starting ProtocolHandler ["http-bio-8080"]

Oct 18, 2018 7:58:27 AM org.apache.catalina.startup.Catalina start

INFO: Server startup in 13433 ms



3. docker-registry-web container 기동 확인


[root@k8s-master dockerDir]# docker ps -l

CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES

fc85002eddcf        hyper/docker-registry-web   "start.sh"          17 minutes ago      Up 17 minutes       0.0.0.0:8080->8080/tcp   registry-web

[root@k8s-master dockerDir]#


- 위와 같이 기동이 완려되면 Docker Registry GUI 접속이 가능합니다.


4. Docker Private Registry GUI 접속



- Docker Private Registry를 위해 추가했던 Docker Imager가 저장되어 있는 것을 볼 수 있습니다.


지금까지 Docker Private Registry & GUI(Dashboard) 구축 과정에 대해 살펴보았습니다.

다음시간에는 Kubernetes Worker Node 구축과정 및 Join에 대해 살펴보겠습니다.

그럼 또봐요!



그리드형
댓글
  • 프로필사진 웅아웅아 Private docker 를 설치해봤습니다. 타 vm host 에서 이쪽의 docker image pull 로 땡겨가려면 config.yaml 설정이 필요하긴 하겠네요.
    타 host 에서 docker pulling 해서 잘 받긴 합니다.위 config.yaml 넣어주니까요.

    그리고 제 경우는 registry-web 붙이고 브라우저상에서 띄우면,
    "I/O error on GET request for "http://localhost:5000/v2/_catalog?n=100":Connection refused; nested exception is java.net.ConnectException: Connection refused ... "
    이라고 에러가 뜨더군요.

    기존에 8080 port 를 타 서비스가 occupied 하여
    "docker run -it -p 9999:8080 --name registry-web --link Private-Docker-Regist..." 라고 주었습니다.

    일단 web 까지 굳이 띄워야하나 싶어서 이 정도선에서 멈추긴 했는데 왜 저런 상황인 것인지 궁금합니다.

    오늘도 감사합니다.
    2020.02.18 18:36
  • 프로필사진 웅아웅아 해당 host vm 에 spring-cloud zuul gateway 가 설치돼 있고 그래서 뭔가 쫑이 나는듯요.

    2020-02-19 01:42:43,704 [http-bio-8080-exec-1] ERROR web.RepositoryController - Can't access registry: _catalog?n=100
    org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:5000/v2/_catalog?n=100":Connection refused; nested exception is java.net.ConnectException: Connection refused
    at grails.plugins.rest.client.RestBuilder.invokeRestTemplate(RestBuilder.groovy:312)
    at docker.registry.web.CustomRestBuilder.request(CustomRestBuilder.groovy:22)
    at docker.registry.web.RestService.requestInternal(RestService.groovy:70)
    at docker.registry.web.RestService.request(RestService.groovy:63)
    at docker.registry.web.RestService.get(RestService.groovy:42)
    at docker.registry.web.RepositoryController.index(RepositoryController.groovy:29)
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
    at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.java:59)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.net.ConnectException: Connection refused
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    ... 14 more
    2020.02.19 11:19
댓글쓰기 폼