728x90
728x90

애저(Azure)를 이용하여 도커(Docker)를 구축하고, 도커 이미지를 다른 사람과 공유하여 사용해보기

들어가며

  • 애저(Azure)를 이용하여 구축한 도커(Docker)에서 도커 이미지를 다른 사람과 공유하여 사용해보는 방법에 대해 알아보자.
  • 이 글은 이전 글(https://dev-astra.tistory.com/392)에 이어서 진행된다.

 

실습하기

시나리오 : 도커 이미지를 회사 안의 다른 사람과 공유하여 사용해보기

  1. 회사 안에 서버를 만든다.
    • 서버Local Docker Registry 역할을 한다. 이 서버에 도커 이미지를 업로드한다.
    • 필요한 경우, 팀원들은 이 서버에 접속해서 필요한 파일들을 다운로드 받을 수 있다.
  2. 클라우드를 이용한다.
    • 방법 ①
      • 도커 이미지를 Docker Hub 사이트(https://hub.docker.com/)에 업로드 한다.
      • 팀원들이 Docker Hub 사이트에서 도커 이미지를 다운로드 받아 사용한다.
    • 방법 ②
      • 애저(Azure)의 ACR(Azure Container Registry)에 업로드 한다. (AKS(Azure Kubernetes Service))
      • 팀원들이 해당 ACR에서 도커 이미지를 다운로드 받아 사용한다.

 

(참고) Local Registry vs. Local Repository
  • Local Registry : 로컬 도커를 저장할 수 있는 시스템의 이름
  • Local Repository : 로컬 도커를 저장하는 저장 공간의 이름

 

실습 ① : 회사 안에 서버를 만든다.

  • 다음 명령을 실행하여 @registry@ 라는 도커 이미지를 불러와서 @registry@ 라는 컨테이너를 생성한다. 그리고 현재 도커에서 실행 중인 컨테이너와 존재하는 이미지들을 확인한다.
    • @-d@ 옵션을 사용하여 데몬 모드로 작동시킨다.
    • @-p@ 옵션을 사용하여 포트를 지정한다. 들어오는 포트, 나가는 포트를 @5000@으로 설정한다.
    • @--name@ 옵션을 이용하여 컨테이너의 이름을 @registry@로 설정한다.
$ docker run -d -p 5000:5000 --name registry registry
$ docker ps
$ docker images

 

  • 다음과 같이 파이프(@|@)와 @grep@ 명령어를 이용한 명령을 실행하여 특정한 이름의 이미지만 찾을 수 있다.
$ docker images | grep my-image

 

  • 다음 명령을 실행하여 @my-image:v1.0.0@을 @localhost:5000/my-image:v1.0.0@로 연결 시켜준다.
$ docker tag my-image:v1.0.0 localhost:5000/my-image:v1.0.0

 

  • 다음 명령을 실행하여 생성한 @Registry@ 서버에 도커 이미지를 넣어본다. 이 명령을 실행하면 @my-image:v1.0.0@이 @localhost@로 푸시된다.
    • 다른 사람들은 이 서버(@Registry@)에서 이미지를 가져와 사용할 수 있다.
    • 하지만, 이 방법은 잘 사용되지 않는다. 왜냐하면 서버가 죽으면 그 피해가 크기 때문이다.
$ docker push localhost:5000/my-image:v1.0.0

 

  • 다음 명령들을 실행하여 테스트 해본다.
    • @curl@ 명령어는 인터넷 통신을 아주 심플하게 할 수 있는 리눅스/유닉스 명령어이다.
    • @GET@ 방식으로 해당 주소에 요청한다.
$ curl -X GET http://localhost:5000/v2/_catalog
$ curl -X GET http://localhost:5000/v2/my-image/tags/list

 

실습 ② : 클라우드를 이용한다. (Docker Hub)

  • 도커 허브(Docker Hub) 사이트에 도커 이미지를 업로드해보자.

 

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

 

  • 도커 허브 사이트에 접속한 후, 회원 가입을 하고 로그인을 한다.

도커 허브 사이트에서 회원 가입할 때 사용한 아이디를 확인한다. (devastra)

 

  • 다음 명령을 실행하여 도커 허브에 접속한다. 도커 허브에서 회원 가입했을 때 사용했던 아이디(@Username@)비밀번호(@Password@)를 입력해준다.
$ docker login

 

  • 다음 명령을 실행하여 로컬에 있는 @my-image:v1.0.0@ 이미지를 도커 허브 @devastra@ 계정의 @my-image:v1.0.0@으로 연결시켜준다.
$ docker tag my-image:v1.0.0 devastra/my-image:v1.0.0

 

  • 그리고 다음 명령을 실행하여 로컬도커 이미지(@my-image:v1.0.0@)를 도커 허브 푸시(Push) 해준다.
$ docker push devastra/my-image:v1.0.0

굉장히 빠르게 푸시되는 것을 확인할 수 있다. 도커 허브 서버에 이미 우분투 이미지(베이스)가 있기 때문이다.

 

  • 다음 명령을 실행하여 현재 도커에 실행 중인 이미지를 확인해본다. @devastra/my-image@(도커 허브에 올린 이미지 파일), @my-image@(로컬에 있는 이미지 파일), @localhost:500/my-image@(로컬 서버에 올린 이미지 파일) 모두 @IMAGE ID@가 동일하다. 즉 모두 똑같은 이미지 파일임을 확인할 수 있다.
$ docker images

 

  • 도커 허브 사이트에 가서 @[새로 고침]@ 버튼을 누르면, 다음과 같이 로컬에서 푸시한 도커 이미지 파일을 확인할 수 있다. 
  • @[Public View]@ 버튼을 누르면 @Pull@ 명령어를 확인할 수 있다. 이 주소를 이용하여 로컬에서 업로드 한 도커 이미지를 다른 사람과 공유할 수 있다.

 

실습 ③ : 클라우드를 이용한다. (애저(Azure)의 ACR(Azure Container Registry))

  • 아래의 게시글을 참고한다.

이미지 클릭 : 게시글 바로가기 (https://dev-astra.tistory.com/399)

 

참고 사이트

도커 공식 문서
 

Docker Docs: How to build, share, and run applications

 

docs.docker.com

 

728x90
728x90