TIL

Week3 도커 이미지

비아 VIA 2021. 9. 3. 09:10

도커 허브

도커엔진에서 기본적으로 참조하는 이미지 저장소

 

컨테이너는 ip가 독립적으로 존재. 

버전을 다르게 하는 것 - 이미지에 태깅 한다. 

sudo docker image pull ubuntu:latest 

ubuntu: 이미지

latest: 태그

이미지를 pull 할때 tag 명시하지 않으면 latest

 

Digest: 도커 허브와 같은 레지스트리(이미지 저장소)에 업로드 될 당시에 등록된 고유 id

도커 이미지 확인 docker image ls

개별 이미지 정보 확인 docker image inspect ubuntu:18.04

개별 이미지 중 일부 정보만 확인 docker image inspect --format="{{ .RepoTags }}" ubuntu:18.04

도커허브에 이미지 올리는 양식 docker image tag ubuntu:18.04 사용자명/이미지명:태그

이미지 삭제 docker image rm ubuntu:18.04

 

docker hub에서 이미지를 받아오는 것 말고 도커 엔진에서 운영중인 컨테이너를 이미지로 만들 수 있음.

도커 이미지 만들기 docker container commit -a "dev4" apache dev4/apache-web:1.0

-a [사용자명] [컨테이너명] [생성할 이미지 명]

이미지를 파일 형식으로 내보내기 docker container export apache > apache.tar 

내보낸 이미지를 가져다가 사용하기 docker image import apache.tar dev4/apacheweb:1.1(생성하고자하는 레퍼지토리이름, 버전)

 

Dockerfile

도커파일에 베이스 이밎, 미들웨어, 환경변수, 데몬 실행 등의 정보를 담음

Build: 도커 파일을 통해 이미지 생성

도커파일은 베이스 이미지로부터 출발(ex. ubuntu), 레이어들이 쌓임

From ubuntu:18.04 -> 베이스 이미지

Run apt-get update -y -> 레이어 1

Run apt-get upgrade -y -> 레이어 2

이미지가 빌드 될 당시에 위의 명령어들이 실행됨

docker build -t myubuntu:1.0 . [레퍼지토리명:태그명] [Dockerfile의 경로]

ubuntu:18.04 를 기존에 썼다면 캐싱 가능.

 

Dockerfile 명령어

RUN

이미지를 빌드할 때 실행되는 명령. 컨테이너가 실행되기 전 단계

CMD

이미지를 통해 생성된 컨테이너 내부에서 실행되는 명령

하나의 Dockerfile에는 단 할줄의 CMD 명령

만약에 여러개라면 마지막 명령만 유효

Exec 형식, shell 형식이 있음

ENTRYPOINT

이미지를 통해 생성된 컨테이너 내부에서 실행되는 명령

 

CMD 와 ENTRYPOINT의 차이

CMD는 Dockerfile에서 정의했더라도 run 하는 시점에 기존의 설정을 덮어쓰기 할 수 있음

ENTRYPOINT는 run과 상관없이 무조건 명령을 수행함

두 명령은 상황에 맞게 혼용할 수 있음

 

ONBUILD

이미지 빌드가 완료된 후에 실행되는 명령

내가 빌드한 이미지를 베이스 삼아 새로운 이미지를 만들때

 

HEALTHCHECK

컨테이너의 작동상태 체크

 

ENV

환경변수 설정

 

WORKDIR

작업 디렉토리 할당

 

USER

유저 할당

 

LABEL

이미지 버전 정보, 작성자 등의 레이블 지정

 

EXPOSE

포트 할당

 

ARG

Dockerfile 내부의 변수 할당

 

SHELL

기본 쉘 할당

 

ADD

파일 및 디렉토리 추가

 

COPY

파일 복사

 

VOLUME

볼륨 할당

'TIL' 카테고리의 다른 글

[삽질기록] Unit test 자동화하기 step2  (0) 2021.09.11
도커 레지스트리  (0) 2021.09.06
[삽질 기록] Unit test 자동화하기 step1  (1) 2021.08.27
week2 도커엔진  (0) 2021.08.19
도커 기초 week 1  (0) 2021.08.11