docker 커맨드 (옵션) 대상 (인자) 의 형식을 지닌다.
docker (base command)| 옵션 | 설명 |
|---|---|
-H(--host) | 연결할 데몬 소켓 지정 |
docker searchdocker search
Docker Hub에서 이미지를 검색한다.
docker image lsdocker image ls [OPTIONS] [REPOSITORY[:TAG]]
image 목록을 보여준다.
docker image listdocker imagesdocker builddocker buildx build [OPTIONS] PATH | URL | -
image를 생성한다.
docker image builddocker build| 옵션 | 설명 |
|---|---|
-f(--file) | 도커파일명 지정 |
-t(--tag) | 태그명 지정 |
docekr image rmdocker image rm [OPTIONS] IMAGE [IMAGE...]
image를 삭제하며, -f 옵션 없이는 실행 중인 컨테이너의 이미지를 삭제할 수 없다.
docker image removedocker rmi| 옵션 | 설명 |
|---|---|
-f (--force) | 강제 이미지 제거 |
docker image history이미지의 베이스 이미지로부터의 모든 히스토리를 보여준다.
docker image importdocker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
tar 이미지를 불러온다.
docker importdocker image tagdocker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
소스 이미지에 태그를 붙인다.
docker tag test:web login_ID/test:webdocker logindocker push login_ID/test:webdocker image prunedocker image prune [OPTIONS]
| 옵션 | 설명 |
|---|---|
-f (--force) | 재확인 프롬프트 건너뜀 |
사용하지 않는 이미지를 제거한다.
prune: 가지치다, 제거하다
docker container execdocker 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 lsdocker container ls [OPTIONS]
컨테이너 목록을 보여준다.
docker container listdocker container psdocker ps| 옵션 | 설명 |
|---|---|
-a | 실행 여부와 관계없이 존재하는 모든 컨테이너 표시 |
-q (quiet) | 컨테이너 id만 표시 |
docker container rm컨테이너를 삭제한다.
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
docker container removedocker rmdocker container rundocker 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.7sudo 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 startdocker container stopdocker container stop [OPTIONS] CONTAINER [CONTAINER...]
컨테이너 실행을 종료한다.
⇒ 컨테이너 내 메인 프로세스가 SIGTERM 신호를 받고, 일정 시간이 유예되면 SIGKILL 신호를 받게 됨으로써 종료된다. 이때, 유예 기간동안 컨테이너의 Dockerfile 내에서 STOPSIGNAL 명령어를 받게 되거나, docker run 명령에 --stop-signal 옵션을 주면 첫 신호(SIGTERM)가 바뀔 수 있다.
docker stopdocker container commitdocker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
컨테이너의 변경사항을 포함하여 새로운 이미지를 생성한다.
docker commit| 옵션 | 설명 |
|---|---|
-a (--author) | 제작자 |
-m (--message) | 메시지 |
docker container cpdocker 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 diffdocker container diff CONTAINER
docker diff컨테이너 생성 후 컨테이너 내 파일 시스템에서 변경된 파일이나 디렉토리를 나열한다.
| 심볼 | 설명 |
|---|---|
A | 추가 |
D | 삭제 |
C | 변경 |
docker container exportdocker container export [OPTIONS] CONTAINER
컨테이너의 파일시스템을 tar 아카이브 형태로 내보낸다.
docker exportdocker container logsdocker container logs [OPTIONS] CONTAINER
도커 컨테이너에 대한 로그를 불러온다.
docker logsdocker inspectdocker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker 객체의 하위 수준의 정보를 보여준다. 즉, 도커에 의해 관리되는 구성물(컨테이너, 이미지, 볼륨, 네트워크 등)에 대한 상세한 정보를 JSON 포맷(기본값)으로 제공한다.
docker system stat실행 중인 컨테이너의 런타임 통계를 보여준다.
docker system events서버로부터의 실시간 이벤트를 받는다.
docker eventsdocker system prunedocker system prune [OPTIONS]
사용되지 않는 데이터(컨테이너, 네트워크, 이미지 등들을 삭제한다.
docker system infodocker system info [OPTIONS]
도커 시스템 정보를 표시한다.
docker infodocker network create도커 엔진 설치 시 기본적으로 브릿지 네트워크 형태의 docker0가 생성되며, 이 네트워크는 삭제할 수 없다. 따라서 사용자 정의 네트워크를 구축하려면 이 명령어를 사용할 수 있다.
| 옵션 | 설명 |
|---|---|
-d (--driver) | 네트워크를 관리하는 드라이버 지정 (디폴트는 브릿지 네트워크) |
docker buildx createdocker 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
"""
}
}
}
}