Tech & TIL

Docker 튜토리얼 [파이썬] - 2 본문

MLOps

Docker 튜토리얼 [파이썬] - 2

Jadon Yang 2022. 5. 9. 16:30

Run your image as a container

Overview

지난 튜토리얼에서 간단한 파이썬 애플리케이션을 만들었고 image를 만드는 Dockerfile을 생성했다. 말아놓은 이미지를 Run하여 애플리케이션이 정상적으로 동작시킬 수 있었다.

A container is a normal operating system process except that this process is isolated in that it has its own file system, its own networking, and its own isolated process tree separate from the host.

컨테이너는 쉽게 말해 HOST OS와 독립적으로 존재하는 환경이라고 생각하면 된다.

도커 이미지를 컨테이너 안에서 실행하고 싶으면 docker run 명령어를 사용하면 된다.

$ docker run python-docker

실행되면 app.py에서 만든 애플리케이션이 로컬호스트 5000포트에서 실행이 되고 있다고 뜬다. 하지만 해당 링크로 접속해보면 아무것도 뜨지 않는다.

$ curl localhost:5000

위 명령어를 입력하면 Fail to connect 에러가 뜬다. localhost:5000에 연결할 수 없다는 말이다. 공식 문서에서는 isolation 환경에서 컨테이너가 띄워져있기 때문이라고 설명한다.

이것을 해결하기 위해서 --publish flag를 사용해보자.

실행중인 컨테이너를 종료하고 싶다면 ctrl + c를 입력하자.

$ docker run --publish 8000:5000 python-docker

위 명령어는 expose port 5000 inside the container to port 8000 outside the container 를 의미한다.

Flask application을 실행시킬때 포트를 따로 지정해주지 않았고 기본값이 5000이다. --publish를 사용하여 로컬호스트 8000포트를 컨테이너 5000포트로 연결해준 것이다.

curl 명령어를 날려보면 제대로 동작하는 것을 확인할 수 있다.

List containers

실행중인 컨테이너 확인하기

$ docker ps

실행중인 컨테이너 멈추기

$ docker stop [container name]

존재하는 컨테이너 모두 확인하기

$ docker ps -a

컨테이너 지우기

$ docker rm [container name]

특정 이름으로 컨테이너 실행하기
Options

  • d: detached mode
  • p: publish
    $ docker run -d -p 8000:5000 --name rest-server python docker

Next steps

이번 튜토리얼에서는 도커 이미지를 컨테이너 안에서 실행하는 방법에 대해 배웠다.

다음 장에서는 데이터베이스를 컨테이너 내부에서 실행하는 방법과 파이썬 어플리케이션에 연결하는 방법에 대해 다뤄볼 예정이다.

Reference

Docker Official Document

'MLOps' 카테고리의 다른 글

Docker 문법 정리  (0) 2022.05.09
Docker 튜토리얼 [파이썬] - 1  (0) 2022.05.09
Comments