가. 컨테이너 이미지 관리 명령어
1. 도커 로그인
- 도커 허브에 공개된 도커 이미지를 제외하고 Private registry를 다운로드하기 위해서는 로그인이 필요하다.
- 아래의 명령어를 이용하여 로그인한다.
# 도커 로그인 명령어
# 형식: docker login [OPTIONS] [SERVER]
# 도커 로그인 명령어 예시
docker login -u hagisg

2. 도커 이미지 다운로드
- 아래의 명령어를 통해 도커 이미지를 다운로드한다.
- TAG를 입력하지 않으면 자동으로 latest(최신버전)가 입력된다.
# 도커 이미지 다운로드 명령어
# 형식: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 도커 이미지 다운로드 예시
docker pull nginx:latest

3. 다운로드한 도커 이미지 출력
- 다운로드한 도커 이미지 목록은 아래의 명령어를 통해 확인할 수 있다.
# 다운로드한 도커 이미지 출력
# 형식: docker images [OPTIONS] IMAGE [IMAGE...]
# 다운로드한 도커 이미지 출력 예시
docker images
# 모든 도커 이미지 출력 예시
docker images --digests -a


4. 다운로드한 도커 이미지 삭제
- 다운로드한 도커 이미지를 삭제하고 싶을 경우 아래와 같은 명령어를 통해 삭제할 수 있다.
# 다운로드한 도커 이미지 삭제
# 형식: docker rmi [OPTIONS] IMAGE [IMAGE...]
# 이름:태그로 도커 이미지 삭제 예시
docker rmi hello-world:lates
# 도커 이미지 ID 값으로 삭제 예시
docker rmi 1beed3ca46ac
# 도커 이미지 전부 삭제 예시(``안의 내용은 명령어로 취급됨)
# docker images -q 명령어는 다운로드한 도커 이미지 ID를 출력함
docker rmi `docker images -q`
# 여러 도커 이미지 동시 삭제 예시
docker rmi hello-world:latest nginx:latest
# 이름이 <none>으로 표시된 도커 이미지 삭제 예시
docker image prune
# 도커 이미지 강제 삭제 예시
docker rmi -f hello-world:lates


5. 도커 이미지 복사
- 다운로드한 도커 이미지를 복사하기 위해 아래와 같은 명령어를 사용할 수 있다.
# 도커 이미지 복사 명령어
# 형식: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 도커 이미지 복사 예시
docker tag nginx:latest img_hagsig:latest

6. 도커 이미지 상세정보 확인
- 도커 이미지 실행 전에 '도커 허브의 OverView' 또는 아래의 명령어를 이용하여 도커 이미지의 상세 정보를 확인할 수 있다.
# 도커 이미지 상세 정보 출력 명령어
docker inspect nginx:latest

- inspect 명령어로 어떤 내용을 알 수 있는지는 아래의 게시글을 참고하길 바란다.
도커 이미지 정보 및 취약점 확인 방법 정리
가. 도커 허브에서의 이미지 정보 확인1. 도커 허브(Docker Hub) 정의- 도커 이미지를 저장하고 공유하기 위한 클라우드 기반의 중앙 저장소 서비스이다.- 도커를 이용하여 도커 이미지를 다운로드
hagsig.tistory.com
나. 컨테이너 관리 명령어
1. 컨테이너 생성
- 도커 이미지를 실행시키기 위해서는 아래의 명령어를 이용하여 컨테이너를 생성해야 한다.
# 컨테이너 생성 명령어
# 형식1: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
# 형식2: docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
# 컨테이너 생성 예시
docker create nginx:latest
# 이름을 지정하여 생성 예시
docker create --name "c_hagsig" nginx:latest

2. 컨테이너 목록 출력
- 생성된 컨테이너를 확인하기 위해 아래의 명령어를 사용한다.
# 생성된 컨테이너 출력 명령어
# 형식1: docker ps [OPTIONS]
# 형식2: docker container ps [OPTIONS]
# 현재 실행중인 컨테이너 출력 명령어
docker ps
docker container ps
# 모든 컨테이너 출력 명령어
docker ps -a
docker container ps -a
- STATUS의 상태는 현재 동작중일 경우 Up, 종료되었으면 Exited, 생성 후 실행된 적이 없다면 Created로 표시된다.

