임대일

1.3 도커(Docker) 가상화 기술: 컨테이너 실행 본문

도커/개발자를 위한 쉬운 도커

1.3 도커(Docker) 가상화 기술: 컨테이너 실행

limdae94 2024. 5. 30. 13:33
 

개발자를 위한 쉬운 도커 | 데브위키 - 인프런

데브위키 | 현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다. 단순한 명령어 사용법이 아닌 도커를 왜 사용해야하는지 대한 근

www.inflearn.com

 

1. 컨테이너 실행

이번 시간에는 실습을 통해서 컨테이너를 직접 생성한다. 따라서 오늘의 학습 목표는 Nginx 웹 서버 컨테이너를 실행시켜 보고 이 Nginx 컨테이너가 제공하는 웹페이지에 접속해 보는 것이다.

도커 컨테이너 실행

 

웹 서버는 우리가 가장 많이 사용하는 서버 중 하나이다. 웹 서버는 웹 브라우저에서 웹 페이지를 제공해준다. 우리가 매일 사용하는 구글이나 네이버 같은 회사도 웹 사이트를 제공해주기 위해서 이러한 웹 서버를 운영하고 있으며 보통 웹 사이트를 접속할 때 웹 브라우저의 주소창에 주소를 입력하는 것이 바로 브라우저를 통해서 웹 서버로 요청을 보내는 것이다.

google.com 혹은 naver.com 처럼 웹 사이트에 주소를 입력하면 구글이나 네이버의 웹 서버로 요청이 전달되고, 각 회사가 운영 중인 웹 서버는 요청이 들어왔을 때 웹 페이지를 파일로 응답하고 이 웹 페이지 파일은 사용자의 브라우저에 표시가 된다. 그러면 사용자는 이 화면을 통해서 웹 서버를 사용할 수 있는 것이다. 오늘 실습에서 이 웹 서버를 지금 사용하고 있는 PC 에서 실행한다.

 

2. 컨테이너 명령어

docker version, docker info

 

  • dockekr version: Client, Server의 버전 및 상태 확인
  • docker info: 플러그인, 시스템 상세 정보 확인

그리고 지금 사용하는 PC에서 실행 중인 웹 서버에 접속하려면 브라우저의 로컬호스트(Localhost)라는 주소를 사용해서 접속이 가능하다. 처음 실행할 명령어는 docker version과 docker info 명령이다. docker version 명령은 Client, Server 의 버전 및 상태를 확인한다. 그리고 PC에서 도커가 잘 실행 중인지 확인할 수 있다. docker info는 플러그인, 시스템 상세 정보를 확인한다. 그리고 현재 실행 중인 호스트 OS 의 시스템 상세 정보도 확인할 수 있다.

 

2.1 docker version

docker version

 

2.2 docker info

docker info
docker info
docker info

 

 

 

2.3 docker --help

docker --help, docker (Mangement Command) Command, docker container run

 

 

도커 명령을 실행할 때 -- 는 많이 사용하는 명령어 중 하나이다. docker --help 명령을 확인하면 도커의 명령어는 다음과 같이 구성된다.

docker (Management Command) Command

그런데 이 Manangement Command는 일반적으로 생략이 가능하다. 보통은 이 docker와 Command만 입력해도 대부분 명령어 수행이 가능하기 때문에 생략해서 많이 사용한다. 예를 들어서 컨테이너를 실행하는 명령도 전체 명령어는 docker container run 이지만, docker run 으로 명령어를 실행하는 것과 완전히 동일하다. 그래서 강의에서도 생략 가능한 커맨드는 생략해서 진행한다.

 

docker --help
docker --help
docker --help

 

docker --help 으로 Manangement Command와 Command를 확인할 수 있다.
실습으로 Management Command 중에 컨테이너를 다룰 수 있는 컨테이너 명령을 확인한다.

 

 

docker container --help

 

--help 명령은 명령어가 기억이 나지 않을 때마다 잘 활용하면 명령어를 사용할 때 가이드를 제공 받을 수 있을 것이다.

 

2.4 docker run

docker run (실행옵션) 이미지명, docker rm 컨테이너명/ID

 

  • docker run (실행옵션) 이미지명: 컨테이너 실행
  • docker rm 컨테이너명/ID: 컨테이너 삭제

