728x90
반응형
컨테이너로 이미지를 만들어보자.
이 방법은 컨테이너를 다른 환경에 복제하기 위해 사용된다.
컨테이너로 이미지를 만드는 방법
- 이미 존재하는 컨테이너를 이용하면, 누구나 쉽게 이미지를 만들 수 있다.
- commit 명령어로 기존 컨테이너를 이미지로 변환하거나, Dockerfile 스크립트로 이미지를 만드는 방법이다.
1. commit 명령어로 컨테이너를 이미지로 만들기
- 컨테이너만 있으면 명령어 한 번으로 이미지를 만들 수 있어 간편하다.
- 하지만, 이미지를 만들려면 컨테이너를 먼저 만들어야 한다.
- 기존 컨테이너를 복제하거나 이동해야 할 때 편리하다.
- 자주 사용되는 명령어 예: docker commit 컨테이너_이름 새로운_이미지_이름
2. Dockerfile 스크립트로 이미지 만들기
- Dockerfile 스크립트를 작성하고 이 스크립트를 빌드해 이미지를 만드는 방법이다.
- Dockerfile은 오직 이미지 만드는 용도 말곤 없다.
- dockerfile 스크립트에는 토대가 될 이미지나 실행할 명령어 등을 기재한다.
- 편집은 메모장 같은 텍스트 에디터를 사용한다.
- 이 스크립트 파일을 호스트 컴퓨터의 이미지 재료가 들어있는 폴더에 넣는다.
- 재료 폴더에는 스크립트 파일 외에도, 컨테이너에 넣을 파일들을 함께 둔다.
- 만들어질 이미지를 통해, 생성될 컨테이너에 넣을 파일들
- 자주 사용되는 명령어 예: docker build -t 생성할_이미지_이름 재료_폴더_경로
Dockerfile 스크립트 예
01 FROM 이미지_이름
02 COPY 원본_경로 대상_경로
03 RUN 리눅스_명령어
04 ...
- FROM 뒤에 이미지 이름을 기재, 그 뒤로는 파일 복사 또는 명령어 실행 등 컨테이너를 대상으로 할 일을 기술한다.
- Dockerfile 스크립트에 사용되는 주요 인스트럭션 중 초보자는 FROM, COPY, RUN 정도만 알아도 충분하다.
인스트럭션 | 내용 |
FROM | 토대가 되는 이미지를 지정 |
ADD | 이미지에 파일이나 폴더를 추가 |
COPY | 이미지에 파일이나 폴더를 추가 |
RUN | 이미지를 빌드할 때 실행할 명령어를 지정 |
CMD | 컨테이너를 실행할 때 실행할 명령어를 지정 |
ENTRYPOINT | 컨테이너를 실행할 때 실행할 명령어를 강제 지정 |
ONBUILD | 이 이미지를 기반으로 다른 이미지를 빌드할 때 실행할 명령어를 지정 |
EXPOSE | 이미지가 통신에 사용할 포트를 명시적으로 지정 |
VOLUME | 퍼시스턴시 데이터를 저장할 경로를 명시적으로 지정 |
ENV | 환경변수를 정의 |
WORKDIR | RUN, CMD, ENTRYPOINT, ADD, COPY에 정의된 명령어를 실행하는 작업 디렉터리를 지정 |
SHELL | 빌드 시 사용할 셸을 변경 |
LABEL | 이름이나 버전, 저작자 정보를 설정 |
USER | RUN, CMD, ENTRYPOINT에 정의된 명령어를 실행하는 사용자 또는 그룹을 지정 |
ARG | docker build 명령어를 사용할 때 입력받을 수 있는 인자를 선언 |
STOPSIGNAL | docker stop 명령어를 사용할 때 컨테이너 안에서 실행 중인 프로그램에 전달되는 시그널을 변경 |
HEALTHCHECK | 컨테이너 헬스체크 방법을 커스터마이징 |
commit 명령어로 컨테이너를 이미지로 직접 변환해보자.
의미는 없으나, 연습으로 아파치 컨테이너 그대로를 이미지로 변환한다.
실습 내용
생성할 이미지 정보 및 명령어
항목 | 값 |
컨테이너 이름 | apa00ex22 |
새로 만들 이미지 이름 | ex22_original1 |
- 컨테이너를 이미지로 변환하는 명령어: docker commit apa00ex22 ex22_original1
0. 아파치 컨테이너 준비
- 터미널 창에 입력할 명령어: docker run --name apa00ex22 -d -p 8092:80 httpd
1. 컨테이너를 변환해 새로운 이미지 생성
- commit 명령어를 사용해 apa00ex22 컨테이너로부터 새로운 이미지를 만들자
- 터미널 창에 입력할 명령어: docker commit apa00ex22 ex22_original1
2. 이미지가 생성됐는지 확인
- 터미널 창에 입력할 명령어: docker image ls
Dockerfile 스크립트로 이미지를 직접 만들어보자.
실습 내용
새로 만들 이미지의 정보 및 명령어
항목 | 값 |
기반 이미지 이름 | httpd |
새로 만들 이미지 이름 | ex22_original2 |
재료 폴더의 경로(Windows) | C:\Users\사용자명\Documents\apa_folder |
재료 폴더의 경로(macOS) | /Users/사용자명/apa_folder |
재료 폴더의 경로(linux) | /home/사용자명/apa_folder |
- Dockerfile 스크립트로 이미지 밀드 명령어: docker build -t ex22_original2 재료_폴더_경로
- Dockerfile 스크립트의 내용
인스트럭션 | 값 |
FROM | httpd |
COPY | index.html /usr/local/apache2/htdocs |
- 복사할 원본 경로는 상대 경로로 작성가능하여, 꼭 C:\Users\~ 로 시작하는 절대경로가 아니여도 된다.
1. 재료 폴더에 넣을 재료 준비
- apa_folder 생성하고, 이 폴더 안에 index.html 파일을 배치한다.
2. Dockerfile 스크립트 작성
- 아래 예제와 같이, Dockerfile 스크립트를 작성한다.(메모장 같은 텍스트 에디터 이용, linux는 nano에디터 이용)
- 파일 이름은 Dockerfile, 확장자는 없앤다.
- Dockerfile 작성 예(Windows/macOS/Linux 공용)
- 01 FROM httpd
- 02 COPY index.html /usr/local/apache2/htdocs
3. build 명령어로 이미지 빌드
- 터미널 창에 입력할 명령어
- Windows: docker build -t ex22_original2 C:\Users\사용자명\Documents\apa_folder
- macOS: docker build -t ex22_original2 /Users/사용자명/Documents/apa_folder
- Linux: docker build -t ex22_original2 /home/사용자명/Documents/apa_folder
4. 이미지가 생성됐는지 확인
- image ls 명령어로 이미지가 생성됐는지 확인한다.
5. 뒷정리
- 이미지 삭제: docker image rm ~~~
- 이미지 목록 확인: docker image ls
이미지를 옮기는 방법
- 컨테이너는 먼저 이미지로 변환하지 않으면 옮기거나 복사할 수 없다.
- 하지만 이미지 역시 이미지 상태 그대로는 옮기거나 복사할 수 없다.
- 따라서 도커 레지스트리를 통하거나 save를 사용해 tar 포맷으로 도커 엔진의 관리 영역 밖으로 내보내야 한다.
- 이렇게 되면, 파일은 호스트 컴퓨터의 파일 시스템에 생성되고, 다시 도커 엔진에 가져오려면 load 명령어 사용!
- tar 파일 생성: docker save -o 파일_이름.tar 이미지_이름
728x90
'docker & kubernetes' 카테고리의 다른 글
컨테이너 사용법 7 | Docker&Kubernetes 학습 30 (1) | 2024.12.11 |
---|---|
컨테이너 사용법 6 | Docker&Kubernetes 학습 29 (3) | 2024.12.03 |
컨테이너 사용법 4 | Docker&Kubernetes 학습 27 (0) | 2024.11.30 |
컨테이너 사용법 3 | Docker&Kubernetes 학습 26 (0) | 2024.11.29 |
컨테이너 사용법 2 | Docker&Kubernetes 학습 25 (2) | 2024.11.28 |