[Docker] Docker 컨테이너화 및 배포(1)

구유정·2024년 7월 17일
0

Cloud

목록 보기
7/9
post-thumbnail

📍 문제 정의

Docker를 활용하여 애플리케이션을 컨테이너화하고 배포하는 작업을 수행한다. Docker는 애플리케이션을 일관된 환경에서 실행할 수 있도록 도와주는 컨테이너 기술을 제공한다. 이 미션에서는 다음과 같은 과정을 통해 애플리케이션을 Docker 이미지로 만들고, 컨테이너로 실행하며, 이를 Docker Hub에 배포하는 작업을 진행한다.



📍 솔루션 도출

애플리케이션을 Docker를 사용하여 컨테이너화하고 배포하는 과정을 단계별로 설계한다. 애플리케이션의 Dockerfile 작성, 이미지 빌드, 컨테이너 실행, Docker Hub에 이미지 업로드, 그리고 배포된 애플리케이션 검증의 전체 과정을 포함한다.



📍 설계

  1. Dockerfile 작성
  2. Docker 이미지 빌드
  3. 로컬에서 컨테이너 실행
  4. Docker Hub에 이미지 푸시
  5. 배포 확인



📍 Dockerfile 설정

↑ Dockerfile 작성


↑ Dockerfile2 작성

↑ app.py 파일 작성

↑ requirements.txt 파일 작성



📍 Docker 컨테이너 실행

↑ Docker 이미지 빌드

  • docker build: Docker 이미지를 빌드하는 명령어
  • '-f' Dockerfile2: 빌드에 사용할 Dockerfile의 이름을 지정. 기본적으로 Docker는 Dockerfile이라는 이름의 파일을 찾지만, -f 옵션을 사용하면 다른 이름의 파일을 지정할 수 있다. 여기서는 Dockerfile2라는 파일을 사용한다.
  • '-t' bootcamp: 생성된 Docker 이미지에 태그를 지정. '-t' 옵션을 사용하여 이미지에 이름과 태그를 붙일 수 있다. 태그는 생략될 수 있으며, 생략하면 latest 태그가 기본으로 사용된다.
  • '.': 현재 디렉토리를 빌드 컨텍스트로 사용. Docker는 이 디렉토리 내의 파일과 폴더를 사용하여 이미지를 빌드한다. '.'은 현재 디렉토리를 의미한다.

↑ Docker Desktop에 이미지가 빌드된 것을 볼 수 있다.

↑ Docker 컨테이너 실행

  • docker run: 새로운 Docker 컨테이너를 생성하고 실행하는 명령어
  • -it: 두 개의 옵션을 결합한 형태로, 각각의 의미는 다음과 같다.:
    -i (interactive): 컨테이너의 표준 입력을 활성화하여 상호작용 모드로 실행.
    -t (tty): 가상 터미널을 할당하여 터미널 출력을 가능하게 한다. 이 옵션은 -i와 함께 사용되어 터미널에서 상호작용할 수 있게 한다.
  • bootcamp: 실행할 Docker 이미지의 이름
  • '/bin/bash': 컨테이너가 시작될 때 실행할 명령을 지정. 여기서는 /bin/bash 쉘을 실행하여 사용자가 컨테이너 내부에서 Bash 쉘을 사용할 수 있게 한다.

↑ 프롬프트는 Docker 컨테이너 내부의 Bash 쉘에서 표시되는 상태

↑ 마찬가지로 Docker Desktop에 컨테이너가 생성된 것을 볼 수 있다.

ls 명령어를 이용해 저장되어 있는 파일 목록들을 볼 수 있다.

↑ python3를 실행할 수 없으니 apt install python3를 이용해 파이썬을 설치해준다.

apt update로 패키지 목록을 업데이트.

apt install python3

↑ 나라와 시간을 선택하라고 하는데 아무거나 골라주면 된다.

↑ pip을 설치해준다.

↑ EXTERNALLY-MANAGED를 제거하여 패키지 관리자(pip 등)가 독립적으로 패키지를 설치하거나 제거할 수 있도록 한다.

↑ flask 설치

↑ 이제 app.py를 실행하면 정상적으로 작동하는 것을 볼 수 있다.

profile
고수를 향해 나아가는 중

0개의 댓글