컨테이너는 docker run (실행옵션) 이미지명 으로 실행이 가능하다. 이때 이미지에 대해서는 다음 세션에서 자세하게 다루기 때문에 지금은 컨테이너를 실행하기 위한 재료 중 하나라고 생각하면 된다. 그래서 Nginx 컨테이너를 실행하려면 이미지명에 nginx로 이미지명을 입력하면 된다.

 

실행옵션 부분에는 컨테이너를 실행할 때  여러 옵션들을 지정할 수 있다. 예를 들어서 컨테이너의 이름을 지정하거나 컨테이너로 접속할 때 사용할 포트를 지정하는 것과 같은 다양한 옵션을 사용할 수 있다.

 

다음으로 컨테이너는 docker rm 명령으로 사용해서 삭제할 수 있다. rm 뒤에는 컨테이너명 혹은 컨테이너의 ID 를 넣으면 된다.

 

docker run -p 80:80 --name hellonginx nginx

docker run -p 80:80 --name hellonginx nginx

 

도커를 실행하여 nginx 서버를 실행하는 명령어이다.
처음 시작하면 nginx 이미지가 없기 때문에 설치하는데 시간이 걸린다.

 

localhost

localhost
localhost 접속 후 콘솔창

 

 

웹 브라우저 시크릿 모드에서 주소창에 localhost 으로 입력하면 위의 그림과 같이 nginx가 정상적으로 실행되는 것을 브라우저를 통해서 확인할 수 있다. 또한 실행한 콘솔창에서 접속에 대한 정보를 확인할 수 있다.

 

2.5 docker rm

docker rm hellonginx

실행 중인 nginx 서버는 콘솔창에서 ctrl + c 를 함께 누르면 된다. 그리고 docker rm hellonginx 으로 실습한 nginx 서버를 삭제한다.

 

 

3. 컨테이너 내부 동작

컨테이너 실행 docker run ... nginx

 

지금까지 가상화 개념을 기준으로 도커 관련 명령어를 실행했을 때 일어난 일들에 대해 정리한다. 지금까지 실습한 PC에 도커를 설치해서 호스트 OS로 사용하고 있는 상태이다. docker run nginx 명령을 수행하면 CLI 가 명령어를 컨테이너의 실행 API에 알맞게 생성하고 도커 데몬으로 요청을 전달한다.

 

 

Nginx Process

 

도커 데몬은 요청을 분석해서 컨테이너 런타임을 통하여 컨테이너를 생성한다. 그리고 로컬 호스트에 접속하면 컨테이너에서 실행 중인 Nginx Process에서 해당 요청을 전달받아서 실습한 PC의 웹 브라우저에 제공해 준 것이다.

 

컨테이너를 생성해서 프로세스를 실행시키면 프로세스는 디스크, 네트워크, 메모리, CPU 같은 공간이 완전히 격리된 공간에서 실행할 수 있다. 이 상태에서 여러 개의 컨테이너를 실행시키면 각 컨테이너는 격리된 공간에서 안전하게 운영할 수 있다. 보통 하이퍼바이저를 사용해서 가상머신에 웹 서버를 설치하려면 짧게는 5분에서 길게는 20분까지 걸릴 수도 있다. 그러나 컨테이너를 사용하면 이렇게 단순한 명령어 한 줄로도 빠르게 웹 서버를 구성할 수 있다.

 

어떻게 빠르게 웹 서버가 실행될 수 있는지 도커의 생태계를 천천히 알아가면서 컨테이너를 사용하는 편리함을 앞으로 학습 목표로 삼으면 될 것이다. 이번 파트에서는 가상화 기술의 개념에 대해 알아봤고, 가상화 기술 방식인 하이퍼바이저와 컨테이너를 비교했다. 그리고 컨테이너 가상화 기술을 사용하는 도커의 아키텍처에 대해 학습했고, 도커를 사용해서 컨테이너를 직접 실행해봤다. 다음 파트에서는 가볍게 넘어간 이미지에 대해 조금 자세히 학습하며 컨테이너가 어떠한 방식으로 실행되고 어떻게 종료되는지 라이프 사이클에 대해서도 학습한다.