티스토리 뷰

Ubuntu에 Docker를 설치해보자

설치 기준 Ubuntu 18.04 LTS를 사용했습니다.

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update
$ apt-cache policy docker-ce

Ubuntu에서는 curl을 이용해 설치하는게 가장 빠르고 정확합니다.

 

마지막 명령어를 터미널에 입력하게 되면 docker-ce 패키지에 대한 정보들이 나옵니다. Installed항목이 none이므로 아직 설치되지 않았다는 것을 의미합니다.

 

그럼, docker을 설치해 봅시다.

apt install docker-ce

 

설치가 성공적으로 끝나게 되면 docker가 정상적으로 실행중인지 알아봐야합니다.

 

다음 명령어를 사용하면 docker의 상태를 알 수 있습니다.

sudo systemctl status docker

 

Dockerfile로 Docker Image 빌드하기

Dockerfile은 Docker Image의 설정 파일입니다. 일일히 Docker 명령어를 사용하지 않아도 자동으로 이미지를 빌드할 때실행해주는 일종의 스크립트입니다. 그럼, Flask를 사용해 Hello, World!를 출력해주는 웹서버 이미지를 만들어 보겠습니다.

 

텍스트 에디터를 이용해 app.py를 아래와 같이 작성해줍니다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, world!'

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

 

Docker 이미지를 빌드하다 보면 여러가지 Python 라이브러리가 필요한데, pip를 이용해 일일히 설치해주지 않기 위해서는 requirements.txt를 이용해 한번에 설치해줘야 합니다. requirements.txt를 작성해봅시다. 필요한 패키지는 Flask이기때문에 하나만 넣어두겠습니다.

 

Flask

 

이제, Docker 이미지의 기본 설정 스크립트를 담당하는 Dockerfile 을 작성해보겠습니다.

 

FROM ubuntu:18.04
MAINTAINER your_name "email@gmail.com"
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["app.py"]

이와 같이 작성된 Dockerfile을 통해 ubuntu 18.04 이미지를 받아 파이썬 환경 설정을 하고, 현재 경로에 있는 파일을 모두 복사해 도커 이미지의 app폴더 안에 집어 넣습니다. 그리고 requirements에 있는 패키지들을 설치한 후 app.py를 실행하는 스크립트입니다.

 

마지막으로, Docker이미지를 빌드하고 실행하기 위해 다음 명령어를 실행합시다.

$ docker build -t flask-application:latest .
$ docker run -d -p 5000:5000 flask-application

Flask 웹 서버의 기본 포트는 5000번이기 때문에 docker에서도 5000포트를 사용한다고 해줘야 합니다.

 

그리고 127.0.0.1:5000으로 접속해 보시면 Hello, World! 가 출력된 페이지를 볼 수 있습니다.

 

댓글
댓글쓰기 폼
공지사항
Total
21,136
Today
0
Yesterday
27
링크
TAG
more
«   2022/07   »
          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
31            
글 보관함