티스토리 뷰

Build once, Run anywhere.

 

도커 이미지는 패키지나 라이브러리 보다 더 상위(?)의 개념이다. 어떤 어플리케이션을 개발하는 데 필요한 환경(버전, 라이브러리 등)을 통째로 패키징한 데이터다. 따라서 받으면 누구나 어디서나 같은 결과가 나오는 것을 지향한다.

 

내가 만든 머신러닝 어플리케이션 코드를 도커 이미지로 만들고, 남들과 공유하는 방법에 대해서 알아보자.

Dockerfile 

Dockerfile 기본 명령어는 아래와 같다.

명령어 기능
FROM base image로 어떤 이미지를 사용할 것인지를 명시
COPY 파일 혹은 디렉토리를 복사하는 명령어
RUN 도커 컨테이너에서 명령을 실행시키는 명령어
CMD 컨테이너가 시작될 때 실행하도록 하는 명령어, RUN과 다르게 하나의 도커 이미지에서는 하나의 CMD만 실행할 수 있음
WORKDIR 어떤 디렉토리 내에서 수행할 것인지 명시하는 명령어
ENV 컨테이너 내부에서 지속적으로 사용될 환경 변수의 값을 설정하는 명령어
EXPOSE 컨테이너에서 열어줄 포트/프로토콜을 지정하는 명령어(default : TCP)

먼저 Dockerfile을 만든 후, vim 편집기를 이용해서 아래의 간단한 명령어들을 만들어 주었다.

# base image 를 ubuntu 18.04 로 설정합니다.
FROM ubuntu:18.04

# apt-get update 명령을 실행합니다.
RUN apt-get update

# DOCKER CONTAINER 가 시작될 때, "Hello FastCampus" 를 출력합니다.
CMD ["echo", "Hello FastCampus"]

그 다음, build 명령어를 통해서 이미지를 만들어 준다.

$ docker build -t my-image:v1.0.0 .

여기서 마지막에 .을 붙이는 이유는 현재 디렉토리 경로를 설정해주기 위함이다.

이미지 빌드 결과

이후에 이미지를 확인해보고 run하면 CMD로 시작 시에 실행시키는 명령어가 잘 작동하는 것을 확인할 수 있다.

 

Docker Registry

내가 빌드한 이미지를 Docker Registry에 등록할 수 있다. 이 말인 즉슨, 오픈 소스로 올려진 이미지들을 나도 받아서 쉽게 사용할 수 있다는 뜻이다.

 

다음 명령어들을 터미널에서 실행하면 registry를 띄울 수 있다.

$ docker run -d -p 5000:5000 --name registry registry
$ docker tag my-image:v1.0.0 localhost:5000/my-image:v1.0.0

레지스트리에 등록된 my-image

이제 로컬에서 만든 이미지를 레지스트리에 push(업로드)해 보도록 한다.

$ docker push localhost:5000/my-image:v1.0.0

Docker Hub

 

docker hub 메인페이지

docker hub를 사용하면 내부망이 아닌 웹에 업로드하고 받을 수 있다(마치 github처럼).

docker login 명령어를 이용해서 접속하면 레지스트리에서 tag를 생성하고 push하는 것과 동일하게 사용할 수 있다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함