Docker Hardened Images 퀵스타트
Docker Hardened Images 퀵스타트
실제 예시를 통해 Docker Hardened Image(DHI)를 제로부터 실행까지 진행해보고, 표준 Docker 이미지와 비교하며 차이를 이해하는 방법을 안내해요.
출처: 문서
본문
이 가이드는 실제 예시를 사용해 Docker Hardened Image(DHI)를 제로에서 실행하는 과정까지 보여줘요. 마지막에는 DHI를 표준 Docker 이미지와 비교해 차이를 더 잘 이해하게 됩니다. 단계에서 특정 이미지를 예시로 사용하지만, 어떤 DHI에도 적용할 수 있어요.
이 퀵스타트는 dhi.io의 DHI Community 이미지를 사용해요. Docker 계정으로 로그인하고, 이미지를 풀·실행하며, Docker Official Image와 비교해봐요.
[!NOTE]
DHI Select 또는 Enterprise 구독이 있다면 Get started with DHI Select and Enterprise 문서를 대신 봐요. Select와 Enterprise는 Docker Hub의 조직 네임스페이스에 있는 미러링된 저장소를 사용해 커스터마이징, SLA 기반 보안 업데이트, 컴플라이언스 변형 접근을 가능하게 해요.
1단계: 사용할 이미지 찾기
- Docker Hub에서 Hardened Images 카탈로그로 이동해요.
- 검색 바나 필터를 사용해 이미지를 찾아요(예:
python,node,golang). 이 예시에서는python을 검색해 봐요. - Python 저장소를 선택해 상세 정보를 봐요.
다음 단계로 계속 진행해 이미지를 풀·실행해요. 이미지 검색·평가를 더 깊이 살펴보고 싶다면 Search and evaluate Docker Hardened Images 문서를 봐요.
2단계: 이미지 풀 및 실행
DHI는 다른 Docker 이미지처럼 풀·실행할 수 있어요. Docker Hardened Images는 최소화·보안 처리되도록 설계되었으므로, 일반적인 이미지에서 기대하는 모든 도구나 라이브러리가 없을 수도 있어요. 일반적인 차이점은 Considerations when adopting DHIs에서 볼 수 있어요.
다음 예시는 Python 이미지를 실행하고 다른 Docker 이미지처럼 간단한 Python 명령을 실행할 수 있다는 것을 보여줘요.
-
터미널을 열고 Docker 계정 자격 증명으로 Docker Hardened Images 레지스트리에 로그인해요.
$ docker login dhi.io[!TIP]
Docker 계정이 없다면 무료 계정을 만들어 시작해요.
-
이미지를 풀해요.
$ docker pull dhi.io/python:3.13 -
이미지를 실행해 모든 것이 잘 작동하는지 확인해요.
$ docker run --rm dhi.io/python:3.13 python -c "print('Hello from DHI')"이 명령은
python:3.13이미지에서 컨테이너를 시작하고Hello from DHI를 출력하는 간단한 Python 스크립트를 실행해요.
이미지 사용을 더 자세히 알아보려면 다음을 봐요.
- 일반적 사용법은 Use a Docker Hardened Image
- Helm으로 배포하려면 Use a Helm chart
3단계: 다른 이미지와 비교하기
DHI를 다른 이미지와 빠르게 비교해 보안 개선점과 차이를 볼 수 있어요. 이 비교는 강화 이미지 사용의 가치를 이해하는 데 도움을 줘요.
다음 명령을 실행해 Python용 Docker Hardened Image를 Docker Hub의 강화되지 않은 Python Docker Official Image와 비교해요. 출력에서 ## Overview 섹션을 찾아 요약 비교를 확인해요.
$ docker scout compare dhi.io/python:3.13 \
--to python:3.13 \
--platform linux/amd64 \
--ignore-unchanged
출력의 ## Overview 섹션은 다음과 비슷해요.
## Overview
│ Analyzed Image │ Comparison Image
────────────────────┼───────────────────────────────────────────────────────┼───────────────────────────────────────────────
Target │ dhi.io/python:3.13 │ python:3.13
digest │ c215e9da9f84 │ 7f48e892134c
tag │ 3.13 │ 3.13
platform │ linux/amd64 │ linux/amd64
provenance │ https://github.com/docker-hardened-images/definitions │ https://github.com/docker-library/python.git
│ 77a629b3d0db035700206c2a4e7ed904e5902ea8 │ 3f2d7e4c339ab883455b81a873519f1d0f2cd80a
vulnerabilities │ 0C 0H 0M 0L │ 0C 1H 5M 141L 2?
│ -1 -5 -141 -2 │
size │ 35 MB (-377 MB) │ 412 MB
packages │ 80 (-530) │ 610
│ │
[!NOTE]
이는 예시 출력이에요. 새로 발견된 CVE와 이미지 업데이트에 따라 결과가 다를 수 있어요.
Docker는 Docker Hardened Images에서 제로에 가까운 CVE를 유지해요. DHI Select 및 Enterprise 구독에서는 새 CVE가 발견되면 업계 최고 수준의 SLA 시간 내에 해결돼요. SLA 기반 보안 기능에 대해 더 알아봐요.
이 비교는 Docker Hardened Image가 다음을 보여줘요.
- 취약점 제거: 1개의 high, 5개의 medium, 141개의 low, 2개의 unspecified 심각도 CVE가 제거됨
- 크기 감소: 412 MB에서 35 MB로 (91% 감소)
- 패키지 최소화: 610개 패키지에서 80개로 (87% 감소)
이미지 비교를 더 자세히 알아보려면 Search and evaluate Docker Hardened Images 문서를 봐요.
다음 단계(What's next)
첫 Docker Hardened Image를 풀·실행했어요. 계속 진행할 몇 가지 방법이 있어요.
-
Migrate existing applications to DHIs: Gordon을 사용해 Dockerfile을 Docker Hardened Images를 베이스로 업데이트해요.
-
Start a trial: FIPS와 STIG 변형 접근, 커스터마이즈된 이미지, SLA 기반 업데이트 같은 DHI 구독 이점을 살펴봐요.
-
Get started with DHI Select and Enterprise: DHI 구독에 가입하거나 트라이얼을 시작한 후 저장소 미러링, 이미지 커스터마이징, 컴플라이언스 변형 접근 방법을 배워요.
-
Verify DHIs: Docker Scout나 Cosign 같은 도구로 SBOM, provenance 같은 서명된 attestation을 검사·검증해요.
-
Scan DHIs: Docker Scout나 다른 스캐너로 이미지를 분석해 알려진 CVE를 식별해요.