3. 컨테이너 삭제
- 생성된 컨테이너를 삭제하기 위해 아래의 명령어를 사용한다.
# 컨테이너 삭제 명령어
# 형식1: docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 형식2: docker container rm [OPTIONS] CONTAINER [CONTAINER...]
# 컨테이너 ID로 삭제 예시
docker rm 70a3ee5f413c
# 컨테이너 이름으로 삭제 예시
docker rm c_hagsig
# 컨테이너 강제 삭제 예시
docker rm -f c_hagsig
# 모든 컨테이너 삭제 예시
docker rm `docker ps -aq`
# 중지된 모든 컨테이너 삭제 예시
docker container prune


4. 컨테이너 실행
- 컨테이너를 실행하기 위해 아래의 명령어를 사용한다.
# 컨테이너 실행 명령어
# 형식1: docker start [OPTIONS] CONTAINER [CONTAINER...]
# 형식2: docker container start [OPTIONS] CONTAINER [CONTAINER...]
# 컨테이너 ID로 실행 예시
docker start 17b72b090595
# 컨테이너 이름으로 실행 예시
docker container start c_hagsig

- run 명령어를 사용하면 위의 과정(pull, create, start)을 별도로 수행하지 않아도 된다.
*이미지를 다운로드 한 뒤, 컨테이너를 만들고 실행하는 과정을 자동으로 수행하기 때문에 많이 가장 사용하는 명령어다.
# 컨테이너 실행 명령어
# 형식1: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 형식2: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 컨테이너 실행 예시1
docker run nginx:latest
# 컨테이너 실행 예시2
docker container run nginx:latest
# 컨테이너 이름 지정하여 실행 예시
docker run --name "c_hagsig" nginx:latest

5. 컨테이너 중지
- stop 명령어를 사용하여 실행 중인 컨테이너를 중지시킬 수 있다.
# 컨테이너 중지 명령어
# 형식1: docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 형식2: docker container stop [OPTIONS] CONTAINER [CONTAINER...]
# 컨테이너 이름으로 중지 예시
docker stop confident_shirley
# 컨테이너 ID로 중지 예시
docker container stop 0efe58139901

6. 동작중인 컨테이너에 명령어 실행
- 동작중인 컨테이너 내에서 실행할 명령어를 입력하고 싶을 경우, 아래와 같은 명령어를 사용한다.
# 컨테이너에 명령어 실행
# 형식1: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 형식2: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 이름으로 컨테이너에 명령어 실행 예시1
docker exec c_hagsig ls -al
# ID로 컨테이너에 명령어 실행 예시2
docker container exec e64d3561b9e2 cat /etc/nginx/nginx.conf

7. 컨테이너 내부/외부 파일 복사
- 컨테이너 내의 파일을 외부로 또는 외부의 파일을 컨테이너 내부로 복사해오고 싶을 경우 아래와 같은 명령어를 사용한다.
# 컨테이너 파일 복사 명령어
# 형식1: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
# docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
# 형식2: docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
# docker container cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
# 컨테이너 내부의 파일을 외부로 복사 예시
docker cp c_hagsig:/etc/nginx/nginx.conf /home/hagsig/test
# 외부의 파일을 컨테이너 내부로 복사 예시
docker cp /home/hagsig/hagsig_textfile c_hagsig:/etc/nginx/


8. 컨테이너 현재 상태를 도커 이미지로 저장
- 실행 중이거나 중지된 컨테이너의 현재 상태(변경된 파일, 설정 등)를 새로운 도커 이미지로 저장하고 싶을 때 아래의 명령어 사용.
# 컨테이너 현재 상태를 도커 이미지로 저장 명령어
# 형식1: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 형식2: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 컨테이너 현재 상태를 도커 이미지로 저장 예시1
docker commit e64d3561b9e2 c_tistory
# 컨테이너 현재 상태를 도커 이미지로 저장 예시2
docker container commit e64d3561b9e2 c_tistory

