728x90

애저(Azure)를 이용하여 도커(Docker)를 구축하고, Dockerfile을 이용하여 직접 도커 이미지를 만들고 컨테이너 만들어보기

들어가며

  • 애저(Azure)를 이용하여 구축한 도커(Docker)에서 @Dockerfile@을 이용하여 직접 도커 이미지를 만들고, 이 이미지를 이용하여 컨테이너를 만들어 보자.
  • 이 글은 이전 글(https://dev-astra.tistory.com/390)에 이어서 진행된다.

 

실습하기

@Dockerfile@을 이용하여 직접 도커 이미지를 만들어보기

  • 다음과 같이 홈 디렉터리(@$HOME@)로 이동한 후, @docker-practice@ 디렉터리를 생성하고, 그 안에 @Dockerfile@ 파일을 만든다.
$ cd $HOME
$ mkdir docker-practice
$ cd docker-practice
$ touch Dockerfile

 

  • @vi@ 에디터를 이용하여 @Dockerfile@ 파일을 수정한다.
$ vi Dockerfile
@-bash: vi: command not found@ 안내문이 출력될 경우
  • 도커에 @vi@가 설치되어 있지 않아 @vi@ 명령문이 발견되지 않았다는 안내문이 출력될 수 있다.
  • 이럴 때는 다음 명령을 실행하여 @vim@ 패키지를 설치해준다.
$ sudo apt-get install vim

 

Dockerfile 기본 명령어
명령어 설명
@FROM <image>[:<tag>] [AS <name>]@ @Dockerfile@이 Base Image로 어떠한 이미지를 사용할 것인지를 명시하는 명령어
@COPY <src> ... <dest>@ @<src>@ 파일 혹은 디렉터리를 @<dest>@ 경로에 복사하는 명령어 
@RUN <command>@
@RUN ["executable-command", "parameter1", "parameter2"]@
명시한 커맨드를 도커 컨테이너에서 실행하는 것을 명시하는 명령어
@CMD <command>@
@CMD ["executable-command", "parameter1", "parameter2"]@
@CMD ["parameter1", "parameter2"]@
- 명시한 커맨드를 도커 컨테이너가 시작될 때 실행하는 것을 명시하는 명령어 
- 비슷한 역할을 하는 명령어로 @ENTRYPOINT@가 있다. 
- 하나의 도커 이미지에서는 하나의 @CMD@만 실행할 수 있다는 점에서 @RUN@ 명령어와 다르다.
- @CMD ["parameter1", "parameter2"]@는 @ENTRYPOINT@와 함께 사용될 때 쓰인다.
@WORKDIR /path/to/workdir@ - 이후 작성될 명령어를 컨테이너 내의 어떤 디렉터리에서 수행할 것인지를 명시하는 명령어
- 해당 디렉터리가 없다면 생성한다.
@ENV <key> <value>@ 컨테이너 내부에서 지속적으로 사용될 환경 변수의 값을 설정하는 명령어
@EXPOSE <port>@
@EXPOSE <port>/<protocol>@
컨테이너에서 뚫어줄 포트/프로토클을 지정할 수 있다. (디폴트 : TCP)

 

  •  @Dockerfile@의 기본 명령어에 대한 자세한 내용은 아래의 공식 문서를 참고한다.
 

Dockerfile reference

 

docs.docker.com

 

  • 이제 도커 이미지를 만들어보자. 다음 명령을 실행한다.
    • @build@ 명령어는 도커 이미지를 생성하는 명령어이다.
    • @Dockerfile@을 참조해서 @my-image@ 이미지를 현재 경로(@.@)에 생성한다.
    • @-t@는 태그를 지정하는 옵션으로, 태그(버전)은 @v1.0.0@으로 설정한다.
$ docker build -t my-image:v1.0.0 .

 

  • 다음 명령을 실행하여 빌드된 도커 이미지가 생성되었는지 확인해본다.
$ docker images

 

생성한 도커 이미지를 이용하여 컨테이너 만들어보기

  • 다음의 명령을 실행하여 도커 이미지를 실행시킨다.
    • @run@ 명령어를 사용하여 도커 이미지를 실행하여 컨테이너를 생성한다.
    • @--name@ 옵션을 이용하여 컨테이너의 이름을 @demo1@로 설정한다.
    • 태그(Tag)가 @v1.0.0@인 @my-image@ 이미지를 사용한다.
$ docker run --name demo1 my-image:v1.0.0

 

참고 사이트

도커 공식 문서
 

Docker Docs: How to build, share, and run applications

 

docs.docker.com

 

728x90