-
[Docker/도커] #1 이미지 다루기Docker 2020. 1. 12. 04:26
Docker 이미지
도커 이미지는 운영 체제로 구성된 파일 시스템, 애플리케이션과 의존 라이브러리, 실행 환경의 설정 정보를 포함한 아카이브입니다. Dockerfile 자체가 도커 이미지를 의미하는 것은 아니며, 도커 이미지 구성을 설명하는 코드라고 생각하면 됩니다.
도커 이미지는 컨테이너를 만들기 위한 템플릿입니다.
1. 이미지 검색 : docker search
$ docker search [options] 검색_키워드
도커 허브(Docker Hub)는 도커 이미지 레지스트리로, github처럼 리포지토리를 만들고 이를 통해 도커 이미지를 관리할 수 있습니다.
도커 허브에는 모든 이미지의 기반이 되는 운영체제 리포지토리, 언어 런타임이나 유명 미들웨어 이미지 등이 관리되는 수많은 리포지토리가 있습니다. 이러한 도커 허브를 터미널에서 활용하기 위한 명령어가 docker search 명령어입니다. 이를 이용하면 도커 허브에 등록된 리포지토리를 검색할 수 있습니다.
jenkins와 관련된 리포지토리가 있는지 검색해 보겠습니다.
$ docker search --limit 5 jenkins
홈페이지에서도 리포지토리 검색이 가능합니다. 홈페이지에서 jenkins를 검색해보겠습니다.
2. 이미지 내려받기 : docker image pull
$ docker image pull [options] 레포지토리명[:태그명]
도커 레지스트리에서 도커 이미지를 내려받으려면 docker image pull 명령어를 사용하면됩니다.
docker search로 검색해서 나왔던 jenkins 도커 이미지를 내려받아 보겠습니다.
$ docker image pull jenkins:latest
3. 보유한 도커 이미지 목록 보기 : docker image ls
$ docker image ls [options] [리포지토리[:태그]]
현재 보유하고 있는 이미지들을 확인해보겠습니다.
$ docker image ls
4. 이미지에 태그 붙이기 : docker image tag
$ docker image tag 기반이미지명[:태그] 새이미지명[:태그]
도커 이미지에 붙은 태그는 이미지의 특정 버전을 구분합니다. 도커 IMAGE ID의 값은 이미지마다 다르게 할당된 식별자로 이미지를 구별하기 위해 사용됩니다. 이러한 IMAGE ID는 도커 이미지의 버전 넘버 역할을 하며, 애플리케이션 수정 후 이미지를 빌드하면 다른 이미지가 됩니다. 이때 IMAGE ID 값은 새로운 값으로 할당됩니다.
도커 이미지 버전이 곧 IMAGE ID 값이다. IMAGE ID에 별명을 붙인 것이 TAG입니다.. docker image tag 명령어를 통해 tag를 설정할 수 있습니다. tag는 특정 IMAGE ID를 쉽게 식별하기 위한 목적을 가집니다.
새롭게 태그를 생성해보겠습니다.
기존 이미지 목록을 확인합니다.
$ docker image ls
다운로드하였던 jenkins 이미지의 태그를 새롭게 부여해보겠습니다.
$ docker image tag jenkins:latest uplsh580/jenkins:1.0.0
기존의 jenkins:latest 이미지와 uplsh580/jenkins:1.0.0 이미지의 IMAGE ID 값이 같은 걸 봐서 모두 같은 이미지를 가리키고 있음을 알 수 있다.
5. 이미지 삭제하기 : docker image rm | docker rmi
$ docker image rm 이미지ID[:태그]_혹은_이미지명[:태그]
$ docker rmi 이미지ID[:태그]_혹은_이미지명[:태그]
필요가 없는 이미지를 docker image rm 명령어를 통해 삭제할 수 습니다.
위에서 만들었던 uplsh580/jenkins:1.0.0을 삭제해보겠습니다.
6. 이미지 빌드하기 : docker image build
$ docker image build -t 이미지명[:태그명] Dockerfile의_경로
docker image build 명령어는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령어입니다.
알아둘 만한 옵션들
- -t 이미지명[:태그명] : 이미지명과 태그명을 붙이는 옵션으로, 실제 사용에서 거의 필수적으로 사용됩니다.
- -f 파일명 : 이미지 빌드시, Dockerfile이라는 이름의 파일을 기본적으로 적용하는데 다른 이름의 파일을 적용할 때 사용하는 옵션입니다.
- --pull : 이미지를 빌드하려면 Dockerfile의 FROM 인스트럭션에 지정한 이미지를 레지스트리에서 내려받은 후, 이를 베이스 이미지로 새로운 이미지를 빌드합니다. 이렇게 받은 이미지는 삭제하지 않는 한 호스트 운영 체제에 저장됩니다. 그래서 이미지를 빌드할 때 매번 베이스를 내려받지 않습니다. 하지만 이 옵션을 사용하면 매번 베이스 이미지를 강제로 새로 받아옵니다.
Dockerfile 작성법은 나중에 따로 다루도록 하겠습니다.
7. 이미지 외부에 공개하기 : docker image push
$ docker image push [option] 리포지토리명[:태그]
docker image push 명령은 현재 저장된 도커 이미지를 도커 허브 등의 레지스트리에 등록하기 위해 사용됩니다.
도커 이미지를 내려받을 때는 그냥 받을 수 있지만, 공개할 때는 로그인을 해야 합니다.
도커 허브(Docker Hub)에서 계정을 생성합니다.
이후, 아래 명령어를 통해 로그인을 합니다.
$ docker login -u 도커_id -p 패스워드
위에서 만들었던 uplsh580/jenkins:1.0.0을 공개해보겠습니다.
$ docker image push uplsh580/jenkins:1.0.0
도커 허브(Docker Hub)에 해당 이미지가 올라와 있음을 확인할 수 있습니다.
참고자료
- 야마다 아키노리, 심효섭 [역]. 도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문. n.p.: 위키북스; n.d. 48-61 p.
'Docker' 카테고리의 다른 글
[Docker/도커] #2 컨테이너 다루기 (0) 2020.01.16