이 글은 Udemy 강의 Docker & Kubernetes: The Practical Guide [2024 Edition]을 수강하며 정리한 내용입니다.
Image vs Container
Container
모든것을 포함하는 작은 패키지 : 웹사이트, node 서버!
어떤 애플리케이션을 구동할 때 필요한 모든것 ⇒ 소프트웨어의 실행 단위
Image
컨테이너를 위한 템플릿/청사진
이미지에는 코드와, 코드를 실행하는데 필요한 도구가 들어있으며 실제 실행은 컨테이너에서 한다.
컨테이너와 이미지의 관계
이미지에는 모든 설치 지침과 코드가 포함되어있다.
⇒ 다른 머신, 다른 서버에서 같은 이미지를 구동시킬 수 있다.
⇒ 즉, 하나의 이미지로 여러 컨테이너를 구동시킬 수 있다.
비유가 적절한건지는 모르겠으나 내가 이해한 바로 다시 비유를 해보자면
이미지는 레시피, 컨테이너는 이 레시피로 만든 요리의 개념인 것 같다.
이미지를 사용해 컨테이너 빌드하기 1 - Docker Hub
도커 이미지는 docker hub에서 필요한 이미지를 찾을수도 있고, 직접 빌드를 할수 있기도 하다.
먼저 docker hub의 node.js 이미지를 사용하고 실행하는 실습부터 진행한다.
node 이미지는 node 어플리케이션 컨테이너를 생성할 수 있도록 하는 이미지이다.
docker run node
run 명령어는 node.js를 위한 이미지(docker hub에 존재하는)를 갖고 컨테이너를 생성하는 명령어이다.
node 이미지가 내 로컬에 없기 때문에 Hub에서 이미지를 내려받고 컨테이너를 빌드한다.
(이미지를 내려받는다고 해서 우리 컴퓨터에 노드가 설치되는게 전혀 아니다. 도커 환경에만 설치됨)
컨테이너 생성이 잘 되었는지 확인해보자.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
엉? 아무것도 없네?
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d8b3cbcaeb8 node "docker-entrypoint.s…" About a minute ago Exited (0) About a minute ago thirsty_aryabhata
docker ps -a 는 종료된 컨테이너까지 모두 보여준다. Exited상태인걸 보니 컨테이너가 종료되었다.
현재 실습으로 진행하고 있는 node의 경우 컨테이너 내부에서 실행할 수 있는 interactive shell 이 존재하는데, 위의 docker run 명령은 컨테이너에서 아무런 상호작용을 하지 않고 종료되었다.
컨테이너는 주변 환경과 분리되어 실행되는 특성이 있기 때문에, 애플리케이션에서 뭔가를 하려면 컨테이너 내부에 접속을 해야한다.
이번에는 -it 옵션과 함께 컨테이너를 실행한다. -it옵션은 docker에게 해당 컨테이너에서 interactive session을 실행하겠다는 의미이다.
docker run -it node
Welcome to Node.js v22.8.0.
Type ".help" for more information.
> 7-3
4
컨테이너 종료를 하려면 ctrl + C를 두번 누른다.
다시 docker ps -a로 컨테이너 확인을 해보면, IMAGE 부분에 같은 node라는 이미지로 컨테이너가 실행되었다가 종료된 것을 확인할 수 있다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48f80cff1528 node "docker-entrypoint.s…" 5 minutes ago Exited (0) 3 minutes ago vigorous_davinci
3d8b3cbcaeb8 node "docker-entrypoint.s…" 18 minutes ago Exited (0) 18 minutes ago thirsty_aryabhata
글이 너무 길어져서 <이미지를 사용해 컨테이너 빌드하기 2>는 다음 글에서 정리한다.
함께 보면 좋은 글
2024.09.14 - [docker] - [Docker] Container란? 컨테이너의 필요성, VM과 차이
[Docker] Container란? 컨테이너의 필요성, VM과 차이
이 글은 Udemy 강의 Docker & Kubernetes: The Practical Guide [2024 Edition]을 수강하며 정리한 내용입니다. Docker란? Container란?Docker란?컨테이너를 만들고 관리하는 기술컨테이너란?소프트웨어의 표준화된 단
dev.hasummer.com
'docker' 카테고리의 다른 글
[Docker] Volume의 정의, 종류, 터미널에서 사용하는 법 (0) | 2025.02.03 |
---|---|
[Docker] Volume과 Bind Mount의 정의, 필요한 이유 (0) | 2025.02.02 |
[Docker] Container란? 컨테이너의 필요성, VM과 차이 (1) | 2024.09.14 |