블로그로 돌아가기

Ubuntu 20.04에 Docker Compose를 설치하고 구성하는 방법

Ubuntu 20.04에 Docker Compose를 설치하고 구성하는 방법

소개

컨테이너화는 최근 몇 년 동안 소프트웨어 기술 분야에서 큰 탄력을 받았습니다. 이는 Docker 덕분이며, 이는 컨테이너 내부의 프로세스 관리를 단순화하는 컨테이너 플랫폼입니다.

컨테이너는 물리적 호스트 머신에서 실행되는 다른 소프트웨어와 격리되어 소프트웨어를 실행할 수 있도록 하는 가볍고 가상화되었으며 이식 가능한 소프트웨어 정의 표준화 환경입니다. 이러한 이식성 기능 덕분에 개발자는 애플리케이션을 격리된 서비스로 모듈화할 수 있습니다. 또한, 독립적으로 서비스할 수 있어 확장할 수 있는 여지를 제공합니다.

애플리케이션을 여러 서비스로 분할하는 것은 확실히 훌륭하지만, 여러 컨테이너를 관리해야 하는 오버헤드가 발생합니다. 컨테이너들이 서로 통신하고, 동시에 시작하고 종료되도록 해야 합니다. Docker Compose라는 도구 덕분에 이 작업이 쉬워집니다. Docker Compose를 사용하면 개발자는 YAML 파일에 정의된 규칙을 사용하여 다중 컨테이너 Docker 애플리케이션을 실행할 수 있습니다. YAML 파일에는 애플리케이션 서비스에 대한 정의와 데이터 볼륨 및 네트워크를 공유하는 방법이 포함되어 있습니다. 서비스를 정의하고 나면 단일 명령으로 모든 서비스를 시작할 수 있습니다. 이 튜토리얼에서는 Ubuntu 20.04에서 Docker Compose를 설치, 구성 및 시작하는 방법을 보여드리겠습니다.

전제 조건

1단계: Docker Compose 설치

Docker Compose의 공식 GitHub 리포지토리에서 최신 안정 버전을 다운로드할 것입니다. 최신 버전은 릴리스 페이지에서 확인할 수 있으며, 이 튜토리얼을 작성하는 시점의 최신 버전은 1.28.5.

먼저, non-root sudo 사용자로 Ubuntu 서버에 로그인하고 다음 명령을 입력합니다. 이 명령은 최신 릴리스(1.28.5)를 다운로드하고 실행 파일을 /usr/local/bin/docker-compose 디렉토리에 저장합니다. 이를 통해 docker-compose로 전역에서 액세스할 수 있게 됩니다.

다운로드가 완료되면 다음 명령을 입력하여 docker-compose 명령을 실행할 수 있도록 적절한 권한을 설정합니다.

이제 다음 명령을 실행하여 설치가 성공적으로 완료되었고 명령을 호출할 수 있는지 확인합니다.

다음과 같은 출력이 표시되어야 합니다.

docker compose version

이것으로 시스템에 Docker Compose가 성공적으로 설치되었음을 확인할 수 있습니다.

2단계: docker-compose.yml 파일 생성

To help you understand how to work with docker-compose.yml의 작동 방식을 이해하는 데 도움이 되도록, 공식 Nginx 이미지를 사용하여 웹 서버 환경을 구성해 보겠습니다. 이 이미지는 Docker Hub에서 가져옵니다. 배포가 완료되면 컨테이너에서 기본 HTML 페이지를 서비스할 수 있어야 합니다.

작업을 진행할 작업 디렉토리를 홈 폴더에 생성합니다. 다음 명령을 입력하여 디렉토리를 생성합니다.

다음으로, 해당 디렉토리로 이동합니다.

디렉토리 내부로 이동한 후, Nginx 환경의 문서 루트가 될 애플리케이션 폴더를 생성합니다. 이 폴더의 이름은 app:

  • HTML 페이지 생성

Let’s use nano 텍스트 편집기를 사용하여 app 폴더 내에 index.html 파일을 생성해 보겠습니다.

다음으로, 파일에 아래의 HTML 코드를 추가합니다.

파일을 저장하려면 CTRL + O, ENTER를 누르세요. 그런 다음 CTRL + X로 닫습니다. 다음으로, 프로젝트 루트 내에 docker-compose.yml 파일을 생성하겠습니다.

  • docker-compose를 사용하여 HTML 페이지 호스팅하기

다음으로, 다음 명령어를 입력하여 nano 편집기로 파일을 엽니다:

그 후, 파일 내에 다음 코드 스니펫을 추가합니다:

docker-compose.yml 파일은 우리가 어떤 구성 버전을 사용하고 있는지 Docker Compose에 알려주는 버전 번호로 시작합니다. 다음에 대해 자세히 알아보려면 이 링크를 따르십시오: Docker Compose versioning.

버전 번호 뒤에는 환경을 구성하는 서비스들이 포함된 services 블록이 있습니다. 이 튜토리얼에서는 다음과 같은 단일 서비스만 지정했습니다: webserver. webserver 서비스는 nginx:alpine 이미지를 사용합니다. 또한 포트 리디렉션 8000:80을(를) 정의했습니다. 이것이 의미하는 바는 호스트 머신의 8000 포트로부터의 모든 요청이 Nginx가 실행 중인 80 포트의 webserver 컨테이너로 리디렉션된다는 것입니다.

