Priceless

[Docker]Docker CLI for images 본문

Docker & Kubernetes/Docker

[Docker]Docker CLI for images

Hyun__ 2023. 12. 17. 19:26

Docker CLI (Command Line Interface)

Docker daemon과 통신하여 기능 수행

daemon이 실행된 후 docker가 실행될 수 있다

 

daemon과 통신하기 위한 권한을 가지기 위해 

docker group을 supplementary group에 포함시켜야 사용할 수 있다

 

username을 확인하고

user에게 docker 권한을 부여한다

 

이후 id 명령어를 입력하면 

user가 추가되지 않았는데 

id <username> 명령어를 입력하면 

시스템 상에 나타나는 것을 확인할 수 있다

 

id 명령어는 현재 runtime 상태를 반영한 것이며

id <username>은 현재 configure 설정 상태를 반영한 것이기 때문이다

새롭게 설정을 만들었다 하더라도

다음 세션부터 반영된다

 

 

 

세션을 재생성하기 위해 다시 로그인을 수행한다

Ubuntu 환경에서는 gdm 또한 재실행하야하므로

아래 과정을 수행하거나 reboot 한다

 

X window로 로그인 하기 위해 

<CTRL - ALT - F1>을 누른 후 다시 로그인 하기 위해 터미널을 열고 수행한다

 

 

ps

개인 계정으로도 docker 사용이 가능해졌으므로

user 계정에서 docker ps 명령어를 입력하면

작동 중인 컨테이너를 출력한다

 

docker ps -a 명령어를 입력하면

종료된 컨테이너를 포함하여 모든 컨테이너를 출력한다

docker run을 많이 했을수록 더 많이 나타난다

 

숫자와 영어로 구성된 container id

사용하는 컨테이너 이미지인 image

컨테이너 내에서 실행된 명령어인 command

언제 생성되었는지 created

마지막 command가 실행된 후의 exit 결과를 알려주는 status

컨테이너 고유의 이름인 names, 이름은 임의로 정해지며 지정할 수 있다

 

 

 

 

hello world 를 한 번 더 실행한다

docker ps -a 명령어를 입력하면

새로운 컨테이너가 나타난 것을 확인할 수 있다

 

컨테이너를 지우기 위해 

docker rm <names or container id> 명령어를 입력한다

 

 

 

run

 

컨테이너의 이름을 직접 지정하여 생성하기 위해 

docker run --name <string> <image name> 명령어를 입력하면

image name 이름을 가진 컨테이너가 string의 이름을 가진다

 

이름을 지정하면 컨테이너를 더 편리하게 관리할 수 있다

 

 

10개의 hello-world 컨테이너를 만든다

하나씩 생성하거나 반복문을 사용해서 만든다

그 결과 10개의 컨테이너가 생성된 것을 확인할 수 있다

 

filter

docker의 특정 명령어에는 filter 기능이 제공된다

ps 명령어에 사용하기 위해

-f 를 붙인 후 원하는 검색어와 조건을 입력한다

 

docker ps -a -f 'name=hello' 명령어인 경우 

name에 hello가 들어가있는 컨테이너를 출력한다

 

glob 패턴을 지원하므로

값의 범위를 지정할 수 있다

가장 앞 글자만 검색하므로 10 또한 포함된다

 

 

필터링할 수 있는 항목은 아래와 같다

 

format

format 옵션을 사용하면 원하는 column만 뽑을 수 있으며

모든 명령어에 적용되는 것은 아니다

 

ps 명령어에서 사용할 경우

--format을 추가한 후 원하는 항목을 "큰 따옴표"에 입력한다

 

docker ps -af 'name=hel' --format "{{.ID}} {{.Image}} {{.Status}} {{Names}}" 명령어를 입력할 경우

hel로 시작하는 컨테이너의 정보 중 ID, Image, Status, Names를 출력한다

 

format을 통해 출력할 수 있는 항목은 아래와 같다

항목 앞에 .(점)을 붙여 사용한다

 

rm

docker 컨테이너를 삭제하는 명령어로

원하는 컨테이너 여러 개를 삭제하는 경우

filter 명령어와 결합하여 사용할 수 있다

 

docker rm <name|ID> 명령어와 같이 입력하여

해당하는 컨테이너를 삭제한다

 

xargs 명령어를 통해 앞에서 실행한 명령어의 결과를 뒤로 가져와 사용할 수 있다

 

 

rmi

docker 컨테이너의 이미지를 지우는 명령어로

컨테이너가 사용 중이지 않을 때 지울 수 있다

 

사용 중인 컨테이너를 삭제한 후

이미지를 삭제하면 에러 문구가 뜨지 않는다

 

image

docker image 명령어를 입력하면

이미지와 관련하여 사용할 수 있는 명령어를 알려준다

 

 

image: ls

시스템의 도커 이미지를 확인하기 위해 

docker image ls 명령어를 입력한다

 

repository는  docker image 저장소의 이름을 의미한다

 

image: pull

docker run 명령어에는 

pull 명령어를 통해 이미지를 가져오는 과정이 먼저 수행된 후 실행한다

 

도커 이미지를 실행 목적이 아닌,  

build하거나 save만 하기 위해서 

docker image pull 명령어를 사용한다

docker pull 명령어만 사용해도 가능하다

 

docker image pull nginx 명령어를 입력하면

nginx 이미지를 save한 것을 알 수 있다

 

image: inspect

docker image inspect <image name> 명령어를 통해

이미지 내의 설정, 환경 등을 볼 수 있다

 

inspect에서 출력되는 항목은 매우 많기 때문에

특정 항목만 확인하기 위해

format을 활용하여 일부만 확인할 수 있다

 

일반적으로 json 형식으로 출력된다

 

 

image: save and load

큰 도커 이미지는 자주 다운받고 지우기 어려우므로

이미지를 저장한 후 재사용하는 것을 권장한다

 

docker image save <image name> 명령어를 통해 

도커 이미지를 stdout으로 출력한다

이를 파일로 받기 위해

'> (docker image name.tar) 를 추가한다

 

이름에 버전을 추가하기 위해서는 

inspect 명령어를 통해 버전을 확인한 후 추가하는 것이 좋다

 

이후 file 명령어를 통해 파일의 정보를 확인하면

POSIX tar archive 인 것을 확인할 수 있다

 

docker image save  명령어 대신

docker save 명령어로 사용할 수 있다

 

 

 

save한 도커 이미지를 load하기 위해

stdin을 통해 이미지를 불러온다

 

docker image load < (docker image name) 명령어를 통해

기존의 도커 이미지를 불러올 수 있다

 

docker image load 명령어 대신

docker load 명령어로 사용할 수 있다

'Docker & Kubernetes > Docker' 카테고리의 다른 글

[Docker]docker compose  (0) 2023.12.23
[Docker]Docker CLI for execution  (1) 2023.12.20
[Docker] Docker Installation in Linux  (1) 2023.12.17
[Docker]chroot Container  (1) 2023.12.17