본문 바로가기
독서/시작하세요! 도커 & 쿠버네티스

1. 도커

by Thinking 2023. 11. 24.

도커 :  리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

Go 언어로 작성되어 있고. 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이다.

 

 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 여래 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상 머신에는 우분투, CentOs 등의 운영체제가 설치되어 사용됩니다. 각 게스트 운영체제는 다른 게스트 운영체제와는 달리 완전히 독립된 공간과 시스템 자원을 할당받아 사용합니다. 이러한 가상화 방식을 사용할 수 있는 대표적인 가상화 툴이 VirtualBox, VMware 등이 있습니다.

 

 그러나 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기에 일반 호스트에 비해 성능 손실이 발생합니다. 가상 머신은 완벽한 운영체제를 생성할 수 있다는 장점이 있지만, 일반 호스트에 비해 성능 손실이 있고, 수 기가바이트에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기는 부담스럽다는 단점이 있습니다.

 

VM : 분할 공간에서의 가상환경, Virtual Machine
호스트 시스템 : 서버의 OS
게스트 OS : VM 의 OS
하이퍼바이저 : 게스트OS를 구동 및 모니터링

 

기존의 VM 과 도커 컨테이너의 차이는 바로 게스트 OS의 유무이다. 이는 자원 효율성 측면에서 차이가 나고, VM은 하나씩 늘 때마다 OS를 위한 자원을 할당해주어야 하는 반면에 도커는 애플리케이션을 구동하는데 필요한 모든 패키지만 있으면 컨테이너를 구동시킬 수 있다.

 

도커의 컨테이너는 호스트 OS의 커널을 공유한다. 커널이란 하드웨어 자원을 관리하고 하드웨어와 프로세스 사이의 인터페이스 역할을 수행하는 OS의 핵심 구성 요소이다. 커널을 컴퓨팅 장자원을 가상화하고 이를 프로세스에 할당한다.

 

기본적인 명령어

docker run : docker pull (이미지) -> docker create (컨테이너 생성) -> docker start(실행) -> docker attach(내부로 접속)

docker create : docker pull -> docker create

 

docker ps -> 정지되지 않은 컨테이너만 출력, (모든 것을 보려면 -a) 까지

 

docker rm Names (정지되어 있는 컨테이너만 삭제가능)

docker stop Names

docker container prune (모든 컨테이너 삭제)

docker ps -a -q (컨테이너 ID 출력하고 삭제)

 

아래는

1. docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7으로 데이터 베이스 컨테이너를

 

2. docker run -d -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=password --name wordpress --link wordpressdb:mysql -p 80 wordpress

으로 웹 서버 컨테이너를 생성한 것이다.

 

워드프레스 웹 서버 컨테이너의 옵션으로 80을 입력했으니 호스트의 포트 중 하나와 컨테이너의 80번 포트가 연결된다.

아래는 위 DB, 웹 서버를 컨테이너로 띄우고 포트를 바인딩해 실습에 적용하여 성공한 페이지다.

내 wordpress 웹 서버 호스트 IP는 0.0.0.0이고, 포트는 53032에 컨테이너의 80번 포트가 바인딩되었다.

 

'독서 > 시작하세요! 도커 & 쿠버네티스' 카테고리의 다른 글

6. 도커 데몬  (2) 2023.12.07
5. Dockerfile 명령어  (3) 2023.12.02
4. Dockerfile 빌드  (0) 2023.11.30
3. 도커 이미지  (0) 2023.11.29
2. 도커 볼륨 & 도커 네트워크  (1) 2023.11.28