Docker Compose를 Ubuntu 22.04에 설치하고 사용하는 방법

Docker Compose를 Ubuntu 22.04에 설치하고 사용하는 방법

2022-06-01 last update

17 minutes reading Ubuntu Docker Ubuntu 22.04

소개


Docker는 컨테이너에서 애플리케이션 프로세스를 관리하는 프로세스를 단순화합니다.비록 용기는 어떤 면에서 가상 기기와 유사하지만, 그것들은 더욱 경량급이고 자원이 우호적이다.이것은 개발자가 응용 프로그램 환경을 여러 개의 독립된 서비스로 분해할 수 있도록 한다.
여러 서비스에 의존하는 응용 프로그램에 대해 모든 용기를 조정하여 함께 시작하고 통신하며 닫는 것은 곧 처리하기 어려울 것이다.Docker Compose는 YAML 파일에 설정된 정의를 기반으로 멀티 컨테이너 응용 프로그램 환경을 실행할 수 있는 도구입니다.이것은 서비스 정의를 이용하여 여러 개의 용기를 가진 완전한 맞춤형 환경을 구축하는데 이 용기들은 네트워크와 데이터 볼륨을 공유할 수 있다.
이 설명서에서는 Ubuntu 22.04 서버에 Docker Compose를 설치하는 방법과 이 도구를 사용하는 방법을 보여 줍니다.

선결 조건


