도커(Docker) 라이프사이클(Lifecycle)
도커 컨테이너는 하나의 프로세스로 실행되므로 아래 그림과 같은 라이프사이클을 갖는다.
그림을 살펴보면 대략적으로 도커 명령어에 의해서 어떤 동작이 이루어지는지 알 수 있다.
docker images (이미지 확인)
▪도커 엔진에 존재하는 이미지 목록을 확인 가능
$ docker images
이런 식으로 이미지 목록이 나오게 된다.
docker pull (이미지 다운)
▪도커 허브에서 이미지를 받아옴
▪centos, ubuntu 등은 바로 받아올 수 있음
▪도커 허브에서 다른 사람들이 올린 이미지를(이미 만들어진) 쉽게 받을 수 있음
$ docker pull centos
이미지 사이즈에 따라 시간이 많이 걸릴 수 있음...
docker create (이미지로 컨테이너 생성)
이미지를 다운로드 했다면, 이미지로 컨테이너를 생성할 수 있다.
▪-i 는 상호 입출력
▪-t 는 tty를 활성화해서 bash 셸을 사용
$ docker create -i -t centos
위의 명령어로 컨테이너 생성시 docker 데몬에서 컨테이너명을 정하게 된다.만약 이름을 설정하고 싶다면 "--name" 옵션을 추가하여 "컨테이너 이름"을 설정할 수 있다.
$ docker create -i -t --name (내가 설정하려는 컨테이너 이름) (이미지 이름)
$ docker create -i -t --name mycontainer centos
start를 하기 전 docker ps -a 명령어를 사용한다면 STATUS가 "Created" 상태로 나온다.
docker start (생성된 컨테이너 실행)
docker create로 컨테이너를 생성했다면 시작후 사용 가능하다.
$ docker start mycontainer
start를 한 뒤 docker ps -a (docker ps도 가능) 명령어를 사용한다면 STATUS가 "Up" 상태로 나온다.
docker attach (컨테이너 접속)
컨테이너가 Up 상태일 경우 attach 명령어를 사용해서 접속이 가능하다.
$ docker attach mycontainer
컨테이너가 정상적으로 실행되었다면 아래와 같이 쉘이 변경된다.
[root@233506~~~ / ] #
docker run (이미지로 컨테이너 생성 및 실행)
▪docker run 명령어는 docker create + docker start + docker attach를 한번에 실행하는 것과 같음
▪docker run 명령어를 사용하면 이미지를 실행(run) 하여 docker container를 실행
▪centos 이미지가 없을 경우 도커 허브에서 최신이미지를 자동으로 pull
아래 명령어를 사용한다면, centos 공식 이미지를 이용하여 컨테이너를 실행시킨다.
$ docker run -i -t centos
컨테이너가 정상적으로 실행되었다면 아래와 같이 쉘이 변경된다.
[root@233506~~~ / ] #
docker ps (-a) (컨테이너 목록 확인)
▪docker ps 명령어는 정지되지 않은 컨테이너 목록만 출력
▪docker ps -a 명령어는 정지된 컨테이너를 포함한 모든 컨테이너 출력
$ docker ps
$ docker ps -a
ps 명령어를 사용했을 경우(위)에는 Up 상태인 컨테이너만 출력되었고, ps -a 명령어를 사용했을 경우(아래) Exited 상태인 컨테이너도 같이 출력된다.
docker rename (컨테이너 이름 변경)
docker create나 run 명령어 사용 시 --name 옵션으로 컨테이너 이름을 설정하지 않았다면 도커 데몬에 의해 랜덤하게 이름이 설정된다.
이런 경우나, 아니면 다른 이름으로 변경하려면 rename 명령어를 사용하면 된다.
$ docker rename (기존 컨테이너 이름) (변경할 컨테이너 이름)
docker stop (컨테이너 중지)
▪컨테이너가 실행중이라면 Host의 자원을 사용하므로 사용하지 않을 때 중지할 수 있음
▪docker rm 과는 다르게 stop을 한 후 다시 start하면 전에 했던 작업을 이어서 할 수 있음
$ docker stop (중지할 컨테이너 이름)
docker rm (컨테이너 삭제)
▪컨테이너 삭제 시 컨테이너를 실행하고 작업했던 모든 내용이 삭제되므로 주의해야 함
▪컨테이너를 삭제하기를 원한다면 rm 명령어를 사용하여 삭제 가능
$ docker rm (삭제할 컨테이너 이름)
단, rm 명령어만 사용한다면 실행중(Up 상태인)인 컨테이너는 삭제할 수 없으므로 -f 옵션이 필요하다.
$ docker rm -f (삭제할 컨테이너 이름)
$ docker stop (삭제할 컨테이너 이름) \ docker rm (삭제할 컨테이너 이름)
모든 컨테이너 삭제
▪존재하는 모든 컨테이너를 삭제하려할 때 사용할 수 있는 명령어
▪컨테이너 삭제 시 컨테이너를 실행하고 작업했던 모든 내용이 삭제되므로 주의해야 함
$ docker container prune
$ docker stop $(docker ps -a -q) \ docker rm $(docker ps -a -q)
docker 명령어 확인
▪도커도 다른 리눅스 패키지와 마찬가지로 --help 명령어를 이용하여 사용법을 확인할 수 있음
▪docker, docker -h docker --help 등의 명령어 입력 시 사용법이 출력
▪docker (명령어) --help, -h를 이용하여 특정 명령어의 사용법, 옵션 등을 확인 가능
'Docker' 카테고리의 다른 글
도커(Docker)의 핵심기술 (4) | 2019.05.26 |
---|---|
도커(Docker) Volume 사용법 (1) | 2018.08.29 |
도커(Docker) storage driver 변경 (0) | 2018.08.23 |
도커(Docker) 설치 (1) | 2018.08.20 |