volumes 지시문을 사용하면 데이터를 유지하는 데 사용할 수 있는 호스트 머신과 컨테이너 간의 shared volume을(를) 생성할 수 있습니다. 우리의 yml 코드 스니펫에서는 로컬 app 폴더를 컨테이너와 공유합니다. 컨테이너 내부에서는 이 폴더가 /usr/share/nginx/html 위치에 배치됩니다. 따라서 Nginx의 기본 문서 루트를 덮어쓰게 됩니다. 이제 파일을 저장하고 닫으셔도 됩니다.

여기까지 컨테이너화된 웹 서버 환경을 빌드하기 위한 지침이 담긴 예제 HTML 웹 페이지와 docker-compose.yml 파일을 생성했습니다. 다음 단계에서 이 설정을 어떻게 실행하는지 살펴보겠습니다.

3단계: Docker Compose 명령 실행

이 단계에서는 컨테이너화된 환경을 시작하는 명령을 실행합니다. 아래는 Docker 이미지 다운로드 프로세스를 초기화하고, webserver 서비스를 위한 컨테이너를 생성하며, 백그라운드에서 컨테이너화된 환경을 실행하는 단일 명령입니다:

Docker는 빠르고 효율적으로 설계되었으므로, 위의 명령을 실행하면 먼저 로컬 시스템에 정의된 이미지가 있는지 확인합니다. 이미지가 없는 경우 Docker Hub 리포지토리에서 가져옵니다. 다음과 유사한 출력이 표시되어야 합니다:

 compose up

명령 실행이 완료되면 백그라운드에서 컨테이너 환경이 실행되기 시작합니다. 다음 명령을 사용하여 실행 중인지 확인할 수 있습니다:

다음과 유사한 출력을 얻어야 합니다:

 compose ps

서버의 IP 주소 또는 도메인 이름으로 이동하고 포트 8000을 추가하면(즉, server_domain_or_IP:8000) 우리가 생성한 예제 HTML 페이지를 볼 수 있을 것입니다:

docker compose webpage

기억하시겠지만, 우리는 컨테이너와 호스트 시스템 간에 공유 볼륨을 설정했습니다. 이를 통해 컨테이너의 파일이 호스트 시스템의 파일과 동기화된 상태로 유지됩니다. 따라서 index.html 파일을 변경하면 컨테이너와 자동으로 동기화되며 브라우저에서 페이지를 새로 고칠 때 반영됩니다. nano 편집기로 시도해 볼 수 있습니다. 다음 단계에서 몇 가지 명령을 더 알아보겠습니다.

4단계: 컨테이너 환경 관리를 위한 추가 Docker Compose 명령

단일 docker-compose-up 명령을 사용하여 웹 페이지를 성공적으로 배포했으므로, 컨테이너화된 환경을 관리하는 데 유용할 수 있는 몇 가지 추가 명령을 살펴보겠습니다.

logs 명령부터 시작하겠습니다. 로그는 애플리케이션 장애를 해결할 때 매우 중요할 수 있습니다. 먼저 다음 명령을 실행하여 Nginx 컨테이너에서 생성된 로그를 확인합니다:

다음은 로그의 샘플 출력입니다:

 logs

다음 명령을 사용하여 컨테이너의 상태를 변경하지 않고 환경 실행을 일시 중지할 수 있습니다:

 compose pause

다음으로, 일시 중지를 해제하거나 실행을 재개하려면 다음 명령을 사용합니다:

docker compose unpause

데이터를 삭제하지 않고 컨테이너를 중지하고 싶을 수 있습니다. 그렇게 하려면 다음 명령을 사용하십시오:

stop

컨테이너화된 환경과 관련된 컨테이너, 네트워크 및 볼륨을 삭제하려면 다음 명령을 사용합니다:

docker compose down

위 명령은 Docker Compose가 환경을 실행하는 데 사용하는 베이스 이미지를 제거하지 않는다는 점에 유의하세요. 이는 로컬 머신에서 일치하는 이미지를 확인하므로 환경을 시작할 때 더 빠른 빌드를 보장합니다. 베이스 이미지를 완전히 제거하려면 명령에 이를 지정해야 합니다. 이 예시에서는 nginx:alpine 이미지를 다음 명령을 사용하여 제거할 수 있습니다:

 image remove

마지막으로, 공식 Docker Compose 명령줄 참조 문서에서 더 많은 명령을 찾을 수 있습니다.

결론

이 튜토리얼에서는 Ubuntu 20.04에 Docker Compose를 설치하고, Nginx 웹 서버 이미지를 기반으로 컨테이너화된 환경을 생성했으며, Docker Compose 명령을 사용하여 다양한 서비스를 관리하는 방법을 배웠습니다.

여러 컨테이너에 의존하는 실제 동적 애플리케이션을 배포하는 방법을 배우려면 Docker Compose를 사용하여 Laravel, Nginx 및 MySQL 배포하기 튜토리얼을 읽어보세요. 또한 전체 docker-compose 명령 목록은 공식 Docker Compose 문서.

에서 확인할 수 있습니다. 즐거운 컴퓨팅 되세요!

author

Pranay Kapgate

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.