컨테이너의 생애는 docker container run, stop, rm 만 있으면 된다.
도커 컨테이너의 생애는 생성, 실행, 정지, 삭제 이다. 이와 관련된 명령어인 docker container run, stop, rm 을 알아보자.
[root@host ~]# docker container run (옵션) 대상 (인자)
docker container run 은 docker image pull, docker container create, start 를 합친 명령어 이다. 명령어의 대상 은 이미지 명 이 들어간다. 옵션에는 --name, -p, -v 등을 사용할 수 있고, 데몬 형태로 동작하는 소프트웨어의 컨테이너 는 -dit 를 사용하는 것이 일반적이다.
옵션 | 내용 |
---|---|
--name | 컨테이너 이름을 지정함 |
-p 호스트 포트번호:컨테이너 포트번호 | 포트 번호를 지정 |
-v 호스트 디스크:컨테이너 디렉터리 | 볼륨을 마운트함 |
--net=네트워크 이름 | 컨테이너를 네트워크에 연결 |
-e 환경번수 이름=값 | 환경변수를 설정함 |
-d --detach | 백그라운드로 실행 |
-i | 컨테이너에 터미널을 연결함 |
-t | 특수 키를 사용 가능하도록 함 |
Tip. 한번만 실행되는 컨테이너 vs 데몬 형태로 동작하는 컨테이너
-d 는 컨테이너를 백그라운드에서 실행, -it 는 컨테이너 내부에 터미널로 접속 하기 위해 사용한다. -d를 쓰지 않으면 컨테이너가 프로그램 실행을 마칠때까지 터미널 제어를 차지하고, -it를 쓰지 않으면 컨테이너 안의 파일 시스템에 접근이 불가하다.
한번만 실행되는 컨테이너의 경우, 실행하자마자 종료되므로 터미널 제어를 차지해도 일시적이며 파일 시스템에 접근할 이유도 없으므로 옵션 사용이 불필요하다.
실행된 프로그램이 저절로 종료되지 않는 컨테이너의 경우, 데몬으로 사용하기위해 -d를 사용해야한다.데몬 이란 백그라운드에서 항상 동작하는 프로그램 을 의미한다.
[root@host ~]# docker container stop 컨테이너_이름(대상)
[root@host ~]# docker container rm 컨테이너_이름(대상)
docker container stop 은 컨테이너를 정지, docker container rm 은 컨테이너를 삭제 하는 명령어이다. 정지 상태가 아닌 컨테이너를 대상으로 삭제를 실행하면 오류가 발생한다.
컨테이너 목록 확인 은
docker ps = docker container ls
명령어를 사용한다.
도커 상의 컨테이너 리스트를 확인 하는 명령어는 docker ps
이다. 옵션 미사용 시에는 실행 중인 컨테이너 목록 을, -a 옵션 사용 시에는 모든 컨테이너 목록을 출력 한다.
출력된 목록의 주요 컬럼은 다음의 의미를 갖고 있다.
컬럼 | 내용 |
---|---|
IMAGE | 컨테이너 생성 시 사용한 이미지 이름 |
CREATED | 컨테이너 생성 후 경과된 시간 |
STATUS | 현재 상태, 실행 중이면 'Up', 종료된 상태면 'Exited' |
PORTS | 컨테이너에 할당된 포트 번호, '호스트 포트 번호 -> 컨테이너 포트 번호' 형식으로 출력 |
NAMES | 컨테이너 이름 |
아파치 HTTP 서버(오픈소스 웹 서버 프로그램) 이미지로 컨테이너의 생애를 실습해보자. httpd 는 아파치 HTTP 서버 프로그램 이미지 이름 이다.
C:\Users\82107 > docker container run --name apa000ex1 -d httpd
docker container run 명령어로 이미지 설치, 컨테이너 생성 및 실행 할 수 있다. 옵션으로 --name 과 -d(백그라운드 수행) 사용한다.
C:\Users\82107 > docker ps -a | grep apa
docker ps 명령어로 위에서 만든 컨테이너 상태를 확인 한다. 컨테이너 목록이 많은 경우, 파이프 명령어와 grep 명령어(리눅스)로 조건에 맞는 리스트만 출력 할 수 있다.
C:\Users\82107 > docker container stop apa000ex1
docker container stop 컨테이너_이름 명령어로 실행 중인 컨테이너를 정지한다.
C:\Users\82107 > docker container rm apa000ex1
docker container rm 컨테이너_이름 명령어로 정지 상태의 컨테이너를 삭제한다.
Tip. 리눅스 명령어
| (pipe) 명령어는 여러개 명령어를 하나의 라인에 연결시켜서 수행하는 리눅스 명령어이다.
grep 명령어는 Global Regular Expression Print의 줄임말로 특정 파일에서 특정 문자열을 찾을 때 사용한다.