※주의. 이미지명과 태그명을 지정하지 않으면 <none>으로 저장된다.

- 태그명을 입력하지 않으면 latest로 태그명이 붙고, 한 번 더 태그명을 입력하지 않은 채 만들면 기존에 latest로 만들어진 이미지가 none으로 변한다.

- 도커 이미지는 오버랩(기존 데이터 위에 쌓음)으로 만들어지므로, 저장한 도커 이미지의 기초가 되는 기존 이미지를 삭제하려고 하는 경우 아래와 같은 에러가 발생한다.

나. 도커 네트워크, 볼륨 관리 명령어
1. 도커 네트워크
- 도커에서는 컨테이너 간의 통신을 네트워크를 통해 처리하며, Bridge, Host, None 세 가지 네트워크 모드를 제공한다.
# 도커 네트워크 관련 명령어
# 형식: docker network COMMAND
# 도커 네트워크 출력 예시
docker network ls

1-1. Bridge (브릿지)
- 도커의 기본 네트워크 드라이버로 컨테이너가 서로 통신할 수 있도록 독립된 네트워크를 만들어준다.
- 컨테이너는 호스트와 분리된 가상 네트워크(브릿지)를 사용하며, 외부와도 통신이 가능하다.
1-2. Host (호스트)
- 컨테이너가 호스트(운영체제)의 네트워크를 직접 사용한다.
- 컨테이너가 호스트와 동일한 인터페이스를 공유하므로, 네트워크 성능이 높아지고 포트포워딩 설정을 할 필요가 없어진다.
- 단, 보안상 격리가 약해진다.
1-3. None (Null)
- 컨테이너에 네트워크 기능을 제공하지 않는다.
- 컨테이너는 외부와 통신할 수 없으므로 오직 내부적으로만 사용된다.
- 보안이 매우 중요한 경우나 네트워크가 필요 없는 작업에 사용된다.
2. 도커 네트워크 생성
- 네트워크를 별도로 생성하려면 아래와 같은 명령어를 사용한다.
# 도커 네트워크 관련 명령어
# 형식: docker network create [OPTIONS] NETWORK
# 도커 네트워크 생성 예시
docker network create wordpress-network

3. 컨테이너와 네트워크 연결
- 생성한 네트워크에 컨테이너를 연결하려면 아래와 같은 명령어를 사용하여야 한다.
# 네트워크 연결 명령어 사용 예시
docker run -d --network wordpress-network bitnami/wordpress:latest

4. 컨테이너와 네트워크 연결 여부 확인
- 컨테이너와 연결한 네트워크 설정을 확인하려면 inspect 명령어를 사용하고, NetworkSettings 부분을 확인한다.
# 컨테이너와 네트워크 연결 여부 확인
docker inspect [container]

5. 도커 네트워크 삭제
- 생성한 네트워크를 삭제하고 싶을 경우 아래의 명령어를 사용한다.
# 도커 네트워크 삭제 명령어
# 형식: docker network rm NETWORK [NETWORK...]
# 도커 네트워크 삭제 예시
docker network rm 394456562fc7

6. 도커 볼륨
- 도커 볼륨은 컨테이너가 종료되거나 삭제되더라도 데이터를 영구적으로 저장할 수 있는 방법이다.
- 생성된 도커 볼륨을 출력하는 명령어는 아래와 같다.
# 도커 볼륨 관련 명령어
# 형식: docker volume COMMAND
# 도커 볼륨 출력 예시
docker volume ls

7. 도커 볼륨 생성
- 도커 볼륨을 생성하려면 아래와 같은 명령어를 사용할 수 있다.
# 도커 볼륨 생성 명령어
# 형식: docker volume create [OPTIONS] [VOLUME]
# 도커 볼륨 생성 명령어 예시
docker volume create --name mariadb_data

8. 컨테이너와 볼륨 연결
- 생성한 볼륨을 컨테이너와 연결하려면 아래와 같이 -v 옵션을 사용한다.
# 컨테이너와 볼륨 연결 명령어
# 컨테이너와 볼륨 연결 예시1
docker run -d -e ALLOW_EMPTY_PASSWORD=yes --volume mariadb_data:/bitnami/mariadb bitnami/mariadb:latest
# 컨테이너와 볼륨 연결 예시2
docker run -d -e ALLOW_EMPTY_PASSWORD=yes -v mariadb_data:/bitnami/mariadb bitnami/mariadb:latest

9. 볼륨 연결 여부 확인
- 컨테이너에 볼륨이 잘 연결되었는지 확인하려면 inspect 명령어를 사용하고, Mounts 부분을 확인한다.
# 컨테이너와 볼륨 연결 여부 확인
docker inspect [container]

10. 도커 볼륨 삭제
- 생성한 도커 볼륨을 삭제하기 위해서는 아래와 같은 명령어를 사용할 수 있다.
# 도커 볼륨 삭제 명령어
# 형식: docker volume rm [OPTIONS] VOLUME [VOLUME...]
# 도커 볼륨 삭제 예시
docker volume rm mariadb_data

11. 모든 도커 리소스 삭제
- 도커에서 사용하지 않는 리소스를 모두 삭제하고 싶을 때 아래와 같은 명령어를 사용한다.
- 삭제되는 리소스는 아래와 같다.
① 중지된 컨테이너
② 이름이 <none>으로 지정된 도커 이미지
③ 사용되지 않는 네트워크
④ 사용되지 않는 빌드 캐시
# 모든 도커 리소스 일괄 삭제 명령어
docker system prune
# -a 옵션: 사용 중인 리소스까지 삭제
# -f 옵션: 확인 없이 바로 삭제
docker system prune -a -f
다. 종합 실습
1. 이미지 다운로드
docker pull bitnami/wordpress

2. 도커 이미지 설치 방법 확인
- 도커 허브에 기입된 overview를 확인하여 어떤 명령어를 사용하여야 하는지 파악한다.

3. 네트워크 / 볼륨 생성
- 컨테이너에서 사용할 도커 네트워크와 볼륨을 생성한다.
docker network create wordpress-network

docker volume create --name mariadb_data
docker volume create --name wordpress_data

4. 컨테이너 생성 및 실행
- 아래의 명령어를 입력하여 웹 애플리케이션과, DB 컨테이너를 실행한다. 명령어가 너무 길 경우 '\'를 이용하여 연결할 수 있다.
$ docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_wordpress \
--env MARIADB_PASSWORD=bitnami \
--env MARIADB_DATABASE=bitnami_wordpress \
--network wordpress-network \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
$ docker run -d --name wordpress \
-p 8080:8080 -p 8443:8443 \
--env ALLOW_EMPTY_PASSWORD=yes \
--env WORDPRESS_DATABASE_USER=bn_wordpress \
--env WORDPRESS_DATABASE_PASSWORD=bitnami \
--env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
--network wordpress-network \
--volume wordpress_data:/bitnami/wordpress \
bitnami/wordpress:latest

- 아래의 명령어를 통해 '컨테이너 Port'와 '호스트 Port'간의 Port Forwarding 설정 및 정상 동작하는지를 확인할 수 있다.
docker ps
netstat -antl


5. 정상 동작 확인
- 외부에서 host ip와 port를 웹브라우저에 입력 시 정상적으로 접속되는 것을 확인할 수 있다.

