티스토리 뷰
도커는 리눅스 기반이기에 CLI로 작동한다.
따라서 도커를 사용하려면 명령어와 옵션을 미리 파악해야한다.
이 포스트에서 명령어와 옵션을 정리하고 실전에서 많이 쓸 예제를 작성하도록 하겠다.
기본 명령
Docker 버전 및 상세정보 확인
$ docker version
Docker 버전 및 빌드 버전을 한줄로 간단하게 확인.
$ docker -v
Docker의 시스템 전체 정보 확인.
$ docker system info
서버로 부터 실시간 이벤트를 받는다.
$ docker system event
도커 디스크의 사용량 확인.
$ docker system df
도커 허브에 로그인
$ docker login -u [ID]
이미지
도커 이미지 리스트 출력
$ docker image [옵션]
- -a, --all: 모든 이미지를 표시
- --digests: 이미지의 디제스트를 표시. 디제스트는 이미지의 내용을 나타내는 SHA256 체크섬
- -f, --filter: 이미지를 필터링. 특정 레포지토리나 태그를 기반으로 필터링 가능
- --format: 지정된 Go 템플릿을 사용하여 출력 형식을 지정하여 원하는 정보만을 표시하도록 출력을 사용자 정의가능
- --no-trunc: 출력을 줄이지 않고 전체 정보를 표시
- -q, --quiet: 이미지 ID만을 표시
image 상세 정보 표시
$ docker image inspect [옵션] IMAGE [image...]
Docker 이미지의 메타데이터, 레이어 정보, 환경 설정 등을 포함한 세부 정보를 JSON 형식으로 제공.
- --format, -f: Go 언어의 템플릿 문자열을 사용하여 출력 형식을 지정하여 특정 필드만을 추출하여 표시가능
- --type: 검사할 대상의 타입을 지정
docker hub에 image 검색
$docker search [옵션] <검색어>
# 옵션 사용 예제 - 자동빌드 설정, star수 15개 이상인 mysql 이미지
$docker search --filter is-automated=true --filter starts=15 mysql
- --filter, -f: 검색 결과를 필터링하기 위한 옵션. 예를 들어 is-automated, is-official, stars 등의 필터를 사용가능.
- --format: 지정된 Go 템플릿을 사용하여 출력 형식을 지정하여 원하는 정보만을 표시하도록 출력을 사용자 정의가능
- --limit: 표시할 검색 결과의 최대 개수를 지정. 기본값은 최대 25
- --no-trunc: 검색 결과의 출력을 줄이지 않고 전체 정보를 표시
컨테이너
컨테이너 생성 및 실행
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#서버라는 컨테이너를 우분투18환경으로 생성. 호스트의 3000번 포트와 컨테이너의 80번 포트 연결
docker run -d -it --name server -p 3000:80 ubuntu:18.04
- -d, --detach: 컨테이너를 백그라운드에서 실행
- --name: 컨테이너에 이름을 지정
- -p, --publish: 호스트와 컨테이너 간에 포트포워딩 설정.
- -v, --volume: 호스트와 컨테이너 간에 볼륨을 매핑, 이를 통해 데이터를 컨테이너와 호스트 간에 공유
- -e, --env: 컨테이너 내에서 환경변수를 설정
- --rm: 컨테이너가 종료될 때 자동으로 삭제
- -it: 대화형 터미널을 할당. 주로 쉘 접근이 필요할 때 사용.
- --network: 컨테이너를 특정 네트워크에 연결.
- --restart: 컨테이너의 재시작 정책을 설정
- --entrypoint: 컨테이너의 기본 진입점을 덮음
- --memory, --cpu-shares: 컨테이너의 리소스 사용을 제한.
컨테이너 시작(start), 중지(stop), 재시작(restart)
$docker start [컨테이너명, ID]
# 컨테이너 중지
$docker stop [컨테이너명, ID]
# 컨테이너 재시작
$docker restart [컨테이너명, ID]
컨테이너 삭제
# 컨테이너 단건 삭제
$docker rm [컨테이너 ID]
# 컨테이너 다건 삭제
$docker rm [컨테이너 ID}, [컨테이너 ID]
# 컨테이너 전체 삭제
$docker rm 'docker ps -a -q'
컨테이너 리스트 확인
#현재 실행중인 컨테이너 확인
$docker ps
#실행중, 중지중 컨테이너 리스트 확인
$docker ps -a
컨테이너 접속
# 실행되고 있는 컨테이너에 접속 - attach
# 컨테이너 run시 /bin/bash 사용하지 않았다면 접속 불가.
$docker attach [컨테이너명, ID]
# 실행중인 컨테이너에 접속, 명령수행가능 - exec
# exit로 종료
$docker exec -it [컨테이너명, ID] /bin/bash
댓글