본문 바로가기

Docker

도커 이미지와 컨테이너

도커 이미지


도커 이미지는 컨테이너를 생성할 때 필요한 요소이며 실행에 필요한 파일과 설정 값 등을 포함하고 있다. 그에 반해 컨테이너는 이미지를 실행한 상태이며 같은 이미지로 여러 개의 컨테이너를 생성할 수 있다.

 

도커에서 사용하는 이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성된다.

developone/ubuntu:18.04
저장소 / 이미지 이름 / 태그
  • 저장소(Repository) 이름은 이미지가 저장된 장소이다. 저장소 이름이 명시되어 있지 않은 이미지는 도커의 공식적인 이미지 저장소인 도커 허브(Docker Hub)의 공식 이미지를 뜻한다
  • 이미지 이름은 해당 이미지가 어떤 역할을 하는지 나타낸다. 위 예시에서는 우분투 컨테이너를 생성하기 위한 이미지 이름으로 ubuntu를 사용한다
  • 태그는 이미지의 버전 관리를 위해 사용한다. 위 예시에서는 우분투의 버전을 18.04로 명시한다. 태그를 생략하면 도커 엔진은 이미지의 태그를 latest로 인식한다

도커 이미지를 다운로드할 때는 pull 명령어를 통해 내려받는다.

 

### centos 이미지를 내려받는 명령어
docker pull centos:7

 

도커 컨테이너


도커 이미지는 우분투 같은 운영체제부터 Apache 웹 서버, MySQL 데이터베이스, 하둡 스파크 등 갖가지 종류가 있다. 이런 이미지로 컨테이너를 생성하면 격리된 시스템 자원 및 네트워크를 사용하여 독립된 공간이 생성이 된다. 

 

쉽게 말해 컨테이너는 도커의 이미지가 실행된 상태

 

컨테이너 생성


docker run

docker run 명령어로 컨테이너를 생성하고 실행하는 역할을 한다

docker run -i -t ubuntu:14.04

위 명령어는 ubuntu:14.04 이미지를 -i -t 옵션을 주어서 입출력을 가능하게 한다.  -i 옵션은 상호 입출력을 -t 옵션은 tty를 활성화해서 bash 셸을 사용하도록 설정한다. 쉽게 말해 이 두 옵션을 적어줘야 셸을 정상적으로 사용할 수 있다.

 

도커 실행 옵션들은 추후 자세하게 다룬다.

 

이미지를 실행시켜 컨테이너가 생성되고 셸 접속을 하게 되면 기본 리눅스 CLI 환경처럼 명령어를 입력할 수 있다. 컨테이너 셸에서 나가려면 exit을 입력하거나 Ctrl + D를 동시에 입력하면 나가지지만 동시에 컨테이너를 정지시킨다.

 

다른 방법으로 컨테이너를 정지하지 않고 빠져나오는 것으로 Ctrl + P, Q를 입력하는 것인데 이런식으로 입출력에서 나가면 단순히 컨테이너의 셸에서만 빠져나오게 된다.

 

docker create

docker create 명령어도 컨테이너를 생성하는 명령어이다.

 

run 명령어는 create 즉 생성하고 start 즉 실행하는 명령어를 동시에 시키는 것으로 create 명령어와 차이가 있다.

 

docker create 혹은 run을 이용해 컨테이너를 생성할때 --name 옵션으로 컨테이너의 이름을 지정할 수 있다
ex) docker create -i -t --name mycentos centos:7

 

docker attach

docker attach 명령어는 실행된 컨테이너의 내부로 들어가는 명령어이다. 

 

 

컨테이너 목록 확인


호스트로 돌아와 지금까지 생성한 컨테이너의 목록을 확인하는 명령어이다.

### 정지되지 않은 컨테이너 목록 출력
docker ps

### 모든 컨테이너 목록 출력
docker ps -a

 

컨테이너 삭제


### 컨테이너 삭제
docker rm

### 이미지 삭제
docker rmi

컨테이너 삭제 명령어 rm 에는 컨테이너 ID나 지정된 name으로 삭제할 수 있으며 실행 중인 컨테이너는 삭제할 수 없다. 실행 중인 컨테이너를 삭제하기 위해선 stop 명령어로 실행을 중지하고 삭제해야 한다.

'Docker' 카테고리의 다른 글

컨테이너 자원 할당 제한  (0) 2021.09.11
도커 네트워크  (0) 2021.09.11
도커 볼륨  (0) 2021.09.10
도커 실행 옵션 정리  (0) 2021.09.09
도커란 무엇인가?  (0) 2021.09.08