본문으로 건너뛰기

[Container] podman 을 이용한 container image build

Flask 예제 앱을 Dockerfile과 buildah bud 또는 podman build로 이미지화하고, 로컬 실행 테스트 후 Docker Hub에 push하는 과정을 정리합니다.

요약

  • Dockerfile이 있는 소스에서 buildah bud -t flask-test-app:v1 . 또는 podman build -t flask-test-app:v1 .로 빌드합니다.
  • podman run -d -p 39999:80 --name test flask-test-app:v1로 실행하고 curl 127.0.0.1:39999로 확인합니다.
  • buildah login docker.io, buildah tag, buildah push 순서로 이미지를 Docker Hub에 올릴 수 있습니다.

목차

Build APP for Flask WEBAPP

이 문서는 Kubernetes Hands on LAB 에서 활용할 Flask WEBAPP 를 Build 하는 방법에 대해 포함 되어 있습니다.

Install git

$ yum -y install git

Clone source

$ git clone https://github.com/chhanz/flask-example-app.git

Check Dockerfile

해당 Source 는 아래와 같은 file 을 포함하고 있습니다.

flask-example-app/
├── Dockerfile         > Build 를 위한 Dockerfile
├── main.py            > Flask WEBAPP
├── README.md
└── requirements.txt   > Requirements Flask APP 

Dockerfile 는 아래와 같습니다.

FROM python:3.8.5-alpine3.12
MAINTAINER cheolhee.han@ibm.com

WORKDIR /usr/src/app

COPY . .
RUN pip install --no-cache-dir -r requirements.txt

CMD [ "python", "./main.py" ]

Build APP

아래 명령어를 통해 Build 를 수행합니다.

  • buildah 의 경우,
      $ buildah bud -t flask-test-app:v1 .
    
  • podman 의 경우,
      $ podman build -t flask-test-app:v1 .
    

TEST APP

아래 명령어를 통해 Container 를 시작합니다.

$ podman run -d -p 39999:80 --name test flask-test-app:v1
$ curl 127.0.0.1:39999

Push image

DockerHub 에 image 를 Push 하기위해 아래와 같이 Login 을 합니다.

$ buildah login docker.io
Username: < dockerhub id >
Password: < dockerhub pw >
Login Succeeded!

Push 할 image 의 TAG 를 수정합니다.

$ buildah tag flask-test-app:v1 docker.io/<dockerhub id>/flask-test-app:v1

아래 명령어를 통해 PUSH 를 합니다.

$ buildah push docker.io/<dockerhub id>/flask-test-app:v1

Push 가 완료되면 Dockerhub 로 접속해서 확인합니다.

마무리

다음 LAB 위해 Podman Container 를 종료합니다.

$ podman rm -f $(podman ps -aq)

참고 문서

자주 묻는 질문

Dockerfile로 이미지를 빌드할 때 buildah와 podman 명령은 어떻게 다른가요?

buildah는 buildah bud -t flask-test-app:v1 ., podman은 podman build -t flask-test-app:v1 .를 사용하며 둘 다 같은 Dockerfile로 이미지를 빌드합니다.

Buildah로 Docker Hub에 이미지를 push하려면 어떻게 하나요?

buildah login docker.io로 로그인하고 buildah tag flask-test-app:v1 docker.io/<dockerhub id>/flask-test-app:v1로 태그를 바꾼 뒤 buildah push docker.io/<dockerhub id>/flask-test-app:v1을 실행합니다.

Podman 컨테이너를 한 번에 모두 정리하려면 어떻게 하나요?

podman rm -f $(podman ps -aq)를 실행하면 모든 컨테이너를 강제로 종료하고 삭제합니다.