Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Ubuntu Linux에 docker compose 설치하기
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2023-10-01
2023-10-01
3135
 ## 소개 Docker를 이용하면 애플리케이션 개발과 배포를 단순화 할 수 있다. Docker는 어떻게 보면 가상 머신과 유사하지만 프로세스 기반으로 더 가볍고 더 빠르게 사용 할 수 있다. 하지만 여러 서비스로 구성된 애플리케이션의 경우 여러 컨테이너를 실행하고, 통신하고 종료하도록 관리하는 것은 복잡한 작업이 될 수 있다. **Docker compose**를 이용하면 YAML 파일을 이용해서 다중 컨테이너 환경을 쉽게 실행할 수 있다. 이 문서는 docker-compose의 설치와 실행을 취한 최소한의 정보만 포함하고 있다. ## 사전 조건 이 문서의 내용은 아래와 같은 환경을 기반으로 하고 있다. * Ubuntu 리눅스 20.04 이상이 설치된 로컬 PC 혹은 가상머신 * Ubuntu 리눅스에서 docker가 설치되어 있다. [How to install and use docker on ubuntu 20-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04) 문서를 참고해서 설치하자. ## Docker compose 설치 docker-compose 실행파일을 다운로드 한다. ```shell $ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` docker-compose 파일에 실행권한을 준다. ```shell $ chmod +x /usr/local/bin/docker-compose -rwxr-xr-x 1 root root 12737304 9월 30 16:59 /usr/local/bin/docker-compose $ ls -al /usr/local/bin/docker-compose ``` 설치 성공했는지 확인해 보자. ```shell $ docker-compose version docker-compose version 1.29.2, build 5becea4c docker-py version: 5.0.0 CPython version: 3.7.10 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019 ``` ## docker-compose.yml 설정 파일 작업용 디렉토리를 하나 만들어서 거기에 작업을 진행한다. ``` $ mkdir nginx_compose $ cd nginx_compose ``` docker-compose의 기본 설정파일은 **docker-compose.yml** 이다. 먼저 NginX 웹 서버를 실행하는 간단한 docker-compose.yml 을 만들어보자. ```yml version: '3.7' services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html networks: srv_net: driver: bridge ``` docker-compose 파일은 version으로 시작된다. 이를 통해서 이 docker-compose의 실행 버전을 확인 할 수 있다. docker-compose가 실행하는 각 컨테이너는 **services** 블록에 정의한다. 여기에서 Docker 이미지, Port, 볼륨과 같은 컨테이너를 실행하기 위한 정보들을 설정할 수 있다. **volumes** 을 ./html:/user/share/nginx/html로 설정했는데, 로컬 PC의 html 디렉토리를 컨테이너의 /usr/share/nginx/html로 덮어쓴다. 테스트를 위해서 ./html 디렉토리 밑에 index.html 파일을 만들었다. ``` $ mkdir ./html ``` index.html의 파일 내용이다. ```html <h1>Hello World!</h1> ``` **networks**로 하나 이상의 네트워크를 설정할 수 있다. 여기에서는 bridge 타입의 srv_net를 정의했다. 그리고 "web" service가 srv_net를 이용하도록 했다. networks를 설정하지 않을 경우 default 네트워크가 설정된다. ## docker-compose 실행 docker-compose.yml 파일이 준비되면 Docker compose를 실행해서, 컨테이너들 실행할 수 있다. docker-compose up 명령을 실행하면, nginx 이미지를 다운로드해서 새로운 컨테이너를 실행한다. -d 옵션으로 백그라운드 모드로 실행 할 수 있다. ```shell docker-compose up -d ``` nginx 이미지가 없을 경우 아래와 같이 이미지를 다운로드한다. ```text Creating network "nginx_srv_net" with driver "bridge" Pulling web (nginx:alpine)... alpine: Pulling from library/nginx 96526aa774ef: Pull complete f2004135e416: Pull complete fbf1cf5026c4: Pull complete 38966af6931d: Pull complete c3ee70732c61: Pull complete 7e2fd992447a: Pull complete 76cbc9ea6abf: Pull complete 37f8bcf34db7: Pull complete Digest: sha256:4c93a3bd8bf95412889dd84213570102176b6052d88bb828eaf449c56aca55ef Status: Downloaded newer image for nginx:alpine Creating nginx_web_1 ... done ``` Docker compose가 성공적으로 실행됐는지 확인해보자. ```shell docker-compose ps ``` 명령을 실행하면, 실행중인 모든 컨테이너들의 정보가 출력된다. ``` Name Command State Ports --------------------------------------------------------------------- nginx_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8080->80/tcp,:::8080->80/tcp ``` 이제 웹 브라우저 혹은 curl로 테스트해보자. ```shell $ curl localhost:8080 <h1>Hello World</h1> ``` 모든 테스트가 긑났다면 "down"명령으로 컨테이너들을 삭제한다. ``` $ docker-compose down ``` ### docker compose 기본 명령 * docker compose **up**: 컨테이너를 새로 시작한다. * docker compose **down**: 컨테이너를 삭제한다. * docker compose **stop**: 컨테이너의 실행을 잠시 중단한다. * docker compose **start**: (stop 으로)중단된 컨테이너를 다시 시작한다. * docker compose **log**: compose 로그를 확인한다. * docker compose **ps** : 컨테이너 실행 상태를 확인한다.
Recent Posts
MLOps with Joinc - Kubeflow 설치
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
Archive Posts
Tags
cloud
docker
docker-compose
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags