도커 이미지 다루기
도커 사용법은 크게 이미지를 대상으로 하는 것과 컨테이너를 대상으로 하는 것으로 나뉩니다.
따라서 우리는 도커 이미지를 다루는 법과 도커 컨테이너를 다루는 법에 익숙해져야 합니다.
그 전에 도커 이미지가 구체적으로 무엇인지 알아보겠습니다.
한 마디로 말하면 도커 이미지는 도커 컨테이너를 만들기 위한 템플릿
입니다.
도커 이미지는 우분투 같은 운영 체제로 구성된 파일 시스템은 물론, 컨테이너 위에서 실행하기 위한 애플리케이션이나 그 의존 라이브러리, 도구에 어떤 프로세스를 실행할지 등의 실행 환경의 설정 정보까지 포함하는 아카이브
docker image build - 이미지 빌드
docker image build는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령입니다.
docker image build -t 이미지명[:태그명] Dockerfile의 경로
- -t 옵션 : 이미지명과 태그명을 붙이는 것으로, 실제 사용에서 거의 필수적으로 쓰인다.
- -f옵션 : Dockerfile 이름을 지정해줄 때 사용한다.
- docker image build는 기본으로 Dockerfile이라는 이름으로 된 Dockerfile을 찾는데, 그 외 파일으로 된 Dockerfile을 사용하려면 이 옵션을 사용해야 한다.
$ docker image build -f Dockerfile-test -t example/hello:latest .
- —pull 옵션 : FROM 인스트럭션에 지정된 이미지를 매번 강제로 새로 받아온다.
- docker image build 명령으로 이미지를 빌드하면 Dockerfile의 FROM 인스트럭션에 지정한 이미지를 레지스트리에서 내려받은 후, 이를 베이스 이미지로 해서 새로운 이미지를 빌드한다. 이렇게 레지스트리에서 받아온 도커 이미지는 호스트 운영 체제에 저장되는데, 일부러 삭제하지 않는 한 이 저장된 이미지를 사용하게 된다. (베이스 이미지 캐시가 있으면, 도커는 변경된 부분만을 반영해 빌드를 시도함)
$ docker image build --pull=true -t example/hello:latest .
docker search - 이미지 검색
docker search 명령을 사용하면 도커 허브에 등록된 레파지토리를 검색할 수 있습니다.
docker search [options] 검색_키워드
$ docker search --limit 5 mysql
docker image pull - 이미지
도커 레지스트리에서 도커 이미지를 내려받으려면 docker image pull 명령을 사용해야 합니다.
docker image pull [options] 레파지토리명[:태그명]
$ docker image pull jenkins:latest
docker image pull 명령으로 내려받은 이미지는 그대로 도커 컨테이너를 생성하는 사용할 수 있음
docker image ls - 보유한 도커 이미지 목록 보기
docker image ls 는 현재 호스트 운영 체제에 저장된 도커 이미지의 목록을 보여 줍니다. (여기서의 호스트 운영체제는 도커 데몬이 동작하는 호스트 환경을 뜻함)
⇒ docker image pull, docker image build 명령을 실행하여 내려받은 모든 이미지는 호스트 운영 체제에 저장 됩니다.
docker image ls [options] [레포지토리[:태그]]
$ docker image ls
docker image tag - 이미지 태그 붙이기
docker image tag는 도커 이미지의 특정 버전에 태그를 붙일때 사용합니다.
도커 이미지의 버전
docker image ls 에서 IMAGE_ID 는 도커 이미지의 버전 넘버 역할을 합니다. 그렇기 때문에 애플리케이션을 수정하고 이미지를 재빌드하면 매번 새로운 IMAGE_ID를 갖는 이미지가 생성이됩니다.
REPOSITORY와 TAG 칼럼을 보면 최신 이미지가 example/hello:latest 이고 그 이전의 이미지는 이라고 되어있는 것을 볼 수 있습니다. 은 이전에 example/image 였던 도커 이미지의 잔재라고 볼 수 있습니다. 도커에서 태그 하나에 연결될 수 있는 이미지는 하나뿐이기 때문에 latest(최신 이미지에 붙는 태그)태그를 붙여서 빌드를 하면 그 보다 오래된 이미지는 태그가 해제됐기 때문에 이 됩니다.
이미지 ID에 태그 부여하기
자 그러면 도커 이미지 버전의 정체는 실제로 이미지 ID란 것을 알았습니다. 다시 말하면 docker image tag는 이미지 ID에 태그명을 별명으로 붙이는 명령인 셈입니다. 그러니까 도커 이미지의 태그는 '어떤 특정 이미지 ID를 갖는 도커 이미지를 쉽게 식별하는 것'을 목적으로 합니다. (어떤 애플리케이션의 특정 버전을 지원하는 이미지임을 나타내는 릴리즈 번호를 붙여서 이미지를 쉽게 관리하기 위해 사용할 수 있음)
⇒ latest 태그는 git의 master 브랜치와 같은 의미로, 항상 최신 이미지를 가리키는 태그입니다.
docker image tag 기반이미지명[:태그] 새이미지명[:태그]
example/hello 의 latest 이미지에 0.1.0 태그를 부여하려면 다음과 같이 하면 됩니다.
$ docker image tag example/hello:latest example/hello:0.1.0
docker image push - 이미지를 외부에 공개하기
docker image push 명령은 현재 저장된 도커 이미지를 도커 허브 등의 레지스트리에 등록하기 위해 사용합니다.
docker image push [options] 레파지토리명[:태그]
도커 허브에 생성한 이미지를 푸쉬해 볼건데요. 그러기위해서는 일단 도커 허브에 계정을 생성해야합니다.
https://hub.docker.com/ 에 들어가면 계정을 쉽게 생성할 수 있습니다.
도커 허브는 자신 혹은 소속 기관이 소유한 레파지토리에만 이미지를 등록할 수 있기 때문에, 네임스페이스를 도커 허브 ID로 변경해야 합니다.
기존에 빌드한 이미지의 네임스페이스를 변경합니다.
$ docker image tag example/hello:latest sunghyunk/hello:latest
그 후 docker image push 명령어를 사용하여 이미지를 등록합니다.
$ docker image push sunghyunk/hello:latest
무사히 등록이 완료되면 sha256 해시값이 출력됩니다. 도커 허브로 돌아가면 조금 전 등록한 이미지의 레파지토리가 생성된 것을 볼 수 있으며 이 레파지토리는 누구나 docker image pull 명령으로 이미지를 내려받을 수 있습니다.!!
'프로그래밍 노트 > 도커' 카테고리의 다른 글
도커 컴포즈(docker-compose) 네트워크 (0) | 2021.01.17 |
---|---|
도커살펴보기_도커 컨테이너 다루기 (0) | 2021.01.17 |
도커살펴보기_컨테이너로 애플리케이션 실행하기 (0) | 2021.01.15 |
[docker] 데이터 볼륨, 데이터 볼륨 컨테이너 (0) | 2020.12.30 |
[docker] 안쓰는 도커 이미지 및 컨테이너 삭제 (0) | 2020.12.29 |