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 |