220512 Today I Learned
일지
아 의욕없어.. 뭐가문제지
주요 키워드
Docker-compose
오늘의 할일
- 220512 TIL 작성
- AWS 스터디 진행
- 쿠버네티스 사전준비
추가로 정리해야할 부분
수업 정리
docker compose
멀티 컨테이너 환경에서 사용
컨테이너를 구동하기 위한 구성 정보를 코드로 관리
docker-compose.yml
docker compose 주요 기능
컨테이너간의 의존관계 설정
멀티 컨테이너, 다수의 컨테이너를 일괄 관리
코드 형태로 관리 - IaC, DevOps
docker-compose completion 설정
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
docker-compose.yml
docker compose가 사용하는 세부적인 내용이 기술된 코드
기본 구조
version: 현재 docker-compose 문서의 버전. Docker Engine과 연관
services: 구동할 컨테이너에 대한 상세한 명세
networks: 생성할 네트워크에 대한 정보
volumes: 생성할 볼륨의 정보
docker-compose.yml 세부 규격
compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
예시
version: ‘3.8’
services:
(서비스에 대한 내용)
networks:
(생성할 네트워크에 대한 내용)
volumes:
(생성할 볼륨에 대한 내용)
services 내부 항목
image: 사용할 이미지의 이름
build: Dockerfile을 지정하여 빌드를 수행하여 이미지 지정
context: 빌드할 Dockefile의 위치정보
dockerfile: 변경된 Dockerfile의 이름
arg: 사용할 변수 설정
command : 이미지의 CMD 대신 넣을 항목
list 형식으로 작성
entrypoint : 이미지의 ENTRYPOINT 대신 넣을 항목
list 형식으로 작성
links : 컨테이너의 연결정보를 지정
ports: 포트포워딩 설정
list 형식으로 작성
“<호스트포트>:<컨테이너포트>”
expose: 노출할 포트 설정 지정
list 형식으로 작성
“<컨테이너포트>”
depends_on : 컨테이너의 의존관계 지정
list 형태로 지정
해당 서비스가 구동된 이후에 현재 서비스를 구동
environment : 환경변수 지정
list 형식으로 작성
<변수명>=<값>
<변수명>: <값>
env_files: 변수가 저장된 파일로부터 변수를 읽어옴
container_name: 컨테이너명 지정
지정하지 않을 경우 <디렉토리명>-<서비스명>-<번호>
volumes: 사용할 볼륨 지정
list 형식 사용
Bind Mount, Docker Volume 모두 사용 가능
사용할 볼륨은 최상위 volumes 항목으로 생성한 것 사용 가능
networks: 사용할 네트워크 지정
list 형식 사용
사용할 네트워크는 최상위 networks 항목으로 생성한 것을 사용 가능
따로 networks 항목을 지정하지 않을 경우, 기본 bridge 네트워크 생성 사용
docker-compose.yml 예시
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
version: '3'
services:
ubuntu:
build:
context: .
dockerfile: Dockerfile
version: '3'
services:
ubuntu:
image: ubuntu
command:
- sleep
- infinity
version: '3'
services:
ubuntu:
image: ubuntu
command:
- sleep
- infinity
centos:
image: centos
links:
- ubuntu:test
depends_on:
- ubuntu
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
docker-compose 명령어 서브커맨드
up: 컨테이너 생성 및 구동
-d, --detach: 백그라운드 실행
--no-deps: 실행 시 의존관계에 무관하게 실행
--build: 무조건 빌드 수행
--no-build: 빌드 수행하지 않음
--scale: 스케일 조정
ps: docker compose 로 실행된 컨테이너 상태 확인
-a, --all: 중지된 컨테이너도 함께 확인
-q, --quiet: 출력 정보 간소화
--format : 출력형식 (json,pretty)
logs: 컨테이너 로그 출력
-f, --follow: 로그 지속 출력 (중지되지 않음)
--since, --until : 로그 출력 기간 지정
--tail: 최종 n개의 로그 출력
run : 컨테이너에서 명령 실행
start : 컨테이너 시작
stop : 컨테이너 중지
restart : 컨테이너 재시작
pause / unpause : 일시중지/재개
down : 컨테이너 중지 및 삭제
kill : 컨테이너 강제 중지
--signal : 전송할 신호 종류
rm : 컨테이너 삭제
-f, --force : 질문하지 않고 삭제
-s, --stop : 컨테이너 중지 후 삭제
down: 컨테이너 중지 및 삭제
-rmi : 이미지 삭제 정책 지정
all: 모든 이미지 삭제
local: 특정 태그를 지정하지 않은 이미지 삭제
-v, --volume: 사용한 볼륨 삭제
Leave a comment