Zeno ZENO

Part 3. Docker 기본 명령어와 hello-world 컨테이너 분석

Docker 설치가 끝났다면 이제 컨테이너를 직접 다룰 차례다. 이 글에서는 docker run hello-world 명령어가 내부적으로 어떤 일을 하는지 분석하고, docker ps, docker images, docker pull, docker rm, docker rmi 등 가장 많이 사용하는 Docker 기본 명령어를 실제 동작 원리와 함께 설명한다.

Part 3. Docker 기본 명령어와 hello-world 컨테이너 분석

1. Docker 설치 후 가장 먼저 하는 것

Docker 설치가 끝나면 보통 가장 먼저 다음 명령어를 실행한다.

docker run hello-world

많은 사람이 단순 테스트 명령어라고 생각한다.

하지만 이 명령어 하나에 Docker의 핵심 개념 대부분이 들어 있다.

실제로 Docker는 이 명령어를 실행하면서 다음 작업을 수행한다.

1. hello-world 이미지 찾기
2. Docker Hub 접속
3. 이미지 다운로드
4. 컨테이너 생성
5. 프로그램 실행
6. 결과 출력
7. 컨테이너 종료

즉 Docker를 이해하려면 먼저 Image와 Container를 이해해야 한다.


2. Image란 무엇인가

Image는 컨테이너를 만들기 위한 실행 환경 패키지다.

쉽게 말하면 설계도 또는 틀이다.

예를 들어 hello-world 이미지는 다음 정보를 포함한다.

- 실행 파일
- 설정 정보
- 필요한 라이브러리
- 실행 환경

Image 자체는 실행 중인 프로그램이 아니다.

실행 준비가 끝난 상태의 패키지라고 생각하면 된다.

정리하면 다음과 같다.

Image = 실행 환경 패키지
Container = 이미지를 실행한 결과

3. Container란 무엇인가

Container는 이미지를 실행한 실제 공간이다.

Docker는 이미지를 실행할 때 컨테이너를 생성한다.

예를 들어 다음 명령어를 실행하면

docker run hello-world

Docker는 hello-world 이미지를 이용해 컨테이너를 만든다.

그리고 컨테이너 안에서 프로그램을 실행한다.

실행이 끝나면 컨테이너는 종료된다.

즉 관계는 다음과 같다.

Image
↓
Container 생성
↓
프로그램 실행

4. Docker Hub란 무엇인가

Docker Hub는 Docker 이미지 저장소다.

GitHub가 코드를 저장하는 곳이라면 Docker Hub는 이미지를 저장하는 곳이다.

Docker가 hello-world 이미지를 찾지 못하면 Docker Hub에서 자동으로 내려받는다.

실제로 Docker는 다음 순서로 동작한다.

로컬 PC 확인
↓
이미지 없음
↓
Docker Hub 접속
↓
이미지 다운로드
↓
실행

5. docker run 명령어

가장 많이 사용하는 Docker 명령어다.

docker run hello-world

구조는 다음과 같다.

docker = Docker 실행

run = 컨테이너 실행

hello-world = 이미지 이름

즉 의미는 다음과 같다.

hello-world 이미지를 컨테이너로 실행한다.

6. docker images 명령어

현재 저장된 이미지 목록을 확인한다.

docker images

예시 결과

REPOSITORY    TAG       IMAGE ID

hello-world   latest    xxxxxxxxx

여기서 확인할 수 있는 정보는 다음과 같다.

REPOSITORY = 이미지 이름

TAG = 버전

IMAGE ID = 이미지 고유 식별자

이미지는 컨테이너를 만들기 위한 재료다.


7. docker ps 명령어

실행 중인 컨테이너를 확인한다.

docker ps

하지만 hello-world는 실행 후 바로 종료된다.

그래서 아무것도 안 보일 수 있다.

이유는 다음과 같다.

실행
↓
메시지 출력
↓
종료

실행 중 상태가 매우 짧기 때문이다.


8. docker ps -a 명령어

종료된 컨테이너까지 모두 확인한다.

docker ps -a

보통 hello-world 컨테이너는 여기서 확인된다.

차이는 다음과 같다.

docker ps

실행 중인 컨테이너만 표시

docker ps -a

전체 컨테이너 표시

9. docker pull 명령어

AD

제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다

톨루나 팝업패널리워드 회원가입

이미지만 미리 다운로드한다.

docker pull nginx

의미는 다음과 같다.

nginx 이미지를 Docker Hub에서 다운로드

컨테이너는 생성되지 않는다.

이미지만 저장된다.


10. docker run과 docker pull 차이

docker pull

이미지 다운로드만 수행

docker run

이미지 다운로드
+
컨테이너 생성
+
프로그램 실행

즉 run은 pull보다 더 많은 작업을 수행한다.


11. docker rm 명령어

컨테이너를 삭제한다.

docker rm 컨테이너ID

컨테이너만 삭제된다.

이미지는 남아있다.

그래서 나중에 다시 컨테이너를 만들 수 있다.


12. docker rmi 명령어

이미지를 삭제한다.

docker rmi 이미지명

예시

docker rmi hello-world

이미지를 삭제하면 다음 실행 시 다시 다운로드해야 한다.


13. docker logs 명령어

컨테이너 로그를 확인한다.

docker logs 컨테이너ID

로그는 프로그램 실행 기록이다.

오류 확인 시 가장 많이 사용하는 명령어 중 하나다.


14. docker exec 명령어

실행 중인 컨테이너 안으로 들어간다.

docker exec -it 컨테이너명 bash

또는

docker exec -it 컨테이너명 sh

의미는 다음과 같다.

현재 실행 중인 컨테이너 내부 터미널 접속

리눅스 서버에 접속하는 것과 비슷한 느낌이다.


15. docker run hello-world가 실제로 한 일

이번 실습에서 실행한 명령어를 기준으로 보면 다음 과정이 일어났다.

docker run hello-world

1. hello-world 이미지 확인

2. 로컬에 없음

3. Docker Hub 접속

4. 이미지 다운로드

5. 컨테이너 생성

6. 프로그램 실행

7. Hello from Docker 출력

8. 컨테이너 종료

즉 단순히 문장을 출력한 것이 아니라 Docker 전체 동작 과정을 테스트한 것이다.


16. Part 3 정리

docker run = 컨테이너 실행

docker pull = 이미지 다운로드

docker images = 이미지 목록 확인

docker ps = 실행 중인 컨테이너 확인

docker ps -a = 전체 컨테이너 확인

docker rm = 컨테이너 삭제

docker rmi = 이미지 삭제

docker logs = 로그 확인

docker exec = 컨테이너 내부 접속

Docker Hub = 이미지 저장소

Image = 실행 환경 패키지

Container = 이미지를 실행한 결과

Docker에서 가장 중요한 개념은 Image와 Container의 차이를 이해하는 것이다.

Image는 설계도이고, Container는 그 설계도로 실제 실행된 결과다.

다음 Part에서는 Docker Image를 더 깊게 살펴보고 직접 이미지를 내려받고 실행하는 방법을 알아본다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker' 카테고리의 다른 글

전체보기