시간나는대로 틈틈히 정리 합시다~~!!!

[Docker] 기본 명령어 본문

IT

[Docker] 기본 명령어

열심히 정리하자!! 2021. 6. 9. 08:51
반응형

 

설명 명령어
도커 엔진 버전 확인 # docker -v
결과
   Docker version 20.10.6, build 370c289
이미지 다운로드
# docker pull [이미지명]
예시
   # docker pull centos:7

결과
  7: Pulling from library/centos
2d473b07cdd5: Pull complete 
   Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
   Status: Downloaded newer image for centos:7
   docker.io/library/centos:7
다운로드 된 도커 이미지 확인 # docker images
# docker image ls
결과
   REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
   ubuntu             14.04     13b66b487594   2 months ago   197MB
컨테이너 생성 및 실행
# docker run -i -t [이미지명]
옵션 설명   
   run (컨테이너 생성 및 실행)   
   -i -t (컨테이너와 상호 입출력 가능, attach 로 접속 가능)

예시   
   # docker run -i -t ubuntu:14.04

결과   
   Unable to find image 'ubuntu:14.04' locally
   14.04: Pulling from library/ubuntu
   2e6e20c8e2e6: Pull complete 
   0551a797c01d: Pull complete 
   512123a864da: Pull complete 
   Digest: sha256:5c01e896fa6eeaa41f3509c64af668d71d06e318cfe373dabab9d61b9eaf6441
   Status: Downloaded newer image for ubuntu:14.04root@c7d79b819bcd:/# ubuntu:14.04

이미지가 로컬 도커 엔진에 없어서 새로 다운로드 받은 후 실행된 ubuntu로 접속 됨c7d79b819bcd (실행된 ubuntu 컨테이너 고유ID)
컨테이너 생성 # docker create -i -t --name [생성할 컨테이너 이름] [이미지명]
다운로드된 이미지가 있을 경우 실행 함없을 경우 못찾는다는 오류메시지 출력옵션

설명   
   create (컨테이너 생성)   
   -i -t (컨테이너와 상호 입출력 가능, attach 로 접속 가능)   
   -- name (컨테이너 이름)

예시   
   # docker create -i -t --name mycentos centos:7

결과
  cd0320ab97583ef2ab2de92ccdbbe70dc9d144713b92af995b5d6ad17850829d (실행된 centos 컨테이너 고유 ID)

run 명어와는 다르게 바로 컨테이너로 접속이 되는건 아님
컨테이너 시작 # docker start [생성된 컨테이너 이름]
# docker start [생성된 컨테이너 이름]
생성되어 있는 컨테이너를 실행함

예시
   # docker start mycentos
   OR
   # docker start cd0320ab9758

명령어 실행 전 : # docker container ls -al
  CONTAINER ID   IMAGE      COMMAND       CREATED        STATUS    PORTS     NAMES
  cd0320ab9758   centos:7   "/bin/bash"   16 hours ago   Created             mycentos

명령어 실행 후 : # docker container ls -al 
  CONTAINER ID   IMAGE      COMMAND       CREATED        STATUS         PORTS     NAMES
  cd0320ab9758   centos:7   "/bin/bash"   16 hours ago   Up 2 seconds             mycentos
컨테이너 내부로 접속 # docker attach [실행된 컨테이너 이름]
# docker attach [실행된 컨테이너 ID]
실행중인 컨테이너 내부로 접속함

예시
   # docker attach mycentos
   OR
   # docker attach cd0320ab9758

결과
   [root@cd0320ab9758 /]# ls 
   anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  
내부 컨테이너에서 빠져나옴
# exit
해당 컨테이너 중지 포함

예시
   # exit

결과
   exit
Ctrl + P, Q
해당 컨테이너 중지 미포함
컨테이너 목록 확인
# docker ps
현재 작동중인 컨테이너 목록 표시

CONTAINER ID   IMAGE                     COMMAND             CREATED        STATUS                    PORTS                                                      NAMES
cd0320ab9758   centos:7                  "/bin/bash"         16 hours ago   Up 14 minutes                                                                        mycentos
# docker ps -a
현재 중지된 컨테이너 까지 모두 표시

