Docker

[공부] Docker 정리 - 1. 간략 개념정리 및 이미지(Image) 명령어

썸머a 2024. 7. 12. 15:45

도커 (Docker)

컨테이너(Container)를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴


컨테이너 (Container)

독립적인 환경을 구성하여 각 환경별로

프로그램을 실행 및 관리할 수 있게 해주는 개념

 

가상의 작은 컴퓨터를 만들어서 내가 필요한 프로그램들을 돌린다고 생각하면 될 듯

 

이때 여러 개의 컨테이너를 포함하고 있는 컴퓨터를 호스트(Host) 컴퓨터라고 한다.

자료출처 : 인프런 비전공자도 이해할 수 있는 Docker 입문/실전 강의 교본



이미지 (Image)

도커 내부에서 사용할 수 있는 프로그램 개념도커의 이미지는 실행하는데 필요한 설치 과정, 설정, 버전 정보 등을 모두 포함한다.따라서 내가 만든 프로그램을 도커 이미지로 만들어 배포하면프로그래밍 언어 설정 및 DB 설정 등의 모든 설정이 내가 설정한대로 사용자에게 설치되며 내 이미지를 다운 받은 사람은 해당 이미지를

실행만 하면 되는 상태가 된다.

 

이미지는 Dockerhub 사이트를 통해 내 이미지를 공유하거나 다른 사람들의 이미지를 받을 수 있다.

 

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

아무래도 가장 많이 이용하게 되는건 오라클 등의 인증된 회사들이 올려주는 공식 이미지ㅎ

 

1) 이미지 다운로드하기

* docker 명령어들은 cmd창이나 Windows PowerShell에서 사용한다. ( 개인적으론 명령어구분이 편해서 powershell 추천 )

# Docker 이미지 다운로드하기 - 태그명 생략가능. 생략시 최신버전(latest) 다운로드
docker pull [이미지명]:[태그명]

# 다운받은 이미지 목록 확인
docker image ls

 

필요한 이미지는 dockerhub에서 검색하면 된다.

dockerhub에서 친절하게 명령어까지 복사해가라고 만들어주니 귀찮으면 그냥 검색해서 복붙하기

dockerhub 검색후 태그 탭을 눌러보면 태그버전 명령어도 Copy 가능

 

2) 이미지 삭제하기

- 이미지 단일 삭제

#특정 이미지 삭제
docker image rm [이미지 ID 또는 이미지명]

 

특정 이미지를 삭제할때 이미지 ID값이나 이미지명을 보고 삭제할 수 있다

이미지 ID를 입력할 때 전체 ID를 다 입력하지 않고 ID의 일부만 입력해도 되지만 해당되는 이미지가 유일해야지만 가능하다.

이때 컨테이너가 사용중인 이미지는 원칙적으로 삭제할 수 없지만 

강제 삭제 옵션을 통해 중지된 컨테이너가 사용중인 이미지를 삭제할 수 있다.

#중지된 컨테이너가 사용중인 이미지 강제 삭제
docker image rm -f [이미지 ID 또는 이미지명]

 

단, 현재 가동중인 컨테이너가 사용중인 이미지는 어떤 방법으로든 삭제할 수 없다.

해당 이미지를 삭제하고 싶다면 가동중인 컨테이너를 종료한 후 삭제해야 한다.

 

- 이미지 전체 삭제

도커를 사용하다 보면 사용하지 않는 이미지들이 점점 쌓이게 되는데 이때 전체삭제 명령어를 통해 불필요한 이미지를 삭제할 수 있다.

# 컨테이너에서 사용하고 있지 않은 이미지만 전체 삭제
$ docker image rm $(docker images -q)

# 중지된 컨테이너에서 사용하고 있는 이미지를 포함해서 전체 이미지 삭제
$ docker image rm -f $(docker images -q)

 

※ docker images -q
도커 내부에 있는 모든 이미지의 ID를 반환한다.

이때 -q 옵션은 quite를 의미하며 상세정보 대신 각 이미지의 고유ID값만 표시하도록 하는 옵션