라. 그 외 명령어
- 위에서 설명한 명령어 외 아래와 같은 명령어를 사용할 수 있으니 참고하길 바란다.
1. 주요 명령어 (Common Commands)
| 명령어 | 설명 |
| run | 이미지에서 새로운 컨테이너를 생성하고 실행 |
| exec | 실행 중인 컨테이너 내부에서 명령을 실행 |
| ps | 컨테이너 목록 출력 |
| build | Dockerfile에서 이미지 빌드 |
| pull | 레지스트리에서 이미지 다운로드 |
| push | 이미지를 레지스트리에 업로드 |
| images | 이미지 목록 출력 |
| login | 레지스트리에 로그인 |
| logout | 레지스트리에서 로그아웃 |
| search | Docker Hub에서 이미지 검색 |
| version | Docker 버전 정보 표시 |
| info | 시스템 전반 정보 표시 |
2. 관리 명령어 (Management Commands)
| 명령어 | 설명 |
| builder | 빌드 관리 |
| buildx | Docker Buildx (빌드 확장 기능) |
| compose | Docker Compose (컨테이너 오케스트레이션) |
| container | 컨테이너 관리 |
| context | 컨텍스트 관리 |
| debug | 이미지/컨테이너 쉘 접속 |
| desktop | Docker Desktop 관련 명령 |
| dev | Docker 개발 환경 관련 |
| extension | Docker 확장 기능 관리 |
| feedback | 터미널에서 피드백 제공 |
| image | 이미지 관리 |
| init | Docker 시작 파일 생성 |
| manifest | 이미지 매니페스트 관리 |
| network | 네트워크 관리 |
| plugin | 플러그인 관리 |
| sbom | 이미지의 소프트웨어 부품 목록(SBOM) 보기 |
| scout | Docker Scout 관련 기능 |
| system | Docker 시스템 관리 |
| trust | 이미지 신뢰 관리 |
| volume | 볼륨 관리 |
3. Swarm 명령어
| 명령어 | 설명 |
| swarm | Swarm 관리 |
4. 기타 명령어
| 명령어 | 설명 |
| attach | 실행 중인 컨테이너에 입출력 연결 |
| commit | 변경된 컨테이너로부터 새로운 이미지 생성 |
| cp | 컨테이너와 로컬 파일 시스템 간 파일 복사 |
| create | 새로운 컨테이너 생성 |
| diff | 컨테이너 파일 시스템에서 변경 사항 확인 |
| events | 실시간 이벤트 확인 |
| export | 컨테이너 파일 시스템을 tar 아카이브로 추출 |
| history | 이미지의 변경 이력 표시 |
| import | tarball에서 이미지 생성 |
| inspect | Docker 오브젝트 상세 정보 출력 |
| kill | 실행 중인 컨테이너 강제 종료 |
| load | 이미지를 tar 아카이브에서 로드 |
| logs | 컨테이너 로그 출력 |
| pause | 컨테이너 내 프로세스 일시 정지 |
| port | 포트 매핑 확인 |
| rename | 컨테이너 이름 변경 |
| restart | 컨테이너 재시작 |
| rm | 컨테이너 삭제 |
| rmi | 이미지 삭제 |
| save | 이미지를 tar 아카이브로 저장 |
| start | 중지된 컨테이너 시작 |
| stats | 컨테이너 리소스 사용량 실시간 확인 |
| stop | 실행 중인 컨테이너 중지 |
| tag | 이미지에 태그 생성 |
| top | 컨테이너 내 실행 중인 프로세스 확인 |
| unpause | 일시 정지된 프로세스 재개 |
| update | 컨테이너 설정 업데이트 |
| wait | 하나 이상의 컨테이너가 종료될 때까지 대기 후 종료 코드 출력 |
5. 전역 옵션 (Global Options)
| 명령어 | 설명 |
| --config | 클라이언트 설정 파일 경로 |
| -c, --context | 연결할 컨텍스트 지정 |
| -D, --debug | 디버그 모드 활성화 |
| -H, --host | 데몬 소켓 연결 |
| -l, --log-level | 로깅 레벨 설정 |
| --tls | TLS 사용 (암호화) |
| --tlscacert | CA 인증서 경로 지정 |
| --tlscert | TLS 인증서 파일 경로 |
| --tlskey | TLS 키 파일 경로 |
| --tlsverify | TLS 및 원격 검증 사용 |
| -v, --version | 버전 정보 출력 후 종료 |
'클라우드 취약점 진단 · 모의해킹 > 컨테이너 보안' 카테고리의 다른 글
| 도커 이미지 정보 및 취약점 확인 방법 정리 (0) | 2025.11.19 |
|---|---|
| 도커 계정생성/로그인/2차인증 방법 정리 (0) | 2025.11.19 |
| OS별 도커 설치 방법 정리(Windows, Unix 등) (0) | 2025.11.19 |