개발을 처음 시작하는 많은 이들이 개발 환경을 구성하다가 포기한다. 그만큼 개발 환경을 구성하는 일은 어렵고 고통스럽다. 개발자가 되면서부터는 개발 환경을 구성하는 것이 어렵지 않았지만 배포 환경에 따른 종속성 문제는 또다른 고통이 된다.
이런 문제들 속에서 도커의 "종속성에서 벗어나서 내가 원하는 서비스를 가상의 공간에서 설치해 사용한다"는 점은 매력적이었다. 내가 구성하고 설정을 맞춰놓은 서비스를 그대로 배포하고 관리할 수 있다는 장점은 고통을 줄여 줄 것이라 믿는다. 약 1달간 따라하며 배우는 도커와 CI 환경
이라는 책을 보면서 도커의 기본을 익히고 기록하고자 한다.
도커를 배우게 되면 컨테이너와 이미지라는 단어를 배우게 된다. 컨테이너와 이미지는 항상 함께 설명된다. 책에서는 도커 공식사이트를 인용하여 각각을 설명한다.
도커 컨테이너
는 모든 코드와 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.
도커 이미지
는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든것을 포함하는 가볍고 독립적이며 실행가능한 소프트웨어 패키지다.
% docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:53:34 2021
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0