-
Notifications
You must be signed in to change notification settings - Fork 18
~K.1. 도커라이징: 도커에 대해서
기초 프로젝트에서 따라하기 기법으로 만들었던 mysql을 떠올려볼까요? (데이터베이스 로컬 개발환경 구축)
본래, mysql을 각 OS에 설치하기 위해서는 더 복잡한 과정을 거쳐야합니다.
상기 링크를 보시면, 각 OS (윈도우, 맥OS, 리눅스 등)에 따라 설치방법도 상이하고 과정 자체도 매우 귀찮게 느껴집니다.
하지만, 우리는 도커를 설치하고, docker run
만으로도 원하는 mysql을 손쉽게 띄울 수 있었던걸 기억하시나요?
이렇게 특정 애플리케이션을 신속하게 구축, 테스트 배포할 수 있는 소프트웨어 플랫폼이 도커입니다.
즉, 현재 나의 호스트 PC/서버의 OS환경을 신경쓸 필요없이 도커만 설치되어있다면, 원하는 애플리케이션을 실행시킬 수 있습니다.
도커를 통해 실행된 소프트웨어 구동 격리 환경
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f350eea40660 mysql:5.7 "docker-entrypoint.s…" 27 hours ago Up 27 hours 0.0.0.0:3306->3306/tcp, 33060/tcp testdb
<출처 : https://docs.docker.com/get-started/overview/ >
흔히 도커가 등장하기 이전엔 우리는 VM을 사용했었습니다.
도커 | VM |
---|---|
도커데몬 | 하이퍼바이저 |
프로세스 | 하드웨어 가상화 |
호스트 OS위, 컨테이너 프로세스 | 가상 하드웨어 위, 게스트 OS |
VM은 OS전체를 띄우기 때문에, 비교적 무겁고 성능문제가 존재합니다.
이에 반해 도커는 호스트 OS의 자원을 이용하며, 필요한 만큼 CPU와 메모리를 이용하기 때문에, 성능적으로 우수합니다.
컨테이너 내부에도 접근할 수 있어, VM에서 할 수 있었던 것들 대부분이 가능합니다.
격리된 다른 환경을 만드는 점에서는 동일하지만, 둘의 OS자원 이용방법은 상기와 같이 다릅니다.
이미지는 컨테이너 실행에 필요한 파일, 설정, 환경 등의 집합체입니다. 하나의 이미지를 통해서 복수개의 컨테이너를 생성할 수 있고, 컨테이너가 바뀌더라도 바라보는 이미지는 불변합니다.
이미지는 복수개의 레이어 형태를 가지고 있고, 변경되는 부분만 재생성하기 때문에, 빌드 속도 등에 좋은 영향이 있습니다.
도커이미지는 쉽게 꺼내어 쓰기 쉽도록 Docker hub나 Docker registry 저장소를 만들어 관리할 수 있습니다.
$ docker build -t asdf . 2.7.0
[+] Building 0.2s (14/14) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 34B 0.0s
=> [internal] load metadata for docker.io/library/python:3.8 0.0s
=> [1/9] FROM docker.io/library/python:3.8 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 6.72kB 0.0s
=> CACHED [2/9] RUN adduser --disabled-password --gecos '' python 0.0s
=> CACHED [3/9] COPY ./requirements.txt /tmp/requirements.txt 0.0s
=> CACHED [4/9] RUN pip install --user -r /tmp/requirements.txt 0.0s
=> CACHED [5/9] RUN pip install --user uwsgi==2.0.19.1 0.0s
=> CACHED [6/9] COPY --chown=python:python ./ /var/www/gogglekaap 0.0s
=> CACHED [7/9] WORKDIR /var/www/gogglekaap 0.0s
=> CACHED [8/9] RUN chmod -R 766 /var/www/gogglekaap 0.0s
=> CACHED [9/9] RUN chmod +x ./etc/docker-entrypoint.sh 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:469c355ef42649dbcafe1905c4c1c1c5bd8e38ac89915b875068c352dbe22c10 0.0s
=> => naming to docker.io/library/asdf 0.0s
도커 이미지를 만들기위한 생성과정을 기록한 파일
Fastcampus 2021 ,by hidekuma