docer run 커맨드를 사용하여 이미지를 내려 받으면 이미지는 도커 허브에 저장된다. 하지만 우리가 직접 만든 이미지는 이미지로부터 docker run 커맨드 컨테이너를 만들려면 이미지를 가져올 수 있는 장소가 필요하다. 직접 만든 이미지도 도커 허브에 올릴 수 있으며, 비공개로 사용하는 도커 허브 같은 장소도 만들 수 있다.
이미지를 배포하는 장소를 도커 레지스트리라고 한다. 일반에 공개되어 있든 비공개이든 상관없이 이미지가 배포되는 곳은 모두 도커 레지스트리이다. 도커 허브는 도커 제작사에서 운영하는 공식 도커 레지스트리를 말한다. 아파치나 MySQL, 우분투의 공식 이미지 모두 도커 허브에 ㅊ마여해 도커 허브에서 이미지를 배포한다. 우리가 run 커맨드를 사용할 때 내려 받는 이미지는 이렇게 제공된다.
레지스트리는 이미지를 배포하는 장소이며, 반면 레포지토리는 레지스트리를 구성하는 단위이다. 도커 허브에서는 레포지토리가 각각 ID를 갖게 돼 있다. 따라서 도커 허브는 각각의 회사나 개인이 가진 레지스트리가 여럿 모인 형태가 된다.
이미지에 태그를 부여해 복제하는 커맨드 docker tar (docker image tag)
이미지에 태그를 부여하는 명령어는 다음과 같이 작성한다.
docker tag ${원래 이미지 이름} ${레지스트리 주소}/${레포지토리 이름}:${버전}
이미지를 업로드 하는 커맨드 docker push (docker image push)
docker push 커맨드는 이미지를 업로드하는 커맨드이다. 태그는 레지스트리 주소/레포지토리 이름:버전 과 같이 길어서 알아보기 힘들지만 그 자체로 하나의 이름이다. 또 어느 레지스트리에 업로드할지도 태그로 판단한다. 다시 말해 도커 엔진은 태그에 포함된 레지스트리 주소의 도메인에 있는 레지스트리로 업로드를 시도한다. 레포지토리는 처음 업로드할 때는 존재하지 않는다. push 커맨드를 실해아며 만들어진다.
시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구가 토커 컴포즈이다. 도커 컴포즈는 시스템 구축에 필요한 설정을 YAML(YAML Ain't Markup Language) 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행(run)또는 일괄 종료 및 삭제(down) 할 수 있는 도구이다. 정의 파일에는 컨테이너나 볼륨을 어떠한 설정으로 만들지에 대한 항목이 기재돼 있다. 작성 내용은 도커 명령어와 비슷하지만 도커 명령어는 아니다. 정의 파일(YAML)작성 예는 다음과 같다.
- MySQL 컨테이너: 컨테이너 이름, 인자, 네트워크 등
- 워드프레스 컨테이너: 컨테이너 이름, 인자, 네트워크 등
- Network: 네트워크 이름
- Volume: 볼륨 이름
도커 컴포즈와 Dockerfile 스크립트의 차이점
도커 컴포즈는 텍스트 파일에 기재된 정의를 따라 실행된다. 즉, 도커 컴포즈는 docker run 명령어를 여러개 모아놓은 것과 같다. 컨테이너와 주변 환경을 생성한다. 네트워크와 볼륨까지 함께 만들 수 있다. 반면, dockerfile 스크립트는 이미지를 만들기 위한 것으로 네트워크나 볼륨은 만들 수 없다.
도커 컴포즈 설치
도커 컴포즈를 사용하려면 먼저 설치할 필요가 있다. 도커 컴포즈는 도커 엔진과 별개의 소프트웨어이기 때문이다. 단, 윈도우나 macOS에서 사용하는 도커 데스크톱은 도커 컴포즈가 함께 설치되기 때문에 따로 설치할 필요가 없다. 그러나 리눅스에서는 도커 컴포즈와 파이썬 3 런타임 및 필요 두고 (python3, python3-pip 패키지)를 설치해야 한다. 도커 컴포즈는 파이썬으로 작성된 프로그램이기 때문에 파이썬 런타임이 필요하다. 리눅스에서는 다음과 같이 파이썬 런타임과 도커 컴포즈를 설치한다.
sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose
또한, 도커 컴포즈는 설치가 끝나면 바로 실행 가능한 상태가 된다. 즉, 설치 후 docker-compose 명령을 사용하여 실행한다.
'Study' 카테고리의 다른 글
[Study] 도커 & 쿠버네티스 - Lesson 5 (0) | 2024.11.06 |
---|---|
[Study] 도커 & 쿠버네티스 - Lesson 4 (3) | 2024.11.06 |
[Study] 도커 & 쿠버네티스 - Lesson 3 (0) | 2024.11.05 |
[Study] 도커 & 쿠버네티스 - Lesson 2 (0) | 2024.11.03 |
[Study] 도커 & 쿠버네티스 - Lesson 1 (0) | 2024.11.03 |
WRITTEN BY