일일 정리

Docker Command, Docker Image & HUB

mysecurity 2025. 5. 19. 17:49

목차

1. Docker Command

1-1 Docker Command 구조 및 구성

1-2 Docker Command 

1-3 Docker 실습

 

2. Docker Image & HUB

2-1 Image & Container

2-2 Image & HUB

2-3 Image command

 

 

1. Docker Command

1-1 Docker Command 구조 및 구성

● 도커 명령어 구조

docker [상위명령] [하위명령] [옵션] [대상] [인자]
        image      run       -a
        container  pull      -i
        volume     start     -t
        network    stop      -d
        system     create    ...
        ...        ...

- 상위명령의 container는 자주 사용되어 생략이 가능하다.

- 하위명령은 상위명령에 종속적이다. 서로 다른 상위명령에 공통으로 존재할 수 있다.

- 옵션은 하위명령에 종속적이다. 서로 다른 하위명령에 공통으로 존재할 수 있다. 종류가 많으므로 외우지 않고 매뉴얼로 확인한다.

 

● 도커 명령어 구성

- run 명령어 실행 시 create + start 를 동시에 실행하는 것과 같다.

 

1-2 Docker Command 

● 정보 확인 명령

# docker version
 
# docker info

 

 

# docker version : 현재 도커의 버전을 출력한다.

 

 

# docker info : 현재 도커의 상세 정보를 출력한다.

 

● system 하위 명령

하위명령 내용
df 디스크 사용량 확인
events 관련 이벤트 출력
info 시스템 관련 정보 출력
prune 회수 가능한 공간 확보

- 어디서든 프룬을 보면 뭔가 정리하겠다는 의도로 짐작할 수 있다.

- 각 단계 별로 '--help' 명령을 이용해서 하위 명령이나 옵션을 확인한다

  ex) docker --help

        docker system df --help

 

● image 하위 명령

하위명령 내용
pull 도커 허브나 레파지토리에서 이미지 다운
ls 다운한 이미지 목록 출력
rm 이미지 삭제
build 이미지 생성
save 이미지를 파일로 저장
load 저장된 이미지 파일(tar)을 이미지로 로드

 

● [container] 하위 명령

하위명령 내용
run 컨테이너 실행 
create 컨테이너 생성
rm 컨테이너 삭제
start 컨테이너 실행
stop 컨테이너 정지
ps(ls) 컨테이너 목록 출력
. . .  . . .

- container 명령어는 생략 가능하다.

- 컨테이너 실행 시 필요한 이미지가 없다면 자동으로 다운로드받는다.

- 컨테이너는 프로세스이므로 ls가 아닌 ps를 사용한다.

 

● volume 하위 명령

하위명령 내용
create 볼륨 생성
ls 볼륨 목록 출력
rm 볼륨 삭제
prune 마운드 되지 않은 모든 볼륨 삭제
inspect 볼륨 상세 정보 출력

- 컨테이너는 일시적이므로 그 안에 저장된 데이터는 언제든 삭제될 수 있다. 볼륨으로 컨테이너들의 공유 공간을 만들어 데이터를 함구적으로 저장할 수 있다.

- 데이터가 함구적이고 무결성이 중요한 DB같은 것을 컨테이너에 올리는 것은 매우 신중하게 결정한다.

 

● network 하위 명령

하위명령 내용
connect 컨테이너를 네트워크에 연결
disconnect 컨테이너의 네트워크 연결 해제
create 네트워크 생성
inspect 네트워크 상세 정보 출력
ls 네트워크 목록 출력
prune 컨테이너가 연결되지 않은 모든 네트워크 삭제
rm 네트워크 삭제

- 컨테이너는 자동으로 NAT로 ip 주소가 할당된다.

 

● 단독 명령

상위명령 없이 단독으로 사용된다.

하위명령 내용
login 레지스트리에 로그인
logout 레지스트리에서 로그아웃
search 레지스트리 검색
version 도커 엔진, 명령 행 독 버전 출력

 

 

● 옵션

옵션 내용
-a --attach, --all
-d --detach (컨테이너를 백그라운드에서 실행)
-i --interactive
-t --tty
--name 컨테이너 이름
--rm 종료 시 자동 삭제

- attach는 해당 컨테이너와 연결하는 것으로, 쉘이 떠있어야 attach 가능하다.

- i와 t 옵션은 터미널을 열어주는 옵션으로, 둘은 함께 사용한다.

 

1-3 Docker 실습

