이미지를 컨테이너로 실행할 때
해당 이미지의 메타데이터에 있는 Env와 Cmd의 내용을
다른 내용으로 덮어씌워서 컨테이너의 메타데이터로 사용하는 방법은?
목표
--
이미지의 메타데이터에서
기존 Cmd의 값(필드)은 nginx 프로그램을 실행시키는 명령어인데
해당 이미지를 컨테이너로 실행시킬 때
컨테이너의 메타데이터에서 Cmd의 값(필드)을 다른 명령어로 변경시키는 것을 해보자.
목표
Nginx 프로그램을 실행시키는 명령어를
특정 경로에 있는 html파일의 내용을 출력하는 명령어로 변경하기
이미지의 메타데이터 값은 변경되지 않고
실행시킨 컨테이너의 메타데이터 값만 변경된 상태가 된다.
--
시작하기 전에
--
특정 경로에 있는 html 파일의 내용을 출력하는 것이 목표이기 때문에 해당 명령어를 알아보자.
(리눅스의 cat 명령어)
특정 경로에 존재하는 파일의 내용을 출력(실행)시키는 명령어 형식
cat {파일경로}
--
컨테이너를 실행시킴과 동시에 메타데이터 Cmd 덮어씌우기 (변경하기)
--
컨테이너를 (생성 및)실행과 동시에 컨테이너의 메타데이터 Cmd의 값을 변경하는 명령어 형식
docker run [--name 컨테이너명] {이미지명} {컨테이너의 메타데이터 Cmd에 덮어씌울 명령어}
컨테이너의 메타데이터 Cmd에 명령어를 특정 html파일을 출력(실행)하는 명령어로 변경하는 명령어
docker run --name customCmd nginx cat usr/share/nginx/html/index.html
"cat usr.share/ngin/html/index.html"이라는 명령어를 Cmd에 적용하여
컨테이너 실행시 nginx 이미지에 존재하는 index.html 파일을 출력한 것을 볼 수 있다.
+
실행중인 컨테이너를 조회해 보자.
docker ps
방금 실행한 "customCmd" 컨테이너는 존재하지 않고 이전에 실행했던 "defaultCmd" 컨테이너만 조회가 되는 것을 볼 수 있다.
이유는
"customCmd" 컨테이너에서 실행한 cat 명령어는 파일의 내용을 출력하고 바로 종료되는 일회성 프로세스이기 때문에
Cmd에서 지정한 cat 명령어가 종료되는 순간 컨테이너도 함께 종료가 된다.
종료된 컨테이너를 포함하여 모든 컨테이너를 조회하는 명령어
docker ps -a
옵션 설명
-a | all의 약어로 모든 데이터를 의미하는 옵션 (즉, 모든 컨테이너를 조회하게 된다.) |
위 그림에서 출력된 "STATUS"(상태) 부분에서 "Exited"는 종료된 상태를 의미한다.
--
컨테이너를 실행시킴과 동시에 메타데이터 Env 덮어씌우기 (변경하기)
--
컨테이너를 (생성 및)실행과 동시에 컨테이너의 메타데이터 Env의 값을 변경하는 명령어 형식
docker run [--name 컨테이너명] {-e 환경변수명=값} {이미지명}
메타데이터 Env(환경변수)에서 COLOR의 값을 red로 변경하는 명령어
docker run -d --name testApp -e COLOR=red nginx
Env(환경변수)에서 COLOR1, COLOR2의 값을 각각 red, blue로 변경하는 명령어
docker run -d --name testApp -e COLOR1=red -e COLOR2=blue nginx
옵션 설명
-e, --env | env의 약어로 `--env`라고 작성한 옵션과 동일한다. Env의 환경변수 값을 수정할 때 사용한다. |
--
Cmd와 Env의 내용을 한 번에 변경하는 명령어 작성 방법
--
컨테이너를 (생성 및)실행과 동시에 컨테이너의 메타데이터 Cmd와 Env의 값을 변경하는 명령어 형식
docker run [--name 컨테이너명] {-e 환경변수명=값} {이미지명} {Cmd에 덮어씌울 명령어}
--
참고 및 출처
'Docker' 카테고리의 다른 글
컨테이너의 Lifecycle(생명주기) 정리 (+명령어) (0) | 2024.06.14 |
---|---|
다른 사용자의 이미지를 다운로드하기 (+ Env 덮어씌우기) (0) | 2024.06.13 |
이미지 및 컨테이너의 메타데이터를 조회 (명령어) (0) | 2024.06.11 |
이미지의 메타데이터(Metadata)란? (0) | 2024.06.10 |
이미지 관리 + 컨테이너 실행 및 삭제하기 (명령어) (0) | 2024.06.08 |