CONTAINER ID   IMAGE                     COMMAND             CREATED        STATUS                        PORTS                                                      NAMES
cd0320ab9758   centos:7                  "/bin/bash"         16 hours ago   Up 15 minutes                                                                            mycentos
bf2dc1cbe53c   ubuntu:14.04              "/bin/bash"         16 hours ago   Exited (255) 19 minutes ago                                                              flamboyant_shtern
c7d79b819bcd   ubuntu:14.04              "/bin/bash"         17 hours ago   Exited (127) 16 hours ago                                                                practical_zhukovsky
69f25ce365df   centos                    "/bin/bash"         2 weeks ago    Exited (127) 2 weeks ago                                                                 nervous_gauss
# docker ps --format "table [필드]"
예시 (/t는 탭 범위만큼 뛰어서 출력)
  # docker ps --format "table {{.ID}}\t{{.Status}}"

결과
  CONTAINER ID   STATUS
  cd0320ab9758   Up 26 seconds

필드
  CONTAINER ID => {{.ID}}
  IAMGE => {{.Image}}
  COMMAND => {{.Command}}
  CREATED => {{.Created}}
  STATUS => {{.Status}}
  PORTS => {{.Ports}}
  NAMES => {{.Names}}
- CONTAINER ID : 컨테이너에게 자동으로 할동되는 고유 ID
- IMAGE : 컨터에너는 생성할 때 사용된 이미지명
- COMMAND : 컨테이너가 시작될 때 실행될 명령어(내부로 접속할 때 사용될 쉘)
- CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간
- STATUS : 컨테이너의 상태 => Up(실행중), Exited(종료), Pause(일시중지) 등
- PORT : 컨테이너가 개방한 포트와 호스트에 연결한 포트(아무것도 없는 경우 외부에노출 X)
- NAMES : 컨테이너의 고유 이름
컨테이너 상세 정보 확인 # docker inspect [컨테이너ID]
엄청 긴 16진수 해시값인 컨테이너 고유 ID에서 앞에 12자리만 입력해도 됨

예시
   # docker inspect cd0320ab9758

결과
  [
    {
        "Id": "cd0320ab97583ef2ab2de92ccdbbe70dc9d144713b92af995b5d6ad17850829d",
        "Created": "2021-06-08T23:29:54.902393581Z",
        "Path": "/bin/bash",                 
                                  
                   (내용이 많아서 중간 부분 생략)

                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]
# docker inspect [컨테이너ID] | grep Id
표시되는 전체 정보에서 Id 들어간 Low 가져와서 리턴

예시
   # docker inspect cd0320ab9758

결과
        "Id": "cd0320ab97583ef2ab2de92ccdbbe70dc9d144713b92af995b5d6ad17850829d",
컨테이너 삭제
# docker rm [옵션] [컨테이너이름]
지정된 컨테이너 삭제

예시
  # docker rm mycentos

오류상황

- 실행중인 컨테이너를 삭제할 경우 표시되는 에러메시지
    Error response from daemon: You cannot remove a running container cd0320ab97583ef2ab2de92ccdbbe70dc9d144713b92af995b5d6ad17850829d. Stop the container before attempting removal or force remove

  # docker rm -f mycentos
  => -f 옵션을 주면 실행중인 컨테이너도 삭제한다.
# docker container prune
모든 정지된 컨테이너만 삭제

정지된 컨테이너를 모두 삭제할 껀지 물어본다.

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N]

삭제된 컨테이너 ID 가 표시 된다.

Deleted Containers:
bf2dc1cbe53cbc0afdbb2f49c349ccaa5a5e240b85dbf8f18696f6b626204961
c7d79b819bcd69ff48ddf9913de907cbaad6a7aea138730ea9f4928e45e6b492
69f25ce365df0645c3bb84e24d172662a048579f9ad891ed1db46edac92f3be7


Total reclaimed space: 254B
# docker rm $(docker ps -a -q)
출력된 컨테이너 리스트를 활용해서 삭제
단순히 rm 명령으로 삭제하는거라 역시 실행중인 Container에 대해서는 에러가 표시 된다.

Error response from daemon: You cannot remove a running container cd0320ab97583ef2ab2de92ccdbbe70dc9d144713b92af995b5d6ad17850829d. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 9a78fb789f2fe1ecbd04149ecfd1ec3a87e682dda4a9f09d
컨테이너 중지 # docker stop [컨테이너이름]
예시
  # docker stop mycentos

결과
  mycentos

docker ps 명령어로 조회하면 목록에 표시 안되는걸 확인 할 수 있다.
# docker stop $(docker ps -a -q)
모든 컨테이너를 중지 한다.

 

 

 

반응형
Comments