본문 바로가기
IT/Kubernetes

[Docker] 기본 실행 및 명령어

by rapker 2023. 4. 8.
반응형

참고

요약

도커 허브에서 이미지를 다운로드 받고 기본적인 명령어들을 사용해 봅니다.

#이미지 다운로드

DockerHub에서 ubuntu로 검색 하여 image 다운로드 cmd 복사

 

#이미지 다운로드 후 확인

docker pull ubuntu:20.04

docker images

 

#이미지로 컨테이너 실행

docker run -it --name myubuntu ubuntu:20.04 bash

 

컨테이너가 실행되고 컨테이너에 접속하여 bash가 실행된 상태

 

#컨테이너에서 나오기

exit

실행중인 컨테이너가 없는 상태

 

#모든 컨테이너 목록 확인

docker ps -a

아까 실행 했었던 컨테이너가 종료되어 있는 모습

 

#컨테이너를 다시 실행 시킨 후 실행중인 컨테이너 목록 확인

docker start myubuntu

docker ps

컨테이너를 실행하는 run과 start의 차이

  • run : 컨테이너를 새로 만들면서 실행
  • start : 생성되어 있는 컨테이너를 실행

 

docker ps -a

모든 컨테이너 목록 에서도 실행중인 상태

 

#컨테이너 안으로 들어가기

docker ps

docker attach [실행중인 컨테이너 id]

 

#컨테이너 중지하지 않고 밖으로 나와서 실행중인 컨테이너 목록 확인

ctrl + p + q

컨테이너에서 빠져 나왔어도 여전히 실행중인 컨테이너

 

#실행중인 컨테이너 종료 후 확인

docker ps

docker stop [종료할 컨테이너 id]

docker ps

 

자세히

 

#도커 허브는

도커 이미지를 저장, 공유 해주는 서비스 입니다. (git과 github 같은)

 

공개용 이미지는 무료로 도커 허브에 저장할 수 있습니다.

비공개 이미지를 저장하려면 비용을 지불해야 합니다.

 

#도커 이미지 이름 규칙

  • [저장소 명]/[이미지 명]:[태그]
    • 저장소 이름은 이미지가 저장되어 있는 저장소를 의미
      • 저장소 이름이 명시되지 않은 경우는 도커에서 기본적으로 제공하는 공식 이미지를 뜻함
    • 이미지 명은 해당 이미지가 어떤 역할을 하는지 나타냄
    • 태그는 이미지의 버전관리, 혹은 리비전 관리에 사용
      • 태그를 생략하면 최신버전(latest)로 인식함

 

#docker Hub에 등록된 이미지 검색

docker search [이미지이름:태그]

docker search ubuntu

 

#도커 이미지 태그 리스트

docker search는 이미지의 tag(버전)목록을 출력하는 기능은 지원되지 않고,

linux의 function을 이용한 방법으로 특정 이미지의 태그 목록을 얻어올 수 있습니다.

 

사용해본 결과를 먼저 말씀드리자면...

(아직 경험하지 못한 다른 용도 면에서 효율이 있는지는 모르겠으나)

 

ubuntu 라고 검색 했을때 변형되지 않은 순수한 ubuntu의 버전 목록을 기대 했으나

ubuntu / tags에 등록된 모든 버전이 검색되서 필요가 없는 것 같고,

 

function 작성해서 등록 시키고 목록 검색하느니, 그냥 docker hub 사이트에서 검색 하는것이 훨씬 편한것 같네요

 

Docker Hub 이미지 tag list 확인 방법

  • vi편집기로 taglist 생성

  • function 작성

taglist(){ 
    if [ -n "$1" ]; then 
        curl -s https://registry.hub.docker.com/v1/repositories/$1/tags | grep -oP '(?<="name": ")[^"]+' 
    else 
        printf '\n%s\n\n' "Usage: ${FUNCNAME[0]} image_name" 
    fi 
}
  • function 적용

  • function 사용

 

 

도커 명령어 레퍼런스

Docker CLI Reference - docker.com

 

#host에 존재하는 이미지 목록

docker images

docker images -a

docker images -aq

 

#docker hub에서 이미지 다운로드

docker pull ubuntu:latest

 

#실행중인 컨테이너 목록

docker ps

docker ps -a

docker ps -aq

 

#실행중, 종료된 컨테이너 목록

docker ps -a

 

#컨테이너를 새로 만들면서 실행

docker run -i -t --name hello ubuntu:latest /bin/bash

docker run -it --name hello ubuntu:latest bash

docker run -it -d --name hello ubuntu:latest /bin/bash

 

#실행중인 컨테이너 종료

docker stop <container name or container id>

docker stop hello

 

#실행중인 모든 컨테이너 종료

docker stop $(docker ps -aq)

(docker ps -aq는 모든 컨테이너의 ID를 반환)

 

#컨테이너 시작하기

docker start  <container name or container id>

docker start hello

 

#컨테이너 삭제

docker rm <container name or container id>

docker rm hello

 

#모든 컨테이너 삭제

docker rm $(docker ps -aq)

(docker ps -aq는 모든 컨테이너의 ID를 반환)

 

#컨테이너 재시작하기

docker restart <container name or container id>

docker restart hello

 

#이미지 삭제

docker rmi <container id>

 

#이미지 모두 삭제

docker rmi $(docker images -aq)

(docker images -aq는 모든 이미지의 ID를 반환)

 

#컨테이너 생성만 실행하지 않음

docker create

다른 커맨드들에도 이런 옵션들이 있는지 아직 모르겠지만

  • host, ip, port, dns, resource limit 이런 옵션들 사용할 수 있나보네

#실행중인 컨테이너에 전달

docker exec

반응형
LIST