지난 튜토리얼에서 간단한 파이썬 애플리케이션을 만들었고 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 명령어를 날려보면 제대로 동작하는 것을 확인할 수 있다.
실행중인 컨테이너 확인하기
$ docker ps
실행중인 컨테이너 멈추기
$ docker stop [container name]
존재하는 컨테이너 모두 확인하기
$ docker ps -a
컨테이너 지우기
$ docker rm [container name]
특정 이름으로 컨테이너 실행하기
Options
$ docker run -d -p 8000:5000 --name rest-server python docker
이번 튜토리얼에서는 도커 이미지를 컨테이너 안에서 실행하는 방법에 대해 배웠다.
다음 장에서는 데이터베이스를 컨테이너 내부에서 실행하는 방법과 파이썬 어플리케이션에 연결하는 방법에 대해 다뤄볼 예정이다.