docker compose / docker-compose commands
docker-compose
docker-compose 로 할 수 있는 것ref.1
- 서비스들의 start, stop, rebuild
- 동작중인 서비스들의 status 를 볼 수 있다.
- 동작중인 서비스들의 log output 의 stream
- 서비스에 대해서 one-off command 를 실행할 수 있다.
help
docker-compose help up
을 이용해서 사용법을 알 수
있다.
docker-compose help up
compose.yml
기본적으로 compose.yml
을 이용한다. 다만 backward
compatibility 를 위해서 docker-compose.yml
도 지원한다.
# compose.yml
version: '3.8'
# x- 로 시작하는 값은 무시된다.
x-rep_env: &rep_env
networks:
- mybridge
services:
crond:
# extension fields 값 사용
<<: *rep_env
image: crontest
volumes:
- ./15min:/etc/periodic/15min
hostname: cronhost
myblog:
# ref.2 참고
# build 에는 Dockerfile path, image 는 tagname 을 적으면 된다.
build: .
image: my-jekyll:1.0.0
volumes:
- d:\a\prog\ruby\jekyll\docker\my-test-blog\:/home/jekyll/my-test-blog2
ports:
- "8000:8000"
# 아래처럼 접근할 수 있다. 이때 주의할 점은 "(쌍따옴표)를 붙이지 말아야 한다.
# 붙이면 'cronhost' docker 의 hostname 이 아니라 그냥 string 으로 인식하니 주의하자.
environment:
- CROND_SERVER_URL=http://cronhost:8000/test
# docker 의 logging file 을 rotate 시켜준다.
logging:
driver: 'json-file'
options:
max-size: '10m'
max-file: '10'
downloadbox:
#
# docker login 이 된 상황에서 docker hub 에서 image 를 가져온다.
image: centos:centos8
#
# 아래 설정으로 interactive 한 bash 를 실행할 수 있다. 그래서 bash 를 실행한 후 exit 하지 않고 계속 input 을 기다리게 된다.
stdin_open: true # docker run -i
tty: true # docker run -t
volumes:
- d:\a\prog\docker\mylocal_dir:/var/mylocal_dir
entrypoint:
- bin/bash
networks:
mybridge:
-d
option 은 detach 를 의미한다. 그래서 container 를
background 로 띄운다.
docker-compose up -d
compose file 의 top-level elements
- Version top-level element
- Services
top-level element
- application 의 computing 자원
- container 들의 집합으로 되어 있다.
- Docker image, runtime arguments 등으로 정의된다. 쉽게
docker run
에 대한 내용을 적는 것으로 보면 될 듯 하다.
- Networks
top-level element
- Services 이 서로 통신하는데 사용하는 layer
- Volumes
top-level element
- ssd, hdd 같은 persistent 데이타 저장소
- Services 가 volumns 을 mount 하고, 인프라에서 그들을 할당하게 하는 추상화(neutral abstraction)을 제공
- Configs
top-level element
- Services 가 그들의 행동을 Docker image 를 rebuild 없이 조정하게 해준다.
- Secrets
top-level element
- Configs 의 일종이다. 주로 인증서등의 정보를 적는다.
실행, 종료
docker-compose.yml
나 compose.yml
가 있는
곳에서 실행하면 된다.
docker-compose up
docker-compose down
docker compose down
을 하면 container 도 같이 사라진다.
docker ps -a
를 해보면 사라진 것을 확인할 수 있다.
test tips
만약 Dockerfile 이 build 후에 계속 run 하게 하고 싶다면, 간단히
tail -f /dev/null
을 해주면 된다. 저렇게 running 인
상황에서 container 에 붙어서 bash 를 실행하면 된다.
docker exec -it <container_id | container names> bash
version: '3.8'
services:
build_php:
build:
context: .
dockerfile: ./Dockerfile.wasi-builder
entrypoint:
- tail
- -f
- /dev/null
테스트용 docker network:
명령어들(commands)
아래 link 에서 왼쪽 list 를 보면 명령어들을 확인할 수 있다.
- Overview of docker-compose CLI | Docker Documentation
- docker
compose | Docker Documentation : 이제 docker compose 로도 실행할 수
있다.
docker compose logs
: docker compose 관련 error log 를 확인할 수 있다.docker compose run <service> --rm bash
: 지정한 service 에 대한 container 를 생성해서 bash 를 실행docker compose ps
: docker compose up 으로 실행된 container를 보여준다. 추후에 docker compose run 으로 실행된 container는 보이지 않는 듯 하다.
변수 정의 .env
.env
file 에 변수를 정의해서
docker-compose.yml
에서 사용할 수 있다. docker-compose.yml
내부에서는 사용할 수 없다.
- Environment variables in Compose | Docker Documentation
docker compose config
: 최종적으로 만들어지는 docker-compose.yml 을 확인할 수 있다.
docker swarm
docker-compose.yml
을 docker swarm 으로 cluster 에
배포할 수 있다.
stack 이름을 mystack1
이라 하면, 아래처럼 하면 된다.
docker stack deploy -c docker-compose.yml mystack1
그러면 자동으로 service 에 해당하는 container 들이 생성되고, network
도 만든다. swarm 안에 만들어진 사항은 docker swarm
명령으로 확인할 수 있다.
docker logging
Docker 로그 제대로 사용하기 | InfoGrab, DevOps 전문 기술 기업 | 인포그랩 | GitLab기반 DevSecOps 구축,컨설팅,교육,기술지원 서비스 제공
docker container 의 log path:
/var/lib/docker/containers/<container_id>/<container_id>-json.log
ls /var/lib/docker/containers/dfsaffdsafdsfdsafdafasdf3234235526g4gs43dfc6 -al total 52 drwx--x--- 4 root root 4096 Oct 11 06:35 . drwx--x--- 3 root root 4096 Oct 11 06:35 .. -rw-r----- 1 root root 9152 Oct 11 06:35 dfsaffdsafdsfdsafdafasdf3234235526g4gs43dfc6-json.log
docker container log의 rotate 를 하는 법
/etc/docker/daemon.json
에 설정할 수 있다.- docker 실행 옵션에 넣어줄 수 있다.(그래서
compose.yml
에 넣을 수 있다.)
logging: driver: 'json-file' options: max-size: '10m' max-file: '10'
See Also
- 쿠…sal: [컴] Dockerfile 내의 VOLUME command 와 -v 의 차이
- How to Simplify Docker Compose Files With YAML Anchors and Extensions – CloudSavvy IT : yaml 의 anchor 사용법, '<<', '&variable_name' 등의 사용법
- Docker orchestration with Swarm and Compose - IONOS : docker compose 를 docker swarm network 에 deploy
- 쿠…sal: [컴] docker commands
- 쿠…sal: [컴] docker compose 에서 container_name 과 hostname 의 차이
댓글 없음:
댓글 쓰기