Run The Bridge

docker 6일차 본문

Cloud/docker

docker 6일차

anfrhrl5555 2021. 7. 27. 10:08
728x90
반응형

0. 도커 컴포즈

  • 여러 컨테이너가 하나의 애플리케이션을 구성할 때 컨테이너 각각을 제어하는 것은 불편하다 -> 통합 관리 필요
  • 웹 애플리케이션 컨테이너 옵션, 환경설정 + 데이터베이스 컨테이너 옵션, 환경설정 =  프로젝트 단위 관리
docker run --name mysql -d alicek106/composetest:mysql mysqld

docker run -d -p 80:80 --link mysql:db --name web alicek106/composetest:web apachectl -DFOREGROUND

http://192.168.245.11/login.php  # 브라우저로 접속

 

(실습.0) 도커 컴포즈 설치

#  swarm-manager 노드에만 설치하면 됨
curl -L https://github.com/docker/compose/releases/download/1.11.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

 

(실습.1) 도커 컴포즈 사용

mkdir compose && cd compose
mkdir ubuntu && cd ubuntu

vi docker-compose.yml
------------------------------------
version: '3.0'
services:
  web:
    image: alicek106/composetest:web
    ports:
    - "80:80"
    links:
    - mysql:db
    command: apachectl -DFOREGROUND
  mysql:
    image: alicek106/composetest:mysql
    command: mysqld
------------------------------------    
docker-compose up -d

docker-compose ps

 

(실습.2) docker-compose 명령어

docker-compose scale mysql=2

docker-compose ps

docker-compose down

Container을 줄이는 방법 = scale in

Container을 늘리는 방법 = scale out

자동으로 Container을 조절 = auto scale

 

프로젝트명 명시하는 방법

docker-compose -p myproject up -d

docker-compose -p myproject ps

docker-compose -p myproject down

대신 docker-compose ps 명령을 쓸 때 -p [이름] 을 명시해줘야 한다.

 

 

서비스 정의

  • 버전 정의  # version 3은 도커 스웜 모드와 호환되므로 가능한 최신 버전의 도커 컴포즈 사용
versio: '3.0'
  • 서비스 정의

image: 서비스의 컨테이너를 생성할 때 사용할 이미지 이름 설정. 이미지가 도커에 존재하지 않으면 저장소에서 자동으로 내려 받는다

links: docker run명령어의 --link와 같으며, 다른 서비스에 서비스명만으로 접근할 수 있도록 설정 [SERVICE:ALIAS]의 형식을 사용하면 서비스에 별칭으로도 접근할 수 있다

environment: docker run명령어의 --env, -e 옵션과 동일, 서비스의 컨테이너 내부에서 사용할 환경변수 지정, 딕셔너리나 배열 형태로 사용할 수 있다

command: 컨테이너가 실행될 때 수행할 명령어를 설정, docker run 명령어의 마지막에 붙는 커맨드와 같다.

ports: docker run 명령어의 -p와 같으며 서비스의 컨테이너에 개방할 포트를 설정. 단일 호스트 환경에서 80:80과 같이 호스트의 특정 포트를 연결하면 docker-compose scale 명령어로 컨테이너의 수를 늘릴 수 없다. 포트 충돌 발생
다음과 같이 포트를 설정하면 호스트에 개방할 포트는 임의로 결정된다.
ports:
  - "80"
  
build: build 항목에 정의된 Dockerfile에서 이미지를 빌드해 서비스의 컨테이너를 생성. 이 때 새롭게 생성될 이미지의 이름은 image 항목에 정의된 이름이 된다
  • 볼륨 정의

  • 네트워크 정의

 

도커 스웜 모드와 함께 사용하기

도커 스택(Stack)

  • 도커 컴포즈와 스웜 모드를 함께 사용하는 개념
  • 도커 컴포즈의 YAML 파일에 정의된 서비스가 스웜 모드의 서비스로 변환
  • 명령어는 docker stack
# vi docker-compose.yml
networks: {}
services:
  mysql:
    command: mysqld
    image: alicek106/composetest:mysql
  web:
    command: apachectl -DFOREGROUND
    image: alicek106/composetest:web
    links:
    - mysql:db
    ports:
    - 80:80
version: '3.0'
volumes: {}
728x90
반응형

'Cloud > docker' 카테고리의 다른 글

python/Flask와 DB를 이용한 Docker-compose.yml  (0) 2021.08.04
config을 사용해서 mysql port 변경하기  (0) 2021.07.26
docker 5일차  (0) 2021.07.23
dockerfile을 이용하여 DB와 python 연동하기  (0) 2021.07.23
docker 4일차  (0) 2021.07.22
Comments