[Docker-02] 도커 이미지와 컨테이너

반응형

1. 도커 이미지와 컨테이너

도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며, 이 두 가지가 도커 엔진의 핵심이라고 한다. 이미지와 컨테이너는 훨씬 더 복잡한 구조를 가지지만, 이번에는 간단하게 이미지와 컨테이너가 무엇이고 어떤 역할을 하면서 어떤 방식으로 사용되는지만 살펴보겠다.

 

1.1) 도커 이미지

이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념이다. 이미지는 도커 명령어로 내려받을 수 있으므로 별도로 설치할 필요는 없다. 도커에서 사용하는 이미지의 이름은 기본적으로 아래와 같이 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성된다.

  • 저장소(Repository): 이미지가 저장된 장소를 의미한다. 저장소 이름이 명시되지 않은 이미지는 도커에서 기본적으로 제공하는 이미지 저장소인 도커 허브(Docker Hub)의 공식(Official) 이미지를 뜻한다. 이미지를 생성할 때 저장소 이름을 명시할 필요는 없으므로 생략하는 경우도 있다.
  • 이미지 이름: 이미지가 어떤 역할을 하는지 나타낸다. 위 예시는 우분투 컨테이너를 생성하기 위한 이미지라는 의미이다. 이미지의 이름은 생략할 수 없으며 반드시 입력해야 한다.
  • 태그: 태그는 이미지의 버전 관리, 혹은 리비전(Rivision) 관리에 사용된다. 현재 22.04로 명시해두었지만 태그를 생략하면 도커 엔진은 이미지의 태그를 latest로 인식한다.

 

1.2) 도커 컨테이너

도커 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 바로 도커 컨테이너가 된다. 예를 들어 우분투 도커 이미지로 두 개의 컨테이너를 생성한 뒤, A컨테이너에 My SQL을, B컨테이너에 아파치 웹 서버를 설치해도 각 컨테이너는 서로 영향을 주지 않으며, 호스트에도 아무런 영향을 주지 않는다. 신기방기~

 

2. 도커 컨테이너 생성하기

2.1) 컨테이너 생성

도커를 사용하기 전 설치된 도커 엔진의 버전을 확인하고, 아래의 명령어를 이용해 우분투 컨테이너를 생성한다. docker run 명령어는 컨테이너를 생성하고 실행하는 역할을 한다. ubuntu:22.04는 컨테이너를 생성하기 위한 이미지의 이름이며, -i(상호 입출력) -t (tty)옵션은 컨테이너와 상호 입출력을 가능하게 한다. 현재 우분투 22.04 이미지가 로컬 도커 엔진에 존재하지 않으므로 도커 허브에서 자동으로 이미지를 내려받아 시간이 약간 걸릴 수 있다. 다운로드가 완료되면 아래와 같이 출력된다.

docker run -i -t ubuntu:22.04

 

 

쉘의 사용자와 호스트 이름이 변경되었다는 것은 컨테이너 내부에 들어와있다는 것을 의미한다. 컨테이너에서 기본 사용자는 root이고 호스트 이름은 무작위의 16진수 해시값이다. 무작위의 16진수 해시값은 컨테이너의 고유 ID 앞 일부분이며, 위 예시에서는 b15f833f93dc 이다.

 

컨테이너와 호스트의 파일시스템은 서로 완전히 독립되어 있으므로 ls, ll 등의 명령어 입력 시 아무것도 설치되지 않은 상태임을 확인할 수 있다.

 

2.2) 컨테이너 빠져나오기

exit 혹은 Ctrl + D 로 빠져나올 수 있는데, exit이나 Ctrl + D는 컨테이너 내부에서 빠져나오면서 컨테이너를 정지시킨다.

 

2.3) 도커 엔진 이미지 확인

docker images 명령어를 통해 현재 도커 엔진에 존재하는 이미지의 목록을 출력할 수 있다.

 

 

반응형