상세 컨텐츠

본문 제목

Docker. 컨테이너 관리

TechBlog

by stuner 2020. 3. 2. 16:49

본문

1. 컨테이너 확인

 

컨테이너 목록 확인

# docker ps

docker ps 명령만 사용하면 실행 중인 컨테이너만 출력하게 된다.

아래는 각 필드의 설명이다.

  • CONTAINER ID : 컨테이너의 기반이 되는 이미지

  • COMMAND : 컨테이너에서 실행 중인 애플리케이션

  • CREATED : 컨테이너가 생성된 시간

  • STATUS : 컨테이너의 상태 (UP은 실행중, exited는 중지)

  • PORTS : 컨테이너에서 사용 중인 포트 (포트포워딩 포함)

  • NAMES : 컨테이너의 이름

docker ps -a 명령을 실행하면 실행 중이지 않은 모든 컨테이터 목록이 출력 된다.

 

컨테이너 세부 사항 확인

docker inspect 명령을 이용하여 실행된 컨테이너의 상세 내용을 확인 할 수 있다.

# docker inspect CONTAINER_ID(또는 NAMES)

 

컨테이너가 실행되면서 실행되는 애플리케이션, 볼률, 네트워크 등을 확인 할 수 있다.

 

2. 컨테이너 생성 및 실행

컨테이너 생성

# docker create --help

docker create 의 주요 옵션은 아래와 같다.

  • -i (--interactive) : 표준 입력을 사용할 수 있게 함

  • -t (--tty) : 표준 출력 및 표준 에러를 터미널로 출력함

  • --name : 컨테이너의 이름 지정

컨테이너를 생성할 때 -i 와 -t 옵션을 같이 사용하여 표준 입출력이 가능한 컨테이너는 생성할 수 있다.

# docker create -it --name c1 centos

docker create 명령으로 컨테이너를 생성하면 실행 상태가 아니기 때문에 docker ps 명령으로 확인할 수 없으며 docker ps -a 명령을 실행하면 STATUS가 Created 인 상태를 확인할 수 있다.

 

컨테이너 시작 및 중지

이전에 생성했던 c1 컨테이너를 아래와 같이 실행할 수 있다.

# docker start c1

 

컨테이너를 중지하려면 docker stop 명령을 이용한다.

# docker stop c1

 

컨테이너 실행

컨테이너를 생성하면서 바로 시작하려면 docker run 명령을 사용한다. 이는 docker create 와 docker start 를 연속해서 실행하는 것과 같다.

# docker run -it --name c2 centos

 

컨테이너를 실행하면 바로 접근이 되는데 이때 프롬프트의 호스트네임을 확인하면 컨테이너의 ID와 일치한다.

이 상태에서 exit 명령을 사용하면 컨테이너가 종료되며 중지 상태로 돌아간다. 컨테이너를 실행 중인 상태에서 빠져 나오려면 “Ctrl + P + Q”를 입력한다.

컨테이너를 백그라운드로 실행하는 방법은 아래와 같다.

# docker run -d --name c3 centos

 

c3 컨테이너의 상태를 보면 실행되자마자 종료된다. 이는 컨테이너의 기반이 되는 이미지에 지정된 애플리케이션의 종류에 따라 달라지게 된다. 일반적으로 컨테이가 실행되면서 실행되는 애플리케이션이 데몬 종류이면 포그라운드로 실행했을 때(-it) 바로 종료되며, 백그라운드에서 동작하지 않은 명령이나 애플리케이션을 백그라운드로 실행하면(-d) 바로 종료된다.

아래는 httpd 이미지를 백그라운드에서 실행한 방법이다.

# docker run -d --name web1 httpd

 

컨테이너를 실행할 때 지정된 이미지가 존재하지 않으면 다운로드 받고 실행한다.

아래는 httpd 이미지를 포그라운드로 실행한 방법이다.

# docker run -it --name web2 httpd

 

STATUS 필드를 보면 Exited 상태로 표시된다.

 

컨테이너 삭제

