Docker 정리
슬랙슨에 처음 입사하여 처음으로 Docker 를 알게되었다.
가상머신을 통한 서버 운용은 여러 대기업을 다니며 설정을 많이 접해왔고 또한 해당 시스템은 직관적이기에
무리없이 운용하였으나 Docker 를 통한 Linux Container 를 처음 접하고 사실 많이 새롭고 놀라운 경험을 했기에
정리차원에서 해당 블로그를 정리한다.
Docker 는 다음의 이미지로 설명이 되는 구조이다.
상위 이미지에서 볼수 있듯이 Docker 엔진 상위에 Docker 컨테이너가 위로 올라가는 구조이며
해당 구조는 많은 이점이 있으며, 대표적으로 가상 컨테이너 개념의 격리된 공간에서 프로세스가 동작하는 기술에 대한 이점이 있다.
특징
- Docker Image
도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image 라 한다. 컨테이너를 생성하고 실행하기 위한 모든 설정값을 지닌것으로 더 이상의 의존성 파일을 컴파일 하거나 이것저것 설치 할 필요가 없는 상태의 파일을 의마한다. 따라서 Docker Image는 특정 설정에 독립적이다.
- Docker Container
이미지를 실행한 상태로, 응용 프로그램의 종속성과 함께 응용프로그램 자체를 독립적으로 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 처리한다.
- Dockerfile
Dockerfile 은 DockerImage를 생성하기 위한 스크립트(설정파일)이다.
여러기자 명령어를 토대로 Dockerfile을 작성한 이후 빌드하면 Docker 는 Dockerfile 에 나열된 명령문을 차례대로 수행하며 생성해준다.
Example) Dockerfile 로 생성
1 | # 기본 이미지를 python3.7.9 로 설정 |
- Docker-compose
도커 컨테이너로 시스템을 구축하면 하나 이상의 컨테이너가 서로 통신하며, 그 사이에 의존관계가 생긴다.
이런 방식으로 시스템을 구축하다 보면 단일 컨테이너를 다룰 때는 문제가 되지 않던 부분에도 주의가 필요하게 된다.
이때 필요한 것이 Docker compose 이다.
Example) docker-compose.yml 생성
1 | version: '3' |