docker 커맨드 (옵션) 대상 (인자)
의 형식을 지닌다.
docker
(base command)옵션 | 설명 |
---|---|
-H(--host) | 연결할 데몬 소켓 지정 |
docker search
docker search
Docker Hub에서 이미지를 검색한다.
docker image ls
docker image ls [OPTIONS] [REPOSITORY[:TAG]]
image 목록을 보여준다.
docker image list
docker images
docker build
docker buildx build [OPTIONS] PATH | URL | -
image를 생성한다.
docker image build
docker build
옵션 | 설명 |
---|---|
-f(--file) | 도커파일명 지정 |
-t(--tag) | 태그명 지정 |
docekr image rm
docker image rm [OPTIONS] IMAGE [IMAGE...]
image를 삭제하며, -f
옵션 없이는 실행 중인 컨테이너의 이미지를 삭제할 수 없다.
docker image remove
docker rmi
옵션 | 설명 |
---|---|
-f (--force ) | 강제 이미지 제거 |
docker image history
이미지의 베이스 이미지로부터의 모든 히스토리를 보여준다.
docker image import
docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
tar 이미지를 불러온다.
docker import
docker image tag
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
소스 이미지에 태그를 붙인다.
docker tag test:web login_ID/test:web
docker login
docker push login_ID/test:web
docker image prune
docker image prune [OPTIONS]
옵션 | 설명 |
---|---|
-f (--force ) | 재확인 프롬프트 건너뜀 |
사용하지 않는 이미지를 제거한다.
prune: 가지치다, 제거하다
docker container exec
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
실행 중인 컨테이너 내에서 명령어를 실행한다.
docker exec
옵션 | 설명 |
---|---|
-i (--interactive ) | 붙어있지 않더라도 STDIN을 유지 |
-t (--tty ) | pseudo-TTY 를 할당 |
-e (--env ) | 환경변수 설정 |
-it
-i
,-t
의 두 옵션을 합친 것으로, 컨테이너 생성 후 그 내부에서 CLI를 사용한다는 뜻이다. 컨테이너에 난 창문으로 컨테이너 내의 근무자와 소통한다고 이해하면 쉽다.[출처: 얄코코딩 유튜브]
- 예시
sudo docker exec -it my_mysql /bin/bash
: my_mysql이라는 컨테이너에 들어가 bash를 실행
docker container ls
docker container ls [OPTIONS]
컨테이너 목록을 보여준다.
docker container list
docker container ps
docker ps
옵션 | 설명 |
---|---|
-a | 실행 여부와 관계없이 존재하는 모든 컨테이너 표시 |
-q (quiet) | 컨테이너 id만 표시 |
docker container rm
컨테이너를 삭제한다.
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
docker container remove
docker rm
docker container run
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
image로부터 새로운 컨테이너를 생성 및 실행하며, COMMAND
에 컨테이너 생성과 동시에 실행될 명령어를 지정할 수 있다.
⇒ docker pull + docker create + docker start
docker run
옵션 | 설명 | 인자 |
---|---|---|
-d (--detach ) | 컨테이너를 백그라운드에서 실행 | |
-p (--publish ) | host에게 지정한 포트를 공개 | |
--name | 컨테이너에 이름을 지정 | |
-v (--volume ) | 볼륨을 bind mount함 | host_dir:container_dir |
--rm | 수행이 끝난 컨테이너를 자동으로 삭제하며, 관련 볼륨들 또한 삭제 | |
--link | 또 다른 컨테이너에 링크함 | |
--restart | 컨테이너 존재시 정책 재실행 |
docker run -p 127.0.0.1:80:8080/tcp nginx:alpine
host(여기서는 localhost이지만, 특정 공인 ip 주소가 위치할 수 있음) 내 컨테이너의 8080 포트를 열어주겠다는 의미이다. docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name my_mysql mysql:5.7
sudo docker run -d -p 3306:3306 -v ~/host/directory:/container/directory:ro --name mysql_vol mysql:5.7
: -v
옵션을 주어 볼륨을 설정하였으며, [호스트경로] : 컨테이너 경로 : [readonly 옵션]
과 같이 사용할 수 있다. 이때, 위와 같이 호스트 경로를 상대경로로 설정하여도 되고 $(pwd)
를 써서 현재 경로로 설정도 가능하다.docker container start
컨테이너를 시작하거나 정지된 컨테이너를 재실행한다.
docker container start [OPTIONS] CONTAINER [CONTAINER...]
docker start
docker container stop
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
컨테이너 실행을 종료한다.
⇒ 컨테이너 내 메인 프로세스가 SIGTERM
신호를 받고, 일정 시간이 유예되면 SIGKILL
신호를 받게 됨으로써 종료된다. 이때, 유예 기간동안 컨테이너의 Dockerfile 내에서 STOPSIGNAL
명령어를 받게 되거나, docker run
명령에 --stop-signal
옵션을 주면 첫 신호(SIGTERM)가 바뀔 수 있다.
docker stop
docker container commit
docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
컨테이너의 변경사항을 포함하여 새로운 이미지를 생성한다.
docker commit
옵션 | 설명 |
---|---|
-a (--author ) | 제작자 |
-m (--message ) | 메시지 |
docker container cp
docker cp <호스트의 파일 경로> <컨테이너 이름>:<컨테이너 내 경로>
docker cp <컨테이너 이름>:<컨테이너 내 파일 경로> <호스트의 경로>
aliases
docker cp
도커 컨테이너와 호스트 사이에서 파일이나 디렉토리를 복사하는 데 사용하며, 반대로도 가능하다.
예시
docker cp myfile.txt mycontainer:/usr/src/app/myfile.txt
docker cp mycontainer:/usr/src/app/myfile.txt ./myfile.txt
# 호스트의 myfile.txt를 mycontainer라는 이름의 컨테이너의 /usr/src/app 디렉토리로 복사
컨테이너 이름 대신 컨테이너 ID를 사용할 수도 있으며, 디렉토리를 복사할 때는 디렉토리 내의 모든 파일과 하위 디렉토리가 함께 복사된다.
docker container diff
docker container diff CONTAINER
docker diff
컨테이너 생성 후 컨테이너 내 파일 시스템에서 변경된 파일이나 디렉토리를 나열한다.
심볼 | 설명 |
---|---|
A | 추가 |
D | 삭제 |
C | 변경 |
docker container export
docker container export [OPTIONS] CONTAINER
컨테이너의 파일시스템을 tar 아카이브 형태로 내보낸다.
docker export
docker container logs
docker container logs [OPTIONS] CONTAINER
도커 컨테이너에 대한 로그를 불러온다.
docker logs
docker inspect
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker 객체의 하위 수준의 정보를 보여준다. 즉, 도커에 의해 관리되는 구성물(컨테이너, 이미지, 볼륨, 네트워크 등)에 대한 상세한 정보를 JSON 포맷(기본값)으로 제공한다.
docker system stat
실행 중인 컨테이너의 런타임 통계를 보여준다.
docker system events
서버로부터의 실시간 이벤트를 받는다.
docker events
docker system prune
docker system prune [OPTIONS]
사용되지 않는 데이터(컨테이너, 네트워크, 이미지 등들을 삭제한다.
docker system info
docker system info [OPTIONS]
도커 시스템 정보를 표시한다.
docker info
docker network create
도커 엔진 설치 시 기본적으로 브릿지 네트워크 형태의 docker0가 생성되며, 이 네트워크는 삭제할 수 없다. 따라서 사용자 정의 네트워크를 구축하려면 이 명령어를 사용할 수 있다.
옵션 | 설명 |
---|---|
-d (--driver ) | 네트워크를 관리하는 드라이버 지정 (디폴트는 브릿지 네트워크) |
docker buildx create
docker buildx create [OPTIONS] [CONTEXT|ENDPOINT]
새로운 BuildKit(Docker의 차세대 빌드 엔진) 빌더 인스턴스를 생성한다.
CI 파이프라인에서 빌드 실패 시, 이전 스텝에서 생성된 이미지들이 제거되지 않고 남아있는 문제가 있었다. 이런 이미지들이 계속 쌓이다보면 리소스 관리가 어려워질 수 있다. 따라서, 파이프라인 후처리 작업에 docker image prune
명령어를 사용하여 잔존 이미지를 제거하는 작업을 수행했다.
pipeline {
post {
always {
script {
echo '관련된 잔존 이미지 모두 삭제!'
sh """
docker rmi ${IMAGE_TARGET}
docker image prune -f
"""
}
}
}
}