컨테이너를 삭제하려면 docker rm 명령을 사용한다.

# docker rm c1 c2 c3

 

컨테이너를 삭제하려면 컨테이너가 중지되어야 한다. 실행 중인 상타의 컨테이너를 삭제하려면 -f 옵션을 사용한다.

# docker rm -f web1

 

3. 컨테이너 관리

컨테이너 접근

백그라운드에서 실행 중인 컨테이너에 접근하려면 docker attach 명령을 사용하며 docker attach 명령은 백그라운드에서 실행 중인 컨테이너에 접근할 수 있다.

# docker run -itd --name c1 centos

# docker attach c1

 

-itd 옵션을 함께 사용하면 표준 입출력을 사용할 수 있는 상태에서 백그라운드로 동작한다. 이때 attach 명령으로 접근할 수 있으며 다시 실행 중인 상태로 빠져 나오려면 “Ctrl + P + Q” 를 입력한다.

 

컨테이너에서 애플리케이션 실행

docker exec 명령을 이용하여 실행 중인 컨테이너에 추가로 애플리케이션을 실행할 수 있다.

# docker exec --help

COMMAND 에는 실행할 애플리케이션의 경로를 지정하며 경우에 따라 argument를 지정한다.

아래는 apache 웹서버가 실행 중인 web1 컨테이너에 추가로 bash shell 을 실행하는 방법이다.

# docker run -d --name web1 httpd

# docker exec -it web1 bash

 

docker exec 를 실행할 때 포그라운드에서 동작하게 하려면 run 명령과 마찬가지로 -it 옵션을 사용해야 한다. 이때 exit 명령으로 빠져 나와도 web1 컨테이너는 종료되지 않는다. 이는 exec 명령으로 실행한 애플리케이션은 bash 이기 때문에 단순히 bash 만 종료한 것이기 때문이다.

 

컨테이너 내의 실행 중인 프로세스 확인

컨테이너에서 실행 중인 프로세스를 확인 하려면 docker top 명령을 사용한다.

# docker top web1

 

컨테이너 이름 변경

docker rename 명령을 사용하면 컨테이너의 이름을 변경할 수 있으며 컨테이너를 생성하거나 실행할 때 --name 옵션을 사용하지 않으면 임의의 이름이 부여된다. 이때 관리의 편의성을 위해서 컨테이너 이름을 변경할 수 있다.

# docker rename 임의이름 변경할이름

 

컨테이너 일시 중지 및 재개

docker pause 명령을 사용하여 실행 중인 컨테이너를 일시적으로 중지할 수 있다.

# docker pause web1

 

STATUS 필드에 Paused 가 표시되어 있으면 컨테이너가 일시 중지된 상태이며 일시 중지된 컨테이너를 다시 실행하려면 docker unpause 를 사용한다.

 

컨테이너에 파일 복사

docker cp 명령을 사용하여 호스트의 파일을 컨테이너로 복사하거나 컨테이너의 파일을 호스트로 복사할 수 있다.

아래는 호스트의 파일을 컨테이너로 복사하는 방법이다.

 

아래는 컨테이너의 파일을 호스트로 복사하는 방법이다.

 

컨테이너의 파일 변경 확인

docker diff 명령을 사용하여 컨테이너가 실행된 이후에 변경된 사항을 추적할 수 있다.

# docker diff c1

 

diff 명령의 실행 결과의 첫 번째 글자는 파일의 변경 유무를 나타낸다.

A는 추가, D는 삭제, C는 변경 된 것을 의미한다.

 

4. 컨테이너 및 이미지 저장

'TechBlog' 카테고리의 다른 글

Docker. Installation on RHEL 8 / CentOS 8  (0) 2020.03.24
Docker. Installation on Ubuntu  (0) 2020.03.24
Docker. 이미지 관리  (0) 2020.03.02
Docker. Installation on CentOS (Amazon Linux)  (0) 2020.03.02
Docker. 특징 및 기능  (0) 2020.03.02

관련글 더보기