본문으로 바로가기

도커 이미지 및 도커파일 관리 실습

category MLOps/Docker 2022. 3. 14. 16:22

1. 이미지 백업

1) 현재 모든 이미지를 test.tar 파일로 백업

docker image save test.tar -o XXXX # 태그 생략 시 모든 태크

 

2) 모든 이미지 삭제

docker image prune -a

 

3) test.tar 파일 이용해서 모든 이미지 복원

docker image load -i test.tar

2. 이미지 수정

1) httpd:lastest 이미지를 web 이라는 이름의 컨테이너로 실행

docker container run --name web -d httpd:latest

 

2) web 컨테이너에 쉘을 실행하고 index.html 파일 내용 수정

docker container exec web bash

 

3) 쉘을 종료하고 web 컨테이너를 httpd:custom 이름의 이미지로 생성

docker container commit web httpd:custom

 

4) httpd:custom 이미지를 web02 컨테이너로 실행하고 index.html 파일 내용 확인

docker container run --name web02 -d httpd:custom

3. Dockerfile 사용법

1) centos:7 이미지를 컨테이너로 실행하고 파일시스템 구조만 뽑아서 이미지로 생성

docker container run --name os1 -itd centos:7

docker container export os1 -o FILE

docker image import <file name> <iamge name>​

 

2) Dockerfile 작성하면서 위 이미지를 베이스 이미지로 사용

3) httpd 서비스가 동작하는 이미지 생성 (패키지설치, 서비스 실행, index.html 복사)

echo "test dockerfile" > index.html

vi Dockerfile

"""Dockerfile"""
FROM	base
RUN		yum install -y httpd
CMD		httpd -D FOREGROUND
COPY	index.html /var/www/html/
"""End Dockerfile"""

docker image build -t <docker file name>

 

4) 다음 조건에 맞는 이미지 생성

- testuser 사용자생성

- /mnt 디렉토리를 볼륨으로 설정

- 환경변수 VARS=abc 설정

- 작업디렉토리 /mnt 디렉토리 지정

- 접속 시 사용자를 testuser로 지정

"""Dockerfile"""
FROM	base
RUN		useradd testuser
VOLUME	/mnt
ENV		VARS=abc
WORKDIR	/mnt
USER	testuser
"""End Dockerfile"""

 

5) 지시어

- FROM: 사용할 베이스 이미지 지정

- CMD: 이미지로 컨테이너를 실행하면 동작할 내용 (프로세스)

- ENTRYPOINT: 이미지로 컨테이너를 실행하면 동작할 내용 (프로세스)

- ENTRYPOINT의 우선순위가 더 높음
- 둘 다 설정하면 ENTRYPOINT를 실행하면서 인자값으로 CMD 사용
- 하나만 설정할 경우, CMD만 설정하면 이미지를 실행할 때 명령어 대체 가능; ENTRYPOINT는 명령어 대체 불가능

- RUN: 이미지 생성 전 해야할 작업

 

- COPY: 파일 / 디렉토리를 이미지에 추가 (로컬)

- ADD: 파일 / 디렉토리를 이미지에 추가 (로컬 / 원격)

 

- EXPOSE: 이미지에서 사용하는 포트 지정

- VOLUME: 이미지 자체적으로 볼륨이 필요한 디렉토리 지정

- ENV: 환경 변수

 

- USER: 사용자 이름 지정 (사용자가 만들어진 상태에서 사용)

- WORKDIR: 작업 디렉토리 지정

- SHELL: 컨테이너에서 사용할 기본 쉘

 

- LABEL: 에몯

- ARG: Dockerfile 내부에서 사용할 변수

- ONBUILD: 새로 만든 이미지를 베이스 이미지로 지정할 때 사용할 구문 (예약)

- STOPSIGNAL: 시스템 콜 설정

 

- HEALTHCHECK: 상태 확인

'MLOps > Docker' 카테고리의 다른 글

도커 네트워크  (0) 2022.03.15
도커 볼륨 관리 실습  (0) 2022.03.14
도커 컨테이너 관리 실습  (0) 2022.03.14