도커란 무엇이고 왜 사용할까?

재능없는 개발자·2023년 5월 1일
0

도커란?

도커는 애플리케이션을 컨테이너에 담아 배포하고 실행할 수 있도록 하는 오픈소스 프로젝트이다.

컨테이너는 가상화 기술 중 하나로, 운영체제 수준에서 격리된 환경에서 애플리케이션을 실행할 수 있도록 해준다.

도커는 컨테이너를 사용하여 애플리케이션을 개발, 배포, 실행하기 위한 다양한 도구를 제공한다. 이를 통해 애플리케이션을 보다 쉽고 빠르게 배포하고, 운영할 수 있다.

또한, 도커는 호스트 운영체제에 영향을 받지 않고 컨테이너 내부의 애플리케이션을 실행할 수 있어, 이식성이 뛰어나다는 장점도 가지고 있다.

도커는 또한 Docker Hub라는 공식 레지스트리를 제공하여, 다양한 애플리케이션 이미지를 공유하고, 이를 기반으로 더욱 쉽게 애플리케이션을 개발 및 배포할 수 있다. 이러한 기능들을 통해 도커는 현재 컨테이너 가상화 기술 중 가장 널리 사용되고 있는 기술 중 하나이다.

도커의 컨테이너와 가상머신의 차이점

  • 가상머신

가상머신은 호스트 운영체제 위에서 하나의 게스트 운영체제를 실행하는 방식으로, 호스트와 게스트 운영체제 간에 하드웨어 가상화를 수행한다. 이를 통해 하나의 물리적인 서버에서 여러 개의 가상머신을 실행할 수 있다. 가상머신은 하나의 게스트 운영체제와 애플리케이션을 실행하기 위해 필요한 모든 라이브러리와 의존성 등을 포함하고 있기 때문에, 컨테이너에 비해 무겁고, 실행 시간도 더 오래 린다.

  • 도커 컨테이너

컨테이너는 독립적인 실행 단위이며, 호스트 머신과는 별도의 네트워크 인터페이스와 포트를 가진다. 이를 통해 컨테이너는 호스트 머신과 분리되어 독립적으로 실행될 수 있다.

도커의 컨테이너는 호스트 운영체제의 리눅스 커널을 공유하여, 격리된 프로세스 공간을 제공한다. 이를 통해 애플리케이션을 실행하기 위해 필요한 라이브러리와 의존성만을 포함하고 있어, 가볍고 빠른 실행 시간을 가지고 있다. 또한, 컨테이너는 호스트 운영체제와 공유하기 때문에, 가상머신보다 더 많은 수의 컨테이너를 실행할 수 있으며, 더욱 높은 이식성을 제공한다.

도커 이미지

도커 이미지는 서비스 운영에 필요한 서버프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶은 형태를 Docker Image라 한다. 더 이상의 의존성 파일을 컴파일 하거나 설치할 필요 없는 상태의 파일이다.

# 이미지 다운로드
docker pull [image_name]

# 도커 이미지들 확인
docker images

# 이미지 삭제
docker rmi image_name

도커 컨테이너

이미지를 실행한 상태로, 응용프로그램의 종속성과 함꼐 응용프로그램 자체를 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술

# 도커 이미지를 컨테이너화 하기
docker create -i --name [container_name] [image_name]

# 실행중인 컨테이너들 확인
docker ps

# 정지, 실행중인 컨테이너들 모두 확인
docker ps -a

# 도커 모든 컨테이너들 id만 확인
docker ps -aq

# 컨테이너 내부로 들어가기
docker exec -it [container_name]

# 컨테이너 정지
docker stop [container_name]

# 정지된 컨테이너 삭제
docker rm -f [container_name]

# 도커 이미지를 컨테이너화 하며 바로 그 컨테이너를 실행
docker run -d -p [host_port]:[container_port] --name [container_name] [image_name]

-d 이지미를 background에서 실행

--name 컨테이너에 이름 설정

-p 포트 포워딩 host-port : container-port

host-port로 접근한걸 container-port로 포트포워딩 시켜준다.

80:3000이렇게 적으면, 우리 컴퓨터의 80번으로 접속했을 시에 올라간 컨테이너의 3000번을 통해 실행된다.

컨테이너들은 각자의 가상머신을 사용하는 것과 같아 서로 독립적인 port를 가진다.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글