인터페이스와 터미널을 열어 centos를 실행한다. 화면에 나오는 인터페이스, 즉 centos의 쉘만 떠온 것이다.

- centos:8과 같이 ':' 을 이용해 태그를 붙여야 한다. 임의의 값이 아닌 정해진 값을 적어야 하므로 도커 허브에서 태그를 확인한다.

 

 

ctrl+p+q로 커널을 종료할 수 있다.

- 현재 살아있는 컨테이너와 가지고 있는 이미지 파일을 확인할 수 있다.

 

 

docker ps 명령어로 확인한 CONTAINER ID 혹은 NAMES를 이용해 컨테이너를 정지 및 삭제할 수 있다. 

CONTAINER ID 혹은 NAMES는 식별 가능한 정도만 작성하면 정상 작동한다.

- 컨테이너 정지 시 ps 명령어로는 확인되지 않으나 ps -a 명령어로 종료된 컨테이너 확인이 가능하다.

- 컨테이너 삭제 시 ps -a 명령어로도 확인되지 않는다. 단, 사용됐던 이미지는 그대로 남아있는 것을 확인할 수 있다.

 

 

--rm을 붙여 실행할 경우 컨테이너 정지 시 자동으로 프로그램도 죽는다.

 

 

2. Docker Image & HUB

2-1 Image & Container

이미지와 컨테이너의 관계는 붕어빵 틀과 붕어빵의 관계와 같다. 이미지는 컨테이너를 생성하는 템플릿으로, 이미지를 통해 다수의 컨테이너를 생성할 수 있다.

 

2-2 Image & HUB

도커 이미지는 다음 도커 허브에서 제공된다. 회원가입하여 이용한다.

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

● 터미널에서 도커 허브에 로그인

도커 허브 실습 전 반드시 로그인하여 진행한다.

# docker login -u [도커 허브 사용자명]  // 로그인

# docker logout                        // 로그아웃

 

 

● 이미지 검색

다음과 같은 명령어를 통해 도커 허브내의 이미지를 검색한다.

# docker search [옵션] [이미지이름]
ex) # docker search --limit 3 mysql

 

※ 옵션

--limit n n건만 검색
--filter=stars=n starts가 n건 이상인 이미지만 검색
--no-trunc 결과를 모두 제한하지 않고 출력

 

- 첫 번째 건의 깔끔한 mysql은 오피셜 이미지이다.

- 두 번째, 세 번째 건은 유저가 올린 이미지로, bitnami, circleci 부분이 유저 계정 부분이다. 

 

해당 명령어를 통해서는 이미지에 맞는 태그를 확인할 수 없으므로 어차피 도커 허브에서 찾아야한다. 때문에 이러한 검색보다 도커 허브에서 이미지를 찾는 것이 더 중요하다.

centos 검색

 

centos 이미지 태그 확인

 

2-3 Image command

● 이미지 다운로드

# docker image pull [option] image[:tag]

 

옵션

-a, -all 모든 이미지 표시

 

ex) httpd 이미지 검색 및 다운로드

# docker search --limit 1 httpd
# docker image pull httpd

- 태그를 붙이지 않을 시 기본적으로 :lastest 태그가 붙는다. 즉 latest 태그는 생략이 가능하다.

 

 

● 다운로드한 이미지 확인

# docker image ls [option] [repository]

 

※ 옵션

-a, -all 모든 이미지 표시
--digests digests 표시여부
--no-trunc 결과 모두 표시
-q, --quiet docker image ID만 표시

 

 

● 이미지 삭제

# docker image rm image1[, image2, ...] // 특정 이미지 삭제
 
# docker image prune                   // 모든 이미지 삭제

- rm의 경우 이미지 이름 또는 id로 삭제 가능하다.

 

※ 옵션

rm prune
-f, --force 강제 삭제 -a, --all 미사용 모든 이미지 삭제
--no-prune 중간 이미지 유지 -f, --force 강제 삭제

 

ex) 미사용 모든 이미지 강제 삭제

# docker image prune -af

 

위와 같은 명령을 alias명으로 지정하여 간편한 명령이 가능하다.

# vi/etc/profile
.
.
.
alias dirm='docker image prune -af'

 

'일일 정리' 카테고리의 다른 글

Container & Process  (0) 2025.05.22
Docker container command  (2) 2025.05.21
DOCKER  (0) 2025.05.16
SQL 인젝션 방어  (1) 2025.05.15
SQL 인젝션  (1) 2025.05.14