ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker를 사용하여 간단한 웹 애플리케이션을 만드는 단계별 실습
    Cloud/Container 2023. 2. 12. 23:03

    사전 요구 사항

    • Docker가 설치되어 있고 실행 중인 컴퓨터

    Dockerfile 문법 알아보기

    커맨드의미

    FROM 베이스 이미지 지정
    RUN 베이스 이미지에 새로운 레이어를 추가해 커맨드를 실행하고 결과를 빌드 이미지에 반영
    CMD 컨테이너 시작시 실행할 커맨드 설정
    LABEL 이미지에 레이블 지정
    EXPOSE 컨테이너에서 노출하는 포트 번호 설정
    ENV 환경 변수 설정
    ADD 이미지에 파일 복사
    COPY 이미지에 파일 복사
    ENTRYPOINT 컨테이너 시작시 실행할 커맨드 설정
    VOLUME 볼륨이 마운트 될 위치 설정
    USER 커맨드를 실행할 때 사용자 ID 설정
    WORKDIR 커맨드를 실행할 때 작업 디렉터리 설정
    ARG 빌드 시에만 사용되는 변수 설정
    ONBUILD 이 이미지를 베이스로 빌드할 때 커맨드가 실행되도록 하기
    STOPSIGNAL 컨테이너를 중지시킬 때의 시그널 번호 설정
    HEALTHCHECK 헬스 체크를 위한 커맨드 설정

    Docker CLI 살펴 보기

    커맨드의미

    docker build Dockerfile로 이미지 빌드
    docker images 이미지 리스트 보기
    docker image inspect 이미지 상세 정보 보기
    docker pull 레지스트리로부터 이미지 가지고 오기
    docker push 레지스트리에 이미지 전송하기
    docker history 이미지 생성 기록 보기
    docker rmi 이미지 삭제
    docker import Docker container export로 가지고 온 것으로 이미지 만들기
    docker save 이미지 tar 아카이브로 출력
    docker load Docker image save로 출력한 것(tar 아카이브)으로 이미지 로드
    docker tag 기존의 이미지에 태그 붙이기
    docker ps 컨테이너 목록 보기
    docker logs 컨테이너 로그 취득
    docker exec 실행 중인 컨테이너 내부에서 커맨드 실행
    docker container inspect 컨테이너의 자세한 정보 보기
    docker port 컨테이너 포트 맵핑 보기
    docker rm 컨테이너 삭제
    docker run 새로운 컨테이너로 커맨드 실행
    docker start 정지 중인 컨테이너 기동
    docker stop 실행 중인 컨테이너 중지
    docker restart 컨테이너 다시 시작
    docker kill 실행 중인 컨테이너(Docker가 만든 PID 1 프로세스)에 신호 보내기

     

    단계 1: 새 디렉터리 생성

    웹 애플리케이션을 위한 새 디렉터리를 만들고 터미널에서 해당 디렉터리로 이동합니다.

    mkdir my-web-app
    cd my-web-app

    단계 2: 웹 페이지 만들기

    다음 내용을 포함하는 index.html 파일을 만듭니다:

    <!DOCTYPE html>
    <html>
    <head>
      <title>My Web App</title>
    </head>
    <body>
      <h1>Hello, World!</h1>
    </body>
    </html>

    단계 3: Dockerfile 만들기

    Dockerfile 이라는 이름의 새 파일을 만들고 다음 내용을 입력합니다:

    # 공식 Nginx 런타임을 부모 이미지로 사용
    FROM nginx:alpine
    
    # 웹 페이지를 컨테이너로 복사합니다.
    COPY index.html /usr/share/nginx/html

    단계 4: Docker 이미지 빌드

    터미널에서 Dockerfile이 있는 디렉터리로 이동하고 다음 명령어를 실행하여 Docker 이미지를 빌드합니다:

    docker build -t my-web-app .
     

    -t 플래그는 이미지를 이름으로 태그하기 위해 사용되며, 이 경우 my-web-app로 태그됩니다.

    단계 5: Docker 컨테이너 실행

    다음 명령을 실행하여 Docker 컨테이너를 시작합니다:

    docker run -d -p 80:80 --name my-web-app my-web-app

    -d 플래그는 컨테이너를 백그라운드 모드로 실행하고, -p 플래그는 컨테이너의 80번 포트를 호스트 머신의 80번 포트에 매핑합니다.

    단계 6: 웹 애플리케이션에 액세스하기

    웹 브라우저를 열고 http://localhost로 이동합니다. 페이지에 "Hello, World!" 메시지가 표시됩니다.

    이것으로 간단한 웹 애플리케이션을 Docker를 사용하여 만들었습니다.

    애플리케이션에 더 많은 파일을 추가하고 Dockerfile을 수정하여 필요에 맞게 변경할 수 있습니다.

    단계 7: 컨테이너 멈추기 및 삭제하기

    Docker 컨테이너를 종료하고 삭제하려면 다음 명령어를 실행합니다:

    docker stop $(docker ps -aqf "name=my-web-app") && docker rm $(docker ps -aqf "name=my-web-app")

    이 명령어는 다음과 같은 작업을 수행합니다:

    • docker ps -aqf "name=my-web-app": my-web-app 이름을 갖는 모든 컨테이너의 ID를 반환합니다.
    • docker stop $(docker ps -aqf "name=my-web-app"): 해당 컨테이너를 모두 중지합니다.
    • docker rm $(docker ps -aqf "name=my-web-app"): 해당 컨테이너를 모두 삭제합니다.

    이제 컨테이너가 중지되고 삭제되었습니다. 이제 다시 시작하려면 단계 5에서 설명한 명령을 실행하면 됩니다.

     

    --------------------------------------------------------------------------------------------------------

    다음은 컨테이너에 들어간 index.html 파일을 수정하고 v2 버전의 이미지를 빌드하는 예제입니다.

    단계 8: 웹 페이지 수정

    index.html 파일을 다음 내용으로 수정합니다:

    <!DOCTYPE html>
    <html>
    <head>
      <title>My Web App v2</title>
    </head>
    <body>
      <h1>Hello, World!</h1>
      <p>This is version 2 of my web app.</p>
    </body>
    </html>

    단계 9: Dockerfile 수정

    Dockerfile 파일을 다음과 같이 수정하여 새로운 이미지를 빌드할 수 있습니다.

    아래와 같은 내용의 이전과 동일한 도커 파일로 빌드를 다시 한번 수행합니다.

    # Use an official Nginx runtime as a parent image
    FROM nginx:alpine
    
    # Copy the updated web page to the container
    COPY index.html /usr/share/nginx/html

    단계 10: Docker 이미지 빌드

    터미널에서 Dockerfile이 있는 디렉터리로 이동하고 다음 명령어를 실행하여 새 Docker 이미지를 빌드합니다:

    docker build -t my-web-app:v2 .

    -t 플래그를 사용하여 이미지 이름을 my-web-app 대신 my-web-app:v2로 태그했습니다.

    단계 11: Docker 컨테이너 실행

    이제 v2 이미지를 사용하여 컨테이너를 실행합니다.

    docker run -d -p 80:80 --name my-web-app-v2 my-web-app:v2

    단계 12: 웹 애플리케이션에 액세스하기

    새로운 버전의 웹 애플리케이션에 액세스하기 위해 웹 브라우저를 열고 http://localhost로 이동합니다. 새로운 버전의 "Hello, World!" 메시지와 추가된 텍스트 "This is version 2 of my web app."가 표시됩니다.

    단계 13: 컨테이너 멈추기 및 삭제하기

    이전 단계와 동일한 명령을 사용하여 v2 컨테이너를 중지하고 삭제합니다.

    docker stop my-web-app-v2 && docker rm my-web-app-v2

    이제 컨테이너가 중지되고 삭제되었습니다.

     

    # 자기 주도 과제

    이번에는 This is version 1 of my web app. 라고 출력되는 my-web-app 이미지의 v1 버전을 만들어서 실행 시키고 브라우저에서 메시지를 확인하세요.

Designed by Tistory.