[도커] 필수 명령어

Woonil·2025년 8월 16일
0

도커

목록 보기
3/4
post-thumbnail

docker 커맨드 (옵션) 대상 (인자) 의 형식을 지닌다.

🤔개념

기본 명령어

docker (base command)

옵션설명
-H(--host)연결할 데몬 소켓 지정

docker search

Docker Hub에서 이미지를 검색한다.

이미지 관련

docker image ls

docker image ls [OPTIONS] [REPOSITORY[:TAG]]

image 목록을 보여준다.

  • aliases
    • docker image list
    • docker images

docker build

docker buildx build [OPTIONS] PATH | URL | -

image를 생성한다.

  • aliases
    • docker image build
    • docker build
옵션설명
-f(--file)도커파일명 지정
-t(--tag)태그명 지정

docekr image rm

docker image rm [OPTIONS] IMAGE [IMAGE...]

image를 삭제하며, -f 옵션 없이는 실행 중인 컨테이너의 이미지를 삭제할 수 없다.

  • aliases
    • docker image remove
    • docker rmi
옵션설명
-f (--force)강제 이미지 제거

docker image history

이미지의 베이스 이미지로부터의 모든 히스토리를 보여준다.

docker image import

docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

tar 이미지를 불러온다.

  • aliases
    • docker import

docker image tag

docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

소스 이미지에 태그를 붙인다.

  • 도커 허브에 push할 이미지에 태그 지정
    1. docker tag test:web login_ID/test:web
    2. docker login
    3. 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...]

실행 중인 컨테이너 내에서 명령어를 실행한다.

  • aliases
    • 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]

컨테이너 목록을 보여준다.

  • aliases
    • docker container list
    • docker container ps
    • docker ps
옵션설명
-a실행 여부와 관계없이 존재하는 모든 컨테이너 표시
-q (quiet)컨테이너 id만 표시

docker container rm

컨테이너를 삭제한다.

docker container rm [OPTIONS] CONTAINER [CONTAINER...]

  • aliases
    • docker container remove
    • docker rm

docker container run

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

image로부터 새로운 컨테이너를 생성 및 실행하며, COMMAND 에 컨테이너 생성과 동시에 실행될 명령어를 지정할 수 있다.

docker pull + docker create + docker start

  • aliases
    • 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...]

  • aliases
    • docker start

docker container stop

docker container stop [OPTIONS] CONTAINER [CONTAINER...]

컨테이너 실행을 종료한다.

⇒ 컨테이너 내 메인 프로세스가 SIGTERM 신호를 받고, 일정 시간이 유예되면 SIGKILL 신호를 받게 됨으로써 종료된다. 이때, 유예 기간동안 컨테이너의 Dockerfile 내에서 STOPSIGNAL 명령어를 받게 되거나, docker run 명령에 --stop-signal 옵션을 주면 첫 신호(SIGTERM)가 바뀔 수 있다.

  • aliases
    • docker stop

파일 시스템 관련

docker container commit

docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

컨테이너의 변경사항을 포함하여 새로운 이미지를 생성한다.

  • aliases
    • 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

  • aliases
    • docker diff

컨테이너 생성 후 컨테이너 내 파일 시스템에서 변경된 파일이나 디렉토리를 나열한다.

심볼설명
A추가
D삭제
C변경

docker container export

docker container export [OPTIONS] CONTAINER

컨테이너의 파일시스템을 tar 아카이브 형태로 내보낸다.

  • aliases
    • docker export

모니터링 관련

docker container logs

docker container logs [OPTIONS] CONTAINER

도커 컨테이너에 대한 로그를 불러온다.

  • aliases
    • docker logs

docker inspect

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

docker 객체의 하위 수준의 정보를 보여준다. 즉, 도커에 의해 관리되는 구성물(컨테이너, 이미지, 볼륨, 네트워크 등)에 대한 상세한 정보를 JSON 포맷(기본값)으로 제공한다.

시스템 관련

docker system stat

실행 중인 컨테이너의 런타임 통계를 보여준다.

docker system events

서버로부터의 실시간 이벤트를 받는다.

  • aliases
    • docker events

docker system prune

docker system prune [OPTIONS]

사용되지 않는 데이터(컨테이너, 네트워크, 이미지 등들을 삭제한다.

docker system info

docker system info [OPTIONS]

도커 시스템 정보를 표시한다.

  • aliases
    • docker info

네트워크 관련

docker network create

도커 엔진 설치 시 기본적으로 브릿지 네트워크 형태의 docker0가 생성되며, 이 네트워크는 삭제할 수 없다. 따라서 사용자 정의 네트워크를 구축하려면 이 명령어를 사용할 수 있다.

옵션설명
-d (--driver)네트워크를 관리하는 드라이버 지정 (디폴트는 브릿지 네트워크)

멀티 플랫폼 관련

docker buildx create

docker buildx create [OPTIONS] [CONTEXT|ENDPOINT]

새로운 BuildKit(Docker의 차세대 빌드 엔진) 빌더 인스턴스를 생성한다.

😎실습

CI 파이프라인에서 이미지 정리하기

CI 파이프라인에서 빌드 실패 시, 이전 스텝에서 생성된 이미지들이 제거되지 않고 남아있는 문제가 있었다. 이런 이미지들이 계속 쌓이다보면 리소스 관리가 어려워질 수 있다. 따라서, 파이프라인 후처리 작업에 docker image prune 명령어를 사용하여 잔존 이미지를 제거하는 작업을 수행했다.

pipeline {
	post {
    	always {
        	script {
            	echo '관련된 잔존 이미지 모두 삭제!'
                sh """
                	docker rmi ${IMAGE_TARGET}
                    docker image prune -f
                """
            }
        }
    }
}
profile
프론트 개발과 클라우드 환경에 관심이 많습니다:)

0개의 댓글