도커(Docker)?
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 여기서 컨테이너는 격리된 공간에서 프로세스를 실행하는 기술을 말하는데, 이 기술을 사용하면 하나의 컨테이너에 애플리케이션과 그것을 실행하는 데 필요한 모든 종속성을 포함한다.
다시말해, 컨테이너환경에서 구축한 것은 어떤 환경에서도 똑같이 작동한다는 특징이 있다.
컨테이너 방식을 사용하면 얻을 수 있는 이득은 매우 많지만 몇가지만 말해보자면
- 의존성 충돌 문제의 해결
- 개발과 배포 환경의 일치
- 훨씬 쉬운 수평확장
- 각 서버에 새로운 내용을 배포하는 난이도 하락
일 것이다.
이 장점들 모두 컨테이너안에 구축된 환경이 컨테이너 밖과 완전히 격리되는 특징으로부터 생긴다.
그렇기 때문에 각기 다른 환경에서도 같은 컨테이너를 사용해 배포한다면, 똑같이 작동할 수 있다.
즉, 아래와 같은 끔찍한 상황을 미연에 방지할 수 있다.
도커의 주요 키워드
이미지 (Image)
컨테이너를 생성하기 위한 템플릿으로, 애플리케이션과 종속성을 포함한다. 이미지는 Dockerfile을 통해 만들어지며, 다른 사용자와 공유할 수 있다. 즉, 내 컨테이너 내부환경을 다른 사용자와 나눌 수 있다.
레지스트리 (Registry)
컨테이너를 생성하기 위한 템플릿으로, 애플리케이션과 종속성을 포함한다. 이미지는 Dockerfile을 통해 만들어지며, 다른 사용자와 공유할 수 있다. 즉, 내 컨테이너 내부환경을 다른 사용자와 나눌 수 있다.
Dockerfile
도커 이미지를 생성하기 위한 스크립트 파일로, 애플리케이션과 실행 환경을 설정한다. Dockerfile에는 베이스 이미지, 필요한 소프트웨어 설치, 애플리케이션 코드 복사 등의 명령들이 들어간다.
Docker Hub
도커 이미지를 공유하는 공식 저장소로, 다양한 오픈소스 프로젝트 및 기업용 이미지를 찾을 수 있다. 개인이나 팀이 공유하고 싶은 이미지를 업로드하고 다운로드할 수 있는 플랫폼이다.
Docker Hub Container Image Library | App Containerization
Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.
hub.docker.com
Docker Engine
도커 이미지를 실행하고 관리하는 소프트웨어다. 도커 엔진은 Dockerfile을 사용하여 이미지를 빌드하고, 이미지를 컨테이너로 실행한다.
Docker Compose
여러 컨테이너로 구성된 애플리케이션을 정의하고 관리하는 툴이다.
YAML 파일 형식으로 작성된 docker-compose.yml을 사용하여 서비스, 네트워크, 볼륨 등의 설정을 작성해두면, 한 번의 명령어로 편리하게 애플리케이션을 시작하거나 중지할 수 있다.
볼륨(Volume)
컨테이너의 데이터를 영구적으로 저장하는 방식이다.
컨테이너는 일시적이고 변경 가능하다. 여기서 볼륨을 사용하면 컨테이너가 삭제되거나 재시작될 때 데이터가 손실되지 않도록 데이터를 호스트 시스템에 저장할 수 있다.
물론 볼륨은 여러 컨테이너에서 공유하는 것도 가능하다.
도커 설치
우분투에서 도커 엔진을 설치하려면 아래 명령어를 입력해 도커 패키지를 설치해준다.
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
설치가 다 됐다면 한번 아래 명령어를 사용해서 제대로 설치 된건지 확인해본다.
sudo docker --version
sudo docker run hello-world
docker-compose 설치
우분투에서 도커 컴포즈를 설치하려면 아래 명령어를 입력해 설치해주면 된다.
sudo apt-get update
sudo apt-get install docker-compose-plugin
설치가 다 됐다면 한번 아래 명령어를 사용해서 제대로 설치 된건지 확인해본다.
docker compose version
결과가 제대로 나오면 성공이다.
'DevOps' 카테고리의 다른 글
[DevOps] 4/20 TIL : GitHub Action을 사용한 테스트 자동화 실습 (0) | 2023.04.21 |
---|---|
[DevOps] 4/20 TIL : CI/CD, 지속적 통합, 테스트 (0) | 2023.04.20 |
[DevOps] 부트캠프 1차 팀프로젝트 회고 (0) | 2023.04.05 |
[DevOps/Database] 데이터 파이프라인 (0) | 2023.03.30 |
[DevOps] CI/CD 파이프라인 (0) | 2023.03.18 |