안녕하세요. ManVSCloud 김수현입니다.
오늘은 이전 포스팅인 “[NCP] NAVER CLOUD에서 KUBERNETES를 사용해보자 – NKS“에 이어 컨테이너로 이미지를 관리하는 방법을 알아보도록 하겠습니다.
Object Storage 생성
Container Registry를 생성하기 전에 Object Storage가 먼저 생성되어야합니다.
Container Registry에 저장될 컨테이너 이미지는 Object Storage에 저장되기 때문입니다.
이후 Container Registry에 이미지를 저장하고 오브젝트 스토리지에 어떻게 저장되는지도 함께 보도록합시다.

Object Storage 생성은 어렵지 않습니다.
우선 버킷 이름을 적어주고 [다음]을 누릅시다. 참고로 버킷 이름은 유니크한 값으로 이름이 중복될 수 없습니다.

권한은 공개하지 않도록 해두고 계정 설정은 추가적으로 하지 않겠습니다.

버킷 하나가 쉽게 생성이 되었습니다.
Object Storage에 대해 자세히 알고 싶으시다면 아래 사용 가이드도 참고해보시기 바랍니다.
Container Registry 생성

Container Registry를 생성해보겠습니다.
Container Registry 를 이용하면 컨테이너 이미지를 쉽게 업로드 및 배포할 수 있습니다.


[이용 가이드]가 있어 사용하기 쉬운 편입니다.
아래에서 생성한 Container Registry로 이미지 업로드를 해볼 것입니다.
컨테이너 이미지(Dockerfile) 만들기
간단하게 Dockerfile을 만들어보도록 하겠습니다.
vi Dockerfile
FROM centos:7 RUN yum -y update && yum install -y httpd* CMD ["systemctl","restart","httpd"] CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
위에서 생성한 이미지를 아래와 같이 빌드해줍시다.
[root@kubernetes-server-kr2 ~]# docker build -t manvscloud-apache . Sending build context to Docker daemon 179.7kB Step 1/4 : FROM centos:7 7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e Status: Downloaded newer image for centos:7 . . . Complete! Removing intermediate container 47ec6561ff67 ---> 70b6f6999f0d Step 3/4 : CMD ["systemctl","restart","httpd"] ---> Running in fa442e0e6f10 Removing intermediate container fa442e0e6f10 ---> 8196868e79b0 Step 4/4 : CMD ["/usr/sbin/httpd","-D","FOREGROUND"] ---> Running in 0a08c642dcc6 Removing intermediate container 0a08c642dcc6 ---> 2171dc304b08 Successfully built 2171dc304b08 Successfully tagged manvscloud-apache:latest
docker images 명령어로 확인해보면 빌드한 이미지를 확인하실 수 있습니다.
이제 빌드된 이미지를 run 해보도록합시다.
[root@kubernetes-server-kr2 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE manvscloud-apache latest 2171dc304b08 17 seconds ago 517MB centos 7 8652b9f0cb4c 7 months ago 204MB [root@kubernetes-server-kr2 ~]# docker run -tid -p 8080:80 --name manvscloud-apache01 manvscloud-apache 0edc715160a959582dd085f54ec7c384d278648f5377c2cad15816f83a252c7d [root@kubernetes-server-kr2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0edc715160a9 manvscloud-apache "/usr/sbin/httpd -D …" 7 seconds ago Up 6 seconds 0.0.0.0:8080->80/tcp manvscloud-apache01
IP : 8080 또는 서버 내부에서는 curl localhost:8080 로 확인할 수 있습니다.
[root@kubernetes-server-kr2 ~]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 929/sshd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 593/rpcbind tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 40020/docker-proxy tcp6 0 0 :::22 :::* LISTEN 929/sshd tcp6 0 0 :::111 :::* LISTEN 593/rpcbind

이미지 업로드
이제 위에서 생성한 이미지를 Container Registry로 업로드 해보겠습니다.
Container Registry에 업로드 하기위해서 [마이페이지]-[인증키 관리]에서 미리 API 인증키를 생성 해놓으시기 바랍니다.

위에서 생성한 API 키를 이용하여 업로드를 해볼텐데
1) docker login -u [생성한 API Key ID] [생성한 Container Registry의 엔드포인트]를 입력한 후 API Key의 패스워드를 입력하여 로그인을 해줍니다.
2) 이후 docker image tag로 태그를 정해줍시다.
3) 마지막으로 docker push 명령어를 이용하여 아래와 같이 push 해줍니다.
[root@kubernetes-server-kr2 ~]# docker login -u [Access Key ID] manvscloud-k8s-cr.kr.ncr.ntruss.com Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@kubernetes-server-kr2 ~]# docker image tag manvscloud-apache manvscloud-k8s-cr.kr.ncr.ntruss.com/manvscloud-apache:1.0 [root@kubernetes-server-kr2 ~]# docker push manvscloud-k8s-cr.kr.ncr.ntruss.com/manvscloud-apache:1.0 The push refers to repository [manvscloud-k8s-cr.kr.ncr.ntruss.com/manvscloud-apache] d4208dd0734c: Pushed 174f56854903: Pushed 1.0: digest: sha256:b2e60515712f6c5d4f155e9d234299fa82640d8dc7766405fe997c1b80658c07 size: 742
아래 Container Registry가 보이시나요?
push했던 manvscloud-apache 이미지가 업로드 되었습니다.

Object Storage에 들어가서 해당 버킷으로 들어가보면 해당 이미지 파일이 저장되고 있는 것도 확인해볼 수 있습니다.

Personal Comments
요즘 컨테이너 환경을 사용하는 유저가 많이 늘었습니다.
저희 고객님들도 점점 컨테이너화된 어플리케이션 서비스를 구성하는 모습이 자주 보이기 시작합니다.
특히 다수의 컨테이너 사용자들은 퍼블릭 클라우드 환경에서 컨테이너 서비스를 운영중이며 요즘은 하이브리드 클라우드를 상당히 많이 보았습니다.
네이버 클라우드에서는 한국인이 쉽게 접근할 수 있도록 가이드들이 한글로 자세히 안내되고 있어 서비스들을 사용할 때 다른 플랫폼 보다 크게 부담이 느껴지지 않는 점이 가장 좋은 것같습니다.
긴 글 읽어주셔서 감사합니다.
No Comments