컨테이너 생성
_image_name=postgres
_container_name=pg-15
_port_out=15432
_port_in=5432
docker run \\
-p ${_port_out}:${_port_in} \\
--name "${_container_name}" \\
-d ${_image_name}
_image_name=postgres
_container_name=pg-15
_port_out=15432
_port_in=5432
docker run \\
-p ${_port_out}:${_port_in} \\
--name "${_container_name}" \\
-e ENV_ID=root \\
-e ENV_PW=1234 \\
-v $HOME/my-volume/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d \\
-d ${_image_name}
컨테이너 생성 : 추가 옵션
--log-opt max-size=10m # 로그 순환 옵션: 생성되는 로그 파일의 최대 크기 설정(MB)
--log-opt max-file=5 # 로그 순환 옵션: 생성되는 로그 파일의 최대 개수
쉘 실행
docker exec -it /bin/bash
Docker 명령어들
docker ps
docker ps -al # 숨겨진 컨테이너도 모두 확인
docker container prune # 중지된 모든 컨테이너만 일괄 삭제
docker rm -f $(docker ps -aq) # 모든 컨테이너 일괄 삭제
docker logs <컨테이너> # 컨테이너의 로그 출력
docker logs <컨테이너> --follow # 컨테이너의 로그 지속 확인
docker ps 출력 응용
docker ps -f name=api-server # "api-server"라는 이름을 포함한 모든 컨테이너 목록 출력
docker ps -q -f name=api-server # "api-server"라는 이름을 포함한 모든 컨테이너 ID 목록 출력
# 정확히 "api-server-01" 라는 이름을 가진 컨테이너만 출력
docker ps -a --filter name=^api-server-01$
# 정확히 "api-server-01" 라는 이름을 가진 컨테이너의 ID만 출력
docker ps -q -a --filter name=^api-server-01$
# ID와 Image만 출력
docker ps --format "{{.ID}} {{.Image}}"
# "api-server"라는 이름을 포함한 모든 컨테이너의 ID만 출력
docker ps --format "{{.ID}} {{.Image}}" | grep -w "api-server" | awk '{print $1}'
Docker 명령어들 - 응용
# 가장 최근에 실행된 컨테이너의 로그 지속 출력
docker ps -ql | xargs -r docker logs --follow
# 지정 컨테이너의 로그 비우기 ==> 이후 해당 컨테이너에 docker logs --follow가 안먹히는 버그가 있음
: > $(docker inspect --format='{{.LogPath}}' **<container_name_or_id>**)
Docker compose 명령어들
docker compose up # 복합 컨테이너 생성, 실행 및 해당 CLI에서 로그 확인
docker compose up -d # 복합 컨테이너 생성, 실행(백그라운드)
docker compose start # 실행
docker compose stop # 종료
docker compose down # 제거
docker compose restart # 재시작
docker compose ps # 컨테이너 목록, 상태 확인