728x90
반응형

도커파일(Dockerfile)이란 사용자가 도커 이미지를 쉽게 만들 수 있도록 도와주는 템플릿입니다.

 

기본 명령어

FROM -> Dockerfile이 어떤 이미지를 base image로 사용할 것인지 명시해줌

# FROM <image>[:<tag>] [AS <name>]

# EX)
FROM ubuntu
FROM ubuntu:18.04
FROM nginx:latest AS ngx

 

COPY -> <src>의 파일, 디렉토리를 <dest> 경로에 복사

# COPY <src>... <dest>

# EX)
COPY 1.txt /test/1.txt
COPY my-dir /test-dir

 

RUN -> 명시한 커맨드를 도커 컨테이너에서 실행

# RUN <command>

# EX)
RUN pip install numpy
RUN pip install -r requirements.txt

 

CMD -> 명시한 커맨드를 도커 컨테이너가 시작될 때 실행

하나의 도커 이미지에서 하나의 CMD만 실행 가능하다.

# CMD <command>

# EX)
CMD python main.py

 

WORKDIR -> 이후 작성될 명령어를 컨테이너 내의 어떤 디렉토리에서 수행할 것인지를 명시해줌

# WORKDIR /path/to/workdir

# EX)
WORKDIR /home/test

 

ENV -> 컨테이너 내부에서 지속적으로 사용될 환경 변수의 값을 설정

# ENV <key> <value>
# ENV <key>=<value>

# EX)
ENV LANG ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8

 

EXPOSE -> 컨테이너에서 뚫어줄 포트/프토로콜을 지정

프로토콜을 지정하지 않으면 TCP가 디폴트로 설정됩니다.

# EXPOSE <port>
# EXPOSE <port>/<protocol>

# EX)
EXPOSE 8080

 

Dockerfile 작성 예시

# base image를 ubuntu 최신 버전으로 설정
FROM ubuntu:latest

#  apt-get update 명령어 실행
RUN apt-get update

# 도커 컨테이너가 시작될 때, "Hello World!" 출력
CMD ["echo", "Hello World!"]

위와 같이 Dockefile을 생성한 후 아래 명령어를 실행해주면 도커 이미지가 생성됩니다.

docker build -t test-image:v1.0.0 .

설명하자면 이름이 my-image고 태그가 v1.0.0인 이미지를 현재 경로에 있는 Dockerfile로부터

빌드하겠다는 명령어입니다. 

 

이미지가 생성되고 나서 아래 명령어를 통해 도커 컨테이너를 실행하면

Hello World!가 출력되는 것을 확인할 수 있습니다.

docker run test-image:v1.0.0

728x90
반응형

'MLOps' 카테고리의 다른 글

도커(Docker) 설치, 명령어  (0) 2021.11.18
MLOps란?  (0) 2021.11.16
GCP 인스턴스, 스토리지 버킷 생성하기(ssh 접속, gsutil, 권한 설정)  (0) 2021.06.08
728x90
반응형

오늘은 MLOps 공부 그 첫 번째 도커에 대해 간단히 알아보도록 하겠습니다.

우선 도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는

오픈 소스 프로젝트입니다. 사용해보시면 느낌이 확 오는데 가상 머신에 비해 배포하는 것이 너무 편합니다.

 

도커 설치

도커를 리눅스 환경에 설치하는 방법은 아주 간단합니다. 

sudo wget -qO- http://get.docker.com/ | sh

 위 명령어를 실행하면 바로 설치가 됩니다. 설치 후 아래 명령어를 실행시켰을 때 아래 이미지처럼 출력되면 끝입니다.

sudo docker run hello-world

 

명령어

docker run -> 도커 컨테이너를 실행

많은 옵션들이 있는데 아래 명령어로 예시를 들자면 

docker run -it --name test ubuntu:latest

-it -> 컨테이너를 실행시키는 동시에 interactive 한 터미널로 접속

--name -> 컨테이너 id는 알아보기가 어렵기에 구분하기 쉽도록 이름을 지정

-it 옵션을 붙였기에 명령어 실행 후 새로운 터미널에 접속된 것을 확인할 수 있습니다.

컨테이너의 이름이 test1인 것을 확인할 수 있습니다.

 

docker images -> 도커 이미지 리스트를 출력

위에서 도커가 설치됐는지 확인할 때 생성한 hello-world 이미지와

docker run 명령어 예시를 들 때 생성한 ubuntu 이미지가 출력되는 것을 확인할 수 있습니다.

 

docker ps -> 실행 중인 도커 컨테이너 리스트를 출력

확인을 위해 아래 명령어를 실행시키고 나서 docker ps 명령어를 실행하면 

docker run -it -d --name test1 ubuntu:latest

docker run 명령어에서 -d 옵션은 백그라운드에서 컨테이너가 계속 실행되도록 해준다.

test1 컨테이너가 출력되는 것을 확인할 수 있습니다.

옵션으로 -a를 넣고 실행하면 실행되었던 컨테이너까지 출력이 됩니다. 

 

docker stop -> 실행 중인 도커 컨테이너를 중단

docker stop [컨테이너 id]와 같은 방식으로 사용하는데 id는 다 칠 필요 없고 겹치는 숫자가 없을 때까지만

입력해주면 됩니다. 예를 들어 1234, 1289 2개의 컨테이너가 있다면 123 까지만 처도 1234 컨테이너가 중단됩니다. 

 

docker rm -> 도커 컨테이너를 삭제

test, test1 컨테이너를 중단하니 docker ps, docker ps -a 명령어에서 출력되지 않는 것을 확인할 수 있습니다.

 

docker rmi -> 도커 이미지 삭제

ubuntu 이미지가 삭제된 것을 확인할 수 있습니다.

 

만약 아래와 같은 에러가 뜬다면

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied

아래 명령어를 실행시키시면 됩니다. 저는 이걸로 해결됐습니다.

sudo chmod 666 /var/run/docker.sock

 

728x90
반응형

'MLOps' 카테고리의 다른 글

도커파일(Dockerfile) 작성  (0) 2021.11.21
MLOps란?  (0) 2021.11.16
GCP 인스턴스, 스토리지 버킷 생성하기(ssh 접속, gsutil, 권한 설정)  (0) 2021.06.08

+ Recent posts