실행 환경의 일관성 & 독립성
스케줄 관리, 병렬작업관리, 유휴자원관리
장애 대응, 트래픽 대응
"Build Once, Run Anywhere"
컨테이너화 기술(Containerization) : 격리된 공간에서 프로세스를 실행시킬 수 있는 기술
컨테이너형 가상화를 구현하기 위한 상주 애플리케이션과 이를 관리하는 명령형 도구로 구성된다.
$sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o
/usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] http
s://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /de
v/null
$ sudo docker run hello-world
$ sudo usermod -a -G docker $USER
$ sudo service docker restart
$ docker pull ubuntu:20.04
$ docker images
$ docker ps
$ docker ps -a
$ docker run
$ docker exec
$ docker logs
$ docker stop
$ docker rm
$ docker rmi
-it
: -i
옵션 + -t
옵션--name
: 컨테이너 id대신 구분하기 쉽도록 이름 지정/bin/bash
: 컨테이너를 실행시킴과 동시에 실행할 커맨드. /bin/bash
는 bash 터미널을 사용하는 것을 의미-d
: 백그라운드에서 실행시켜서 컨테이너에 접속 종료하더라도 계속 실행중이 되도록 함-f
: 계속 watch 하며 출력Docker Image : 어떤 애플리케이션에 대해서 코드 뿐만이 아니라 dependent한 모든 것들을 함께 패키징한 데이터
Dockerfile : 사용자가 도커 이미지를 쉽게 만들 수 있도록 제공하는 템플릿
FROM <image>[:<tag>] [AS <name>]
# 예시
FROM ubuntu
FROM ubuntu:18.04
FROM nginx:latest AS ngx
<src>
의 파일 혹은 디렉토리를 <dest>
경로에 복사하는 명령어COPY <src>... <dest>
# 예시
COPY a.txt /some-directory/b.txt
COPY my-directory /some-directory-2
RUN <command>
RUN ["executable-command", "parameter1", "parameter2"]
# 예시
RUN pip install torch
RUN pip install -r requirements.txt
CMD <command>
CMD ["executable-command", "parameter1", "parameter2"]
CMD ["parameter1", "parameter2"] # ENTRYPOINT 와 함께 사용될 때
# 예시
CMD python main.py
CMD
WORKDIR /path/to/workdir
# 예시
WORKDIR /home/demo
ENV <key> <value>
ENV <key>=<value>
# 예시
# default 언어 설정
RUN locale-gen ko_KR.UTF-8
ENV LANG ko_KR.UTF-8
ENV LANGUAGE ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8
EXPOSE <port>
EXPOSE <port>/<protocol>
# 예시
EXPOSE 8080
***