
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를 설치하는 방법과 이 도구를 사용하는 방법을 보여 줍니다.
선결 조건
본문을 읽으려면 다음이 필요합니다.
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
이다.다음 명령을 사용하여 다운로드합니다.
- mkdir -p ~/.docker/cli-plugins/
- 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
명령을 실행할 수 있도록 올바른 권한을 설정합니다.- chmod +x ~/.docker/cli-plugins/docker-compose
설치가 성공했는지 확인하려면 다음을 실행하십시오.- docker compose version
다음과 같은 출력이 표시됩니다.OutputDocker 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 파일에 서비스를 제공합니다.먼저 홈 폴더에 새 디렉터리를 만들고 그 디렉터리로 이동합니다.
- mkdir ~/compose-demo
- cd ~/compose-demo
이 디렉토리에서 Nginx 환경의 문서 루트로 응용 프로그램 폴더를 설정합니다.- mkdir app
기본 텍스트 편집기를 사용하여 index.html
폴더에 새 app
파일을 만듭니다.- 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
을 입력하고 Y
및 ENTER
을 입력하여 확인할 수 있습니다.다음으로
docker-compose.yml
파일을 만듭니다.- 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
서비스를 위한 컨테이너를 만들고 백그라운드 모드에서 컨테이너화 환경을 실행합니다.- docker compose up -d
Docker Compose는 먼저 로컬 시스템에서 정의된 이미지를 찾습니다. 이미지를 찾을 수 없으면 Docker Hub에서 이미지를 다운로드합니다.다음과 같은 출력이 표시됩니다.OutputCreating 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 명령을 실행할 수 있습니다.현재 환경이 시작되어 백그라운드에서 실행되고 있습니다.컨테이너가 활성 상태인지 확인하려면 다음을 실행합니다.
- 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
명령을 사용합니다.- docker compose logs
다음과 같은 출력이 표시됩니다.OutputAttaching 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" "-"
컨테이너의 현재 상태를 변경하지 않고 환경 실행을 일시 중지하려면 다음과 같이 하십시오.- docker compose pause
OutputPausing compose-demo_web_1 ... done
일시 중지 후 실행을 재개하려면 다음과 같이 하십시오.- docker compose unpause
OutputUnpausing compose-demo_web_1 ... done
logs
명령은 컨테이너 실행을 종료하지만 컨테이너와 관련된 데이터는 제거되지 않습니다.- docker compose stop
OutputStopping compose-demo_web_1 ... done
컨테이너 환경과 연관된 컨테이너, 네트워크 및 볼륨을 삭제하려면 stop
명령을 사용합니다.- docker compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default
이 경우 환경을 가속화하는 데 사용되는 Docker Compose의 기본 이미지down
는 삭제되지 않습니다.이렇게 하면 이미지가 이미 시스템에 있기 때문에 언제든지 nginx:alpine
를 사용하여 환경을 재부팅할 수 있습니다.시스템에서 기본 이미지를 제거하려면 다음을 사용하십시오.
- docker image rm nginx:alpine
OutputUntagged: 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 를 참조하십시오.