서버/인프라 엔지니어를 위한 DevOps
를 읽고 정리한 내용입니다.
Docker란 Docker, Inc.에서 개발한 소프트웨어로, 컨테이너 기술을 활용한 것 중 하나이며 Go 언어로 작성되었다.
바이너리 파일 docker는 컨테이너를 관리하는 데몬이면서 사용자가 이용하는 클라이언트 도구이기도 하다.
편의상 데몬을 Docker 데몬, 클라이언트를 Docker 명령이라고 칭한다.
Docker 데몬은 리눅스 컨테이너를 이용하고 있으며 리눅스에서 작동한다. 하지만, 서버 가상화 기술을 활용하고 포트나 볼륨 바인드 등을 이용해서 윈도우나 맥 OS에서도 원활하게 Docker를 이용할 수 있도록 되어 있다.
Docker을 이용하는 형태는 아래와 같이 3가지로 나눌 수 있다.
1. Docker 명령과 데몬을 모두 단말에서 직접 실행
2. Docker 명령은 단말에서 직접 실행하고, Docker 데몬은 단말의 가상 환경에서 실행되고 있는 리눅스에서 실행
3. Docker 명령은 단말에서 직접 실행하고, Docker 데몬은 별도로 준비한 리눅스 서버에서 실행
가지고 있는 단말이 리눅스라면 1~3번의 모든 형태로 이용할 수 있다.
단말이 윈도우나 맥 OS라면 2번이나 3번의 형태로 이용할 수 있다.
Docker는 두 가지 과정으로 실행된다.
docker build
docker run
서버의 경우에는 1대의 서버에서 여러 개의 프로세스를 실행하지만, Docker의 경우에는 하나의 컨테이너에 하나의 마스터 프로세스를 실행하도록 구성해야 한다.
→ 운용 관리 면에서의 편리성과 안전성을 실현
하나의 컨테이너에서 여러 개의 프로세스를 실행시키는 것은 기술적으로 가능하지만, 프로세스 관리를 위한 또 다른 프로세스를 관리하기 위해 컨테이너를 관리해야 하며 운용이 복잡해진다.
생성한 Docker 이미지는 주변의 Docker 데몬에 위치시킬 수 있다.
Docker Hub는 무료 이미지 공개 서비스로, Docker Hub에 Dockerfile을 등록하면 빌드 과정을 실행하고 생성된 Docker 이미지를 공개해준다.
Dockerfile을 등록할 때는 GitHub와 연계하여 편리하게 이용할 수 있다.
Docker 명령에는 Docker Hub에 있는 이미지를 검색하는 기능이 있어 Docker Hub에 이미지를 공개하면 누구나 손쉽게 이용할 수 있게 된다.
Distribution이라는 소프트웨어도 있어 이미지를 사내에서처럼 범위를 한정해서 공유하기 위한 프라이빗 리포지토리를 생성할 수도 있다.
docker pull → docker run
docker pull
: Docker 데몬 상에 대상 Docker 이미지가 없을 경우에는 자동으로 받기를 한다.