본문을 읽으려면 다음이 필요합니다.
  • Ubuntu 22.04 로컬 컴퓨터나 개발 서버에 sudo 권한이 있는 비root 사용자로 접근합니다.원격 서버를 사용하는 경우 사전 예방적 방화벽을 설치하는 것이 좋습니다.이것들을 설정하려면 저희 Initial Server Setup Guide for Ubuntu 22.04 를 참조하십시오.
  • How To Install and Use Docker on Ubuntu 22.04의 1단계와 2단계에 따라 서버나 로컬 컴퓨터에 Docker를 설치합니다.
  • 참고: Docker Compose v2를 시작으로 Docker는 compose CLI 플러그인 명령을 사용하도록 마이그레이션되었습니다previous Ubuntu 20.04 version of this tutorial에 기록된 원래 docker-compose 를 사용하지 않습니다.설치 방식은 다르지만 일반적으로 실제 사용 방법은 docker-compose 호출 중인 하이픈을 docker compose 로 삭제하는 것이다.완전 호환성에 대한 자세한 내용은 신규compose와 구docker-compose 사이official Docker documentation on command compatibility를 확인하십시오.

    1단계 - Docker Compose 설치


    최신 Docker Compose의 안정적인 버전을 확보하기 위해itsofficial Github repository에서 이 소프트웨어를 다운로드합니다.
    우선, 그 releases page 에서 제공한 최신 버전을 확인하십시오.본문을 작성할 때 최신 안정판은 2.3.3 이다.
    다음 명령을 사용하여 다운로드합니다.
    1. mkdir -p ~/.docker/cli-plugins/
    2. curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
    다음은 docker compose 명령을 실행할 수 있도록 올바른 권한을 설정합니다.
    1. chmod +x ~/.docker/cli-plugins/docker-compose
    설치가 성공했는지 확인하려면 다음을 실행하십시오.
    1. docker compose version
    다음과 같은 출력이 표시됩니다.
    Output
    Docker Compose version v2.3.3
    이제 Docker Compose가 시스템에 성공적으로 설치되었습니다.다음 절에서 docker-compose.yml 파일을 설정하고 이 도구를 사용하여 용기화 환경을 구축하고 실행하는 방법을 볼 수 있습니다.

    단계 2 - docker compose를 설정합니다.yml 파일

    docker-compose.yml 파일을 설정하고 Docker Compose를 사용하는 방법을 설명하기 위해 공공 Docker 등록표Nginx image의 공식Docker Hub을 사용하여 웹 서버 환경을 만듭니다.이러한 컨테이너화 환경은 하나의 정적 HTML 파일에 서비스를 제공합니다.
    먼저 홈 폴더에 새 디렉터리를 만들고 그 디렉터리로 이동합니다.
    1. mkdir ~/compose-demo
    2. cd ~/compose-demo
    이 디렉토리에서 Nginx 환경의 문서 루트로 응용 프로그램 폴더를 설정합니다.
    1. mkdir app
    기본 텍스트 편집기를 사용하여 index.html 폴더에 새 app 파일을 만듭니다.
    1. nano app/index.html
    다음 내용을 이 파일에 넣습니다.
    ~/프레젠테이션/응용/색인을 작성합니다.html
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Docker Compose Demo</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/[email protected]/dist/dark.min.css">
    </head>
    <body>
    
        <h1>This is a Docker Compose Demo Page.</h1>
        <p>This content is being served by an Nginx container.</p>
    
    </body>
    </html>
    
    완료되면 파일을 저장하고 닫습니다.nano 을 사용하고 있는 경우 CTRL+X 을 입력하고 YENTER 을 입력하여 확인할 수 있습니다.
    다음으로 docker-compose.yml 파일을 만듭니다.
    1. nano docker-compose.yml
    docker-compose.yml 파일에 다음 내용을 삽입합니다.
    docker 작성.yml 회사
    version: '3.7'
    services:
      web:
        image: nginx:alpine
        ports:
          - "8000:80"
        volumes:
          - ./app:/usr/share/nginx/html
    
    docker-compose.yml 파일은 일반적으로 version 정의로 시작됩니다.이것은 Docker Compose에서 사용하는 구성 버전을 알려 줍니다.
    다음은 services 블록입니다. 이 환경의 일부로 서비스를 설정할 수 있습니다.귀하의 경우 web라는 서비스가 있습니다.이 서비스는 nginx:alpine 이미지를 사용하고 ports 명령을 사용하여 포트 리디렉션을 설정합니다.호스트(Docker Compose를 실행하는 시스템) 포트8000의 모든 요청은 포트web의 컨테이너로 리디렉션되며 Nginx는 이 포트에서 실행됩니다.80 명령은 호스트와 컨테이너 사이에 생성됩니다shared volume.이것은 컨테이너와 로컬 volumes 폴더를 공유하고 볼륨은 컨테이너 내의 app 에 있으며 Nginx의 기본 문서 루트 디렉터리를 덮어씁니다.
    파일을 저장하고 닫습니다.
    서비스를 위한 용기화된 웹 서버 환경을 만들기 위한 프레젠테이션 페이지와 /usr/share/nginx/html 파일을 설정했습니다.다음 단계에서는 Docker Compose를 사용하여 이 환경을 만듭니다.

    3단계 - Docker Compose 실행

    docker-compose.yml 파일이 있습니다. 이제 Docker Compose를 실행하여 환경을 시작할 수 있습니다.다음 명령은 필요한 Docker 이미지를 다운로드하여 docker-compose.yml 서비스를 위한 컨테이너를 만들고 백그라운드 모드에서 컨테이너화 환경을 실행합니다.
    1. docker compose up -d
    Docker Compose는 먼저 로컬 시스템에서 정의된 이미지를 찾습니다. 이미지를 찾을 수 없으면 Docker Hub에서 이미지를 다운로드합니다.다음과 같은 출력이 표시됩니다.
    Output
    Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done
    참고 Docker 소켓에 대한 권한 오류가 발생하면 건너뛴 것입니다Step 2 of How To Install and Use Docker on Ubuntu 22.04.이 절차를 되돌려 완성하면 web 없이docker 명령을 실행할 수 있습니다.
    현재 환경이 시작되어 백그라운드에서 실행되고 있습니다.컨테이너가 활성 상태인지 확인하려면 다음을 실행합니다.
    1. docker compose ps
    이 명령은 실행 중인 컨테이너와 그 상태에 대한 정보와 현재 존재하는 모든 포트의 방향을 표시합니다.
    Output
    Name Command State Ports ---------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp
    로컬 컴퓨터에서 이 프레젠테이션을 실행하면 브라우저를 가리키거나sudo 프레젠테이션 응용 프로그램에 액세스할 수 있으며, 원격 서버에서 이 프레젠테이션을 실행하면 localhost:8000 을 가리킬 수 있습니다.
    다음 페이지가 표시됩니다.
    your_server_domain_or_IP:8000 파일에 설정된 공유 볼륨은 docker-compose.yml 폴더 파일과 컨테이너의 문서 루트 디렉터리를 동기화합니다.app 파일을 변경한 경우 컨테이너에서 자동으로 선택하고 페이지를 다시 로드할 때 브라우저에 반영됩니다.
    다음 단계에서는 Docker Compose 명령을 사용하여 컨테이너 환경을 관리하는 방법을 볼 수 있습니다.

    단계 4 - Docker Compose 명령 숙지

    index.html 파일을 설정하고 docker-compose.yml 환경을 만드는 방법을 알고 있습니다.이제 Docker Compose 명령을 사용하여 컨테이너화된 환경을 관리하고 상호 작용하는 방법을 볼 수 있습니다.
    Nginx 컨테이너에서 생성된 로그를 확인하려면 docker compose up 명령을 사용합니다.
    1. docker compose logs
    다음과 같은 출력이 표시됩니다.
    Output
    Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"
    컨테이너의 현재 상태를 변경하지 않고 환경 실행을 일시 중지하려면 다음과 같이 하십시오.
    1. docker compose pause
    Output
    Pausing compose-demo_web_1 ... done
    일시 중지 후 실행을 재개하려면 다음과 같이 하십시오.
    1. docker compose unpause
    Output
    Unpausing compose-demo_web_1 ... done
    logs 명령은 컨테이너 실행을 종료하지만 컨테이너와 관련된 데이터는 제거되지 않습니다.
    1. docker compose stop
    Output
    Stopping compose-demo_web_1 ... done
    컨테이너 환경과 연관된 컨테이너, 네트워크 및 볼륨을 삭제하려면 stop 명령을 사용합니다.
    1. docker compose down
    Output
    Removing compose-demo_web_1 ... done Removing network compose-demo_default
    이 경우 환경을 가속화하는 데 사용되는 Docker Compose의 기본 이미지down는 삭제되지 않습니다.이렇게 하면 이미지가 이미 시스템에 있기 때문에 언제든지 nginx:alpine 를 사용하여 환경을 재부팅할 수 있습니다.
    시스템에서 기본 이미지를 제거하려면 다음을 사용하십시오.
    1. docker image rm nginx:alpine
    Output
    Untagged: nginx:alpine Untagged: [email protected]:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a
    참고: Docker 명령에 대한 자세한 내용은 설명서How to Install and Use Docker를 참조하십시오.

    결론


    이 안내서에서 Docker Compose를 설치하고 Nginx 웹 서버 이미지를 기반으로 용기화 환경을 설정하는 방법을 알고 있습니다.Compose 명령을 사용하여 이 환경을 관리하는 방법에 대해서도 알아봤습니다.
    사용 가능한 명령docker compose up에 대한 전체 참조는 official documentation 를 참조하십시오.