티스토리 뷰

Infrastructure

[DevOps] Introduction To Docker

Nickolodeon 2022. 11. 10. 23:43

What is Docker?
도커는 애플리케이션을 OS와 분리된 공간에서 컨테이너 형태로 사용할 수 있게끔 해주는 프로젝트이다. 

Docker Engine
도커 프로젝트의 핵심으로 컨테이너를 생성하고 관리하는 주체. 도커 엔진 만으로도 컨테이너 제어 및 다양한 기능을 사용할 수 있다.

Hypervisor and Docker
도커 이전에는 하나의 호스트 컴퓨터에서 여러 '가상 머신' 을 사용할 수 있게 하는 하이퍼바이저가 있었다.
'가상 머신' 이란?
물리적인 하드웨어로서의 컴퓨터가 아니라 소프트웨어를 사용하여 자원을 공급 받아 사용하는 주체이다. 각 가상 머신은 고유의 운영 체제를 가지고 있다. 하나의 호스트에서 여러 개가 운용될 수 있다.

How Docker substitutes Hypervisor
도커 컨테이너는 하이퍼바이저를 이용해 구현된 가상 머신들 하의 운영 체제와는 다르게,  이미지로 만들어 배포하기가 수월하다는 장점이 있다. 프로세스 단위로 관리되기 때문에 가상 머신과는 다르게 0에 가까운 성능 손실율을 보인다.

이해되지 않는 부분: 일반 호스트와 가상 머신의 차이가 무엇인지, 일반 호
스트에서 운영 체제가 돌아간 적이 있기나 한건지.

Features
도커는 리눅스에서 운영되는 것이 일반적이다. 만약 리눅스가 없다면 AWS ec2 등을 이용해 서버 인스턴스를 생성하여 리눅스 환경을 사용할 수 있다.

Docker Images
[저장소 이름](생략 가능)/[이미지 이름]:[태그] 의 형태로 되어 있다. 컨테이너를 생성할 때 사용된다. 예로, ubuntu:14.04 는 14.04 버전의 우분투 컨테이너를 위한 이미지의 이름이다.

Docker Containers
이미지와는 1:N 관계이다. 하나의 이미지로 여러 컨테이너를 만들 수 있다. 각 컨테이너는 독립되어 있으며, 애플리케이션 설치 및 변경에 서로 영향을 주고받지 않는다.
docker run -i -t [이미지 이름] 으로 컨테이너를 생성하고 내부로 들어갈 수 있다.

i 는 상호 입출력 가능하게 하고 t 는 bash 셸을 사용할 수 있게 한다. `create` 를 사용하면 내부로 들어가지 않고 생성만 한다. 이후 `docker start` 와 `docker attach` 를 사용하여 차례로 컨테이너를 시작하고 컨테이너 내부로 들어간다.

IP 바인딩
도커를 실행하는 호스트의 외부에 컨테이너를 노출하기 위해서는 IP 주소를 바인딩 해주어야 한다. 포트 포워딩 옵션인 -p가 사용된다. [호스트 포트]:[컨테이너 포트] 의 형식을 사용한다. 예로, 웹 서버를  사용하기 위해 80:80 과 같이 바인딩해 줄 수 있다.

도커의 철학
도커는 한 컨테이너에 하나의 프로세스만 실행하고자 한다.

도커 볼륨
데이터베이스를 도커 컨테이너에 종속되게 하면, 도커가 내려갈 때 데이터가 모두 사라진다는 단점이 있다. 영속적인(Persistent) 데이터베이스로 관리하기 위해선 여러가지 방법을 사용할 수 있다. 
그 중 한 가지 방법으로 도커 컨테이너와 호스트의 파일 시스템을 동기화한다. 컨테이너를 'run' 커맨드를 사용해 생성할 때 '-v' 옵션을 추가한 뒤 동기화하고 싶은 공간들을 [호스트의 공유 디렉터리](명시하는 순간 생성된다):[컨테이너의 공유 디렉터리] 형태로 동기화해주면 된다.

사실 정확하게는 동기화가 아니라 완전히 같은 디렉터리이다.

Linux 명령어
hello 문자열이 담긴 hello.log 파일을 저장하는 커맨드: echo hello > hello.log

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함