2023. 10. 22. 18:34ㆍ쿠버네티스/Docker
도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며, 이 두 가지가 도커 엔진의 핵심입니다. 사실 이미지와 컨테이너는 이번 장에서 설명한 것보다 훨씬 복잡한 구조지만 처음은 이미지와 컨테이너가 무엇이고 어떤 방식으로 사용되는지만 이해하면 됩니다.
도커에서 사용하는 이미지의 이름은 기본적으로
[저장소이름]/[이미지이름]:[태그]
예
alicek106/ubuntu:14.04
alicek106/ubuntu:latest
저장소 / 이미지이름:이미지 버전
저장소 이름
: 이미지가 저장된 장소를 의미합니다. 저장소 이름이 명시되지 않은 이미지는 도커에서기본적으로 제공하는 이미지 저장소인 도커 허브의 공식 이미지를 뜻합니다. 그러나 이미지를 생성할 때 저장소 이름을 명시할 필요는 없으므로 생략하는 경우도 있습니다.
이미지 이름
: 해당 이미지가 어떤 역할을 하는지 나타냅니다. 위 예시는 우분투 컨테이너를 생성하기 위한 이미지라는 것을 알 수 있습니다. 이미지의 이름은 생략할 수 없으며 반드시 설정해야 합니다.
태그
: 이미지의 버전 관리, 혹은 리비전(Revision) 관리에 사용합니다. 일반적으로 14.04와 같이 버전을 명시하지만 태그를 생략하면 도커 엔진은 이미지의 태그를 "latest"로 인식합니다.
도커 컨테이너
도커 이미지는 우분투, CentOS 등 기본적인 리눅스 운영체제부터 아파치 웹 서버, MySQL 데이터베이스 등의 각종 애플리케이션, 하둡, 스파크, 스톰 등의 빅데이터 분석 도구까지 갖가지 종류가 있습니다. 이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 바로 도커 컨테이너가 됩니다.
예를 들어, 웹 서버 도커 이미지로부터 여러 개의 컨테이너를 생성하면 생성된 컨테이너의 개수만큼 웹 서버가 생성되고, 이 컨테이너들은 외부에 웹 서비스를 제공하는 데 사용됩니다.
컨테이너는 이미지를 "읽기 전용"으로 사용하되 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로 컨테이너에서 무엇을 하든지 원래 이미지는 영향을 받지 않습니다. 각 컨테이너는 각기 독립된 파일시스템을 제공받아 분리돼 있어 다른 어플리케이션, 호스트에는 어떠한 영향도 미치지 않습니다.
예를 들어, 우분투 도커 이미지로 두 개의 컨테이너를 생성한 뒤 A 컨테이너에 MySQL, B 컨테이너에 아파치 웹 서버를 설치해도 각 컨테이너는 서로 영향을 주지 않을뿐더라 호스트에도 아무런 영향을 주지 않습니다.
도커는 '데이터 또는 프로그램을 격리시키는' 기능을 제공한다.
개인용 컴퓨터 서버에는 여러 가지 프로그램이 함께 동작한다.
개인용 컴퓨터는 엑셀, 메일 등 여러 프로그램을 동시에 사용하고, 서버도 MySQL, 아파치 등 여러 프로그램이 함께 동작한다.
도커는 이렇게 다양한 프로그램과 데이터를 각각 독립된 환경에 격리하는 기능을 제공한다.
데이터나 프로그램을 독립된 환경에 격리하는 이유
프로그램은 단독으로 동작하는 것이 아니라 어떤 실행 환경, 라이브러리, 다른 프로그램을 이용해 동작한다. PHP로 작성도니 프로그램을 실행하려면 PHP 실행 환경이 필요하고, 파이썬 프로그램은 다른 라이브러리를 사용하는 경우가 많다.
소프트웨어 역시 단일 프로그램이 아니라 여러 개의 프로그램으로 구성된 경우가 많다. 예를 들어, 워드프레스는 MySQL 데이터베이스를 따로 갖추지 않으면 사용할 수 없습니다.
같은 프로그램, 라이브러리, 폴더를 사용하면 설정 오류가 발생하여 프로그램이 잘 동작하지 않습니다.
격리를 통해 각자만의 환경에서 동작하여 이와같은 오류를 막을 수 있습니다.
서버의 두 가지 의미
도커는 서버에서 사용되는 소프트웨어입니다.
서버는 어떤 서비스를 제공하는 것을 가리킵니다. 서버는 기능적 의미의 서버, 물리적 컴퓨터로서의 서버 두 가지 의미를 갖습니다. 웹 서버, 메일 서버 등등 기능적 의미의 서버를 가리킵니다.
하나의 물리적 컴퓨터에 여러 개의 기능적 의미의 서버를 함꼐 둘 수 있습니다.
서버라고 하면 특별히 복잡할 것 없이 컴퓨터일 뿐입니다. 개인용 컴퓨터는 개인이 사용하지만 서버는 여러 사람이 원격으로 접근해 사용합니다. 서버도 개인용 컴퓨터와 마찬가지로 운영체제가 동작하고, 그 위에 소프트웨어를 실행하는 것은 똑같습니다.
서버의 기능은 "소프트웨어가 제공"하는 것으로 소프트웨어를 설치하면 "서버"의 기능을 가지게 됩니다. 아파치 웹 서버 소프트웨어를 설치하면 "웹 서버", Sendmail 메일 서버 소프트웨어를 설치하면 "메일 서버"가 됩니다.
그리고 서버의 기능이 소프트웨어에서 나오기 때문에 한 컴퓨터에서 웹, 메일, FTP 서버를 운용할 수 있습니다.
출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스
'쿠버네티스 > Docker' 카테고리의 다른 글
컨테이너의 기본적인 사용 방법 (1) | 2023.10.22 |
---|---|
도커의 동작 원리 (2) | 2023.10.22 |
도커 (0) | 2023.09.14 |
무엇을 컨테이너로 만드나 (0) | 2023.07.23 |
컨테이너 알아보자 (0) | 2023.07.23 |