이번 시간에는 docker image 에 대해 알아보겠습니다.
1. 도커 이미지 개요
도커 이미지는 도커 컨테이너를 생성하고 실행하기 위한 읽기 전용(Read-only) 베이스 템플릿입니다.
프로그램 실행에 필요한 운영체제, 라이브러리, 런타임 환경, 소스 코드 등을 하나의 파일 구조로 패키징한 형태를 띠고 있습니다. (사실: 도커 이미지는 상태를 가지지 않으며 컨테이너의 바탕이 됩니다.
2. 이미지 제공 채널 (도커 허브)
도커 이미지는 주로 중앙 이미지 레지스트리인 도커 허브(Docker Hub)를 통해 유통됩니다.
- 공식(Official) 이미지: MySQL, Python, Nginx 등 소프트웨어 제조 관리 단체가 직접 제공하는 이미지입니다. 도커 측의 보안 점검(악성 코드, 취약점 등)을 거쳐 공식 등재되므로 신뢰성이 높습니다. 무료로 제공됩니다.
- 개인화(Custom) 이미지: 공식 이미지를 베이스로 사용자가 자체 코드를 추가하여 재구성한 이미지입니다.
- 비공개(Private) 저장소: 비용을 지불하여 특정 개인이나 팀만 접근 가능하도록 설정하는 방식입니다. 실무 인프라 환경에서는 도커 허브 대신 클라우드 제공자의 서비스(예: AWS ECR)를 활용하여 프라이빗 저장소를 구축하는 것이 일반적입니다.
3. 대표적인 도커 이미지와 계층(Layer) 구조
도커 이미지는 단일 파일이 아니라, 유니온 파일 시스템(Union File System)을 기반으로 여러 층(Layer)이 누적되는 구조입니다.
- OS: Ubuntu, Alpine 등 (가장 하위 계층)
- Language: Python, Java, Node.js (OS 계층 위에 실행 환경 누적)
- Web Server: Nginx, Apache
- WAS: SpringBoot, FastAPI
- DB: MySQL, PostgreSQL
[개인화 이미지 누적 구조 예시] 사용자가 Python FastAPI 기반 웹 서비스를 구성할 경우 다음과 같이 계층이 쌓입니다.
- 리눅스 (OS 베이스)
- FastAPI 및 Python 환경
- 사용자 커스텀 웹 서비스 소스 코드
4. 도커 이미지 관련 주요 명령어 (CLI)
CLI(Command Line Interface) 환경에서 이미지를 관리하기 위한 필수 명령어는 다음과 같습니다.
이미지 다운로드 (pull)
레지스트리로부터 이미지를 다운로드합니다. 버전을 명시하지 않으면 자동으로 최신(latest) 버전을 가져옵니다.
docker image pull ubuntu
docker image pull nginx

이미지 목록 확인 (ls)
로컬 환경에 다운로드된 이미지 리스트(ID, 용량, 태그 등)를 출력합니다.
docker image ls

이미지 상세 정보 조회 (inspect)
특정 이미지의 환경 변수, 네트워크 설정, 볼륨, 구성 계층 등의 세부 메타데이터를 JSON 형식으로 출력합니다.
docker image inspect ubuntu:latest
[
{
"Id": "sha256:3131b4cc82a783df6c9df078f86e01819a13594b865c2cad47bd1bca2b7063bb",
"RepoTags": [
"ubuntu:latest"
],
"RepoDigests": [
"ubuntu@sha256:3131b4cc82a783df6c9df078f86e01819a13594b865c2cad47bd1bca2b7063bb"
],
"Comment": "Add rock control metadata",
"Created": "2026-07-13T16:05:01.993680744Z",
"Config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Labels": {
"org.opencontainers.image.created": "2026-07-13T16:06:30.499069+00:00",
"org.opencontainers.image.description": "The Ubuntu container image maintained by Canonical\n\nUbuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things.\nIt is the world's most popular operating system across public clouds and OpenStack clouds.\nIt is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale.\nFast, secure and simple, Ubuntu powers millions of PCs worldwide.\n",
"org.opencontainers.image.title": "ubuntu",
"org.opencontainers.image.version": "26.04"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 41593622,
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:d6b1a90bccf18353db11e206211d1438050e64d14c56a48ae067131e0a3cc245",
"sha256:d85193ee52f1c6af3150f4f15bde65704cf6ec6f113dc3802940d62410eb8da5"
]
},
"Metadata": {
"LastTagTime": "2026-07-20T07:46:23.930946657Z"
},
"Descriptor": {
"mediaType": "application/vnd.oci.image.index.v1+json",
"digest": "sha256:3131b4cc82a783df6c9df078f86e01819a13594b865c2cad47bd1bca2b7063bb",
"size": 6694
},
"Identity": {
"Pull": [
{
"Repository": "docker.io/library/ubuntu"
}
]
}
}
]
이미지 검색 (search)
도커 허브에 등록된 이미지를 검색합니다. --limit 옵션을 사용해 별점(STARS) 상위 항목만 필터링하여 신뢰할 수 있는 공식 이미지를 쉽게 판별할 수 있습니다.
docker search nginx --limit 3

이미지 삭제 (rm)
불필요한 이미지를 삭제하여 디스크 볼륨을 확보합니다.
- 추가 기술 사실: 컨테이너가 사용 중인 이미지는 삭제할 수 없으며, 태그가 없는 댕글링(Dangling) 이미지를 일괄 삭제하여 공간을 최적화하려면 docker image prune 명령어를 사용할 수 있습니다.
docker image rm ubuntu
5. 커스텀 이미지 생성 및 레지스트리 업로드 절차
작업한 내역을 저장하고 원격 저장소에 배포하는 과정입니다.
- 컨테이너 실행: 베이스 이미지 다운로드 후 컨테이너를 구동합니다. (docker run -d -p 80:80 --name my_nginx nginx)
- 커스텀 작업: 컨테이너 내부에 접속하여 필요한 소스 코드를 추가하거나 설정을 변경합니다. (이후 컨테이너 상태를 기반으로 이미지를 생성합니다.)
- 이미지 태그 지정 (tag)원격 저장소에 업로드하기 위해 타겟 이미지에 계정명/이미지명:버전 형식으로 태그를 부여합니다.
docker image tag nginx <본인 도커 계정명>/nginx_0720:1.0
인증 및 업로드 (login, push)
도커 허브에 인증한 뒤, 태그가 지정된 커스텀 이미지를 원격 저장소로 업로드합니다. 도커 허브의 무료 계정에서는 업로드된 이미지가 기본적으로 전체 공개(Public) 처리됩니다.
docker login
docker image push <본인 도커 계정명>/nginx_0720:1.0

오늘의 한 마디
기업의 가치는 그대로인데 그 가치를 토대로 주식시장에서 사람들은 가격을 매긴다. 근데 가격이 많이 오르던지 떨어지던지 그 기업의 가치는 같지만 별의별 이유를 만들어서 그것의 가격이 움직이는 이유를 붙여댄다. 뭐 그것 또한 시장이 옳을 수 있지만 너무 다들 겁을 먹는 것 같다. 오히려 기업의 가격이 떨어지면 기쁜 마음으로 싸게 살 수 있다는 생각을 하면 좋지 않을까 생각한다.
절대 기분이 태도가 되지 않도록 노력해야겠다.
'코딩 개발 > Docker' 카테고리의 다른 글
| Dockerfile 기본 활용법 - FROM (0) | 2026.08.06 |
|---|---|
| Docker - Volume & Mount (볼륨, 마운) (0) | 2026.08.05 |
| Docker - Network 네트워크 (0) | 2026.08.04 |
| Docker - Container 컨테이너 (0) | 2026.08.03 |
| Docker - 개요, 구조, 설치, 기본 명령어 (0) | 2026.07.30 |