
같은 구성의 컨테이너를 여러 개 만들거나, 다른 컴퓨터나 서버로 컨테이너를 이동시켜야 하는 경우들이 있다.
이 때 컨테이너 자체를 그대로 복제할 수는 없기 때문에 컨테이너를 이미지로 변환한 후 추출해서 옮겨야 한다고 한다.
컨테이너를 이미지로 변환시키기 위해서는 commit 커맨드를 이용해야 하고,
컨테이너가 없는 상태에서 이미지를 만들기 위해서는 Dockerfile 스크립트를 이용해야 한다.
commit 커맨드
- 컨테이너 -> 이미지 변환
- 기존 컨테이너를 복제하거나 이동해야 할 때 편리
- docker commit 컨테이너_이름 새로운_이미지_이름
[실습해보기 - Apache]
1️⃣ 아파치 컨테이너 생성
docker run --name apa000ex22 -d -p 8092:80 httpd
- docker (container) run : 도커 이미지를 내려받고 컨테이너를 생성해 실행함 (docker image pull, docker container create, docker container start 3개의 명령어를 하나로 합친 것과 같음)
- -- name apa000ex22 : 컨테이너 이름. 원하는 대로 지어도 됨.
- - d : 백그라운드 실행. detach.
- - p 8092:80 : 포트 번호 지정. publish. 호스트의 8092번 포트와 컨테이너의 80번 포트를 연결함.
- httpd : Apache 컨테이너의 이미지 이름

- docker ps (= docker container ls) : 컨테이너 목록 출력
2️⃣ 컨테이너 -> 이미지 변환 (commit) 및 확인
docker commit apa000ex22 ex22_original1
- docker commit : 도커 컨텐이너를 이미지로 변환
- apa000ex22 : 컨테이너 이름
- ex22_original1 : 생성할 이미지 이름

- docker image ls : 이미지 목록 출력
Dockerfile 스크립트
- Dockerfile 스크립트를 빌드해 이미지 생성
- Dockerfile 스크립트에는 토대가 될 이미지나 실행할 명령어 등을 작성한다.
- 재료 폴더에 Dockerfile과 이미지의 재료들, 컨테이너에 넣을 파일을 함께 두고 빌드한다.
- docker build -t 생성할_이미지_이름 재료_폴더_경로
- Dockerfile 스크립트 예시
FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...
- 주요 Dockerfile 인스트럭션
Dockerfile 인스트럭션 | 내용 |
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 | 컨테이너 헬스체크 방법을 커스터마이징 |
[실습해보기 - Apache]
1️⃣ 재료 폴더에 재료 준비
'apa_folder' 이름의 폴더 안에 index.html 파일 배치하기
2️⃣ Dockerfile 스크립트 작성
※ 파일 이름은 'Dockerfile'이어야 한다!! DockerFile (X) dockerfile (X)
※ 파일 확장명이 보이도록 설정했을 때 .txt 확장명이 없어야 한다.


3️⃣ 이미지 빌드 및 확인
docker build -t ex22_original2 C:\Users\heoyu\Documents\apa_folder
- docker (image) build : 도커 이미지 생성
- -t : 특수 키를 사용 가능하도록 함. tty.
- ex22_original2 : 생성할 이미지 이름
- C:\Users\(사용자명)\Documents\apa_folder : 재료 폴더 경로

- docker image ls : 이미지 목록 출력
참고 자료
📓 그림과 실습으로 배우는 도커 & 쿠버네티스
그림과 실습으로 배우는 도커 & 쿠버네티스: 개념과 작동 원리가 쏙쏙 이해되는 완벽 입문서
컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서! 이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서입니다. 자
wikibook.co.kr

같은 구성의 컨테이너를 여러 개 만들거나, 다른 컴퓨터나 서버로 컨테이너를 이동시켜야 하는 경우들이 있다.
이 때 컨테이너 자체를 그대로 복제할 수는 없기 때문에 컨테이너를 이미지로 변환한 후 추출해서 옮겨야 한다고 한다.
컨테이너를 이미지로 변환시키기 위해서는 commit 커맨드를 이용해야 하고,
컨테이너가 없는 상태에서 이미지를 만들기 위해서는 Dockerfile 스크립트를 이용해야 한다.
commit 커맨드
- 컨테이너 -> 이미지 변환
- 기존 컨테이너를 복제하거나 이동해야 할 때 편리
- docker commit 컨테이너_이름 새로운_이미지_이름
[실습해보기 - Apache]
1️⃣ 아파치 컨테이너 생성
docker run --name apa000ex22 -d -p 8092:80 httpd
- docker (container) run : 도커 이미지를 내려받고 컨테이너를 생성해 실행함 (docker image pull, docker container create, docker container start 3개의 명령어를 하나로 합친 것과 같음)
- -- name apa000ex22 : 컨테이너 이름. 원하는 대로 지어도 됨.
- - d : 백그라운드 실행. detach.
- - p 8092:80 : 포트 번호 지정. publish. 호스트의 8092번 포트와 컨테이너의 80번 포트를 연결함.
- httpd : Apache 컨테이너의 이미지 이름

- docker ps (= docker container ls) : 컨테이너 목록 출력
2️⃣ 컨테이너 -> 이미지 변환 (commit) 및 확인
docker commit apa000ex22 ex22_original1
- docker commit : 도커 컨텐이너를 이미지로 변환
- apa000ex22 : 컨테이너 이름
- ex22_original1 : 생성할 이미지 이름

- docker image ls : 이미지 목록 출력
Dockerfile 스크립트
- Dockerfile 스크립트를 빌드해 이미지 생성
- Dockerfile 스크립트에는 토대가 될 이미지나 실행할 명령어 등을 작성한다.
- 재료 폴더에 Dockerfile과 이미지의 재료들, 컨테이너에 넣을 파일을 함께 두고 빌드한다.
- docker build -t 생성할_이미지_이름 재료_폴더_경로
- Dockerfile 스크립트 예시
FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...
- 주요 Dockerfile 인스트럭션
Dockerfile 인스트럭션 | 내용 |
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 | 컨테이너 헬스체크 방법을 커스터마이징 |
[실습해보기 - Apache]
1️⃣ 재료 폴더에 재료 준비
'apa_folder' 이름의 폴더 안에 index.html 파일 배치하기
2️⃣ Dockerfile 스크립트 작성
※ 파일 이름은 'Dockerfile'이어야 한다!! DockerFile (X) dockerfile (X)
※ 파일 확장명이 보이도록 설정했을 때 .txt 확장명이 없어야 한다.


3️⃣ 이미지 빌드 및 확인
docker build -t ex22_original2 C:\Users\heoyu\Documents\apa_folder
- docker (image) build : 도커 이미지 생성
- -t : 특수 키를 사용 가능하도록 함. tty.
- ex22_original2 : 생성할 이미지 이름
- C:\Users\(사용자명)\Documents\apa_folder : 재료 폴더 경로

- docker image ls : 이미지 목록 출력
참고 자료
📓 그림과 실습으로 배우는 도커 & 쿠버네티스
그림과 실습으로 배우는 도커 & 쿠버네티스: 개념과 작동 원리가 쏙쏙 이해되는 완벽 입문서
컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서! 이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서입니다. 자
wikibook.co.kr