Docker Engine 29 릴리스 노트
Docker Engine 29 릴리스 노트
이 문서는 Docker Engine 29 버전에서 새로 추가된 기능, 변경 사항, 알려진 문제, 그리고 버그 수정 내역을 정리한 내용이에요. 각 버전별로 어떤 변화가 있었는지 하나씩 살펴볼게요. 특히 업그레이드 전에 꼭 확인해야 할 호환성 주의사항도 함께 설명드릴게요.
출처: 공식문서
본문
더 알아보기 (Learn more)
- 지원 중단(Deprecated) 및 제거된 기능에 대한 자세한 내용은 Deprecated Engine Features를 참고하세요.
- Engine API 변경 사항은 Engine API version history에서 확인할 수 있어요.
29.8.1
2026-09-15
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- containerd 이미지 저장소:
docker load실행 시 이미 존재하는 이미지를 로드한 뒤 댕글링(dangling) 이미지가 남는 문제를 수정했어요. moby/moby#53595 - 관리형 containerd가 시작 중에 CRI pod-sandbox 플러그인 의존성 경고를 로그로 남기던 문제를 수정했어요. moby/moby#53585
- OpenVZ 환경에서 네임스페이스 inode 번호가 가상화되어 있어 사용자 네임스페이스 감지가 실패하던 문제를 수정했어요. moby/moby#53605
- Windows: 컨테이너 커밋 시 하드 링크를 보존하도록 수정했어요. 이제 여러 이름을 가진 파일이 이름마다 각각 저장되는 대신, 결과 이미지 레이어에 한 번만 저장돼요. moby/moby#53624
패키징 업데이트
- containerd(정적 바이너리)를 v2.3.5로 업데이트했어요. moby/moby#53589
네트워킹
- 잘못된
type필터가 제공되면GET /networks가 500 상태 코드를 반환하던 문제를 수정했어요. moby/moby#53678
29.8.0
2026-09-03
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
새로운 기능
HostConfig.Umask옵션과 이에 대응하는--umask <octal>플래그가docker create/docker run에 추가됐어요. 컨테이너의 메인 프로세스, exec, 헬스체크에 적용할 umask를 설정할 수 있어요. moby/moby#53463, docker/cli#7108awslogs로깅 드라이버에서 서비스 이름, 환경, 커스텀 CloudWatch 엔티티 속성을 로그에 첨부할 수 있게 됐어요. moby/moby#52632
보안
- 데몬에서 기본 컨테이너 AppArmor 프로필 템플릿을 구성할 수 있는 기능이 추가됐어요. moby/moby#52771
- 자세한 내용은 https://docker.docker.com/engine/security/apparmor/#customize-the-default-profile에서 확인하세요.
- 컨테이너가 32비트
socketcall(2)경로를 통해AF_VSOCK소켓을 생성하고 호스트 가상 머신과 통신하지 못하도록 AppArmor 및 SELinux 정책 규칙을 추가했어요. moby/moby#53551
네트워킹
- 다른 Swarm 네트워크를 할당하지 못한 상황에서
docker network inspect가 정상적인 Swarm 네트워크를 찾지 못하던 문제를 수정했어요. moby/moby#53325 - 동일한 키에 대한 동시 업데이트 후 노드가 Swarm 서비스 디스커버리 항목의 대체된 값을 gossip하던 문제를 수정했어요. moby/moby#53479
- 노드가 네트워크 멤버십 알림을 놓친 후 Swarm 서비스 이름이 무기한으로 해석되지 않던 문제를 수정했어요. moby/moby#53437
- 일시적인 노드 장애 후 정상 노드에서 Swarm 서비스 이름이 해석되지 않던 문제를 수정했어요. moby/moby#53142
nft명령이 파이프를 가득 채울 만큼 stderr 출력을 생성할 때 dockerd가 멈추는 문제를 방지했어요. moby/moby#53517- 클러스터에서 반복적으로 연결이 끊기고 다시 합류하는 노드가 생성하는 gossip 트래픽을 줄였어요. moby/moby#53479
- 원격 네트워크 드라이버 플러그인이
Join응답의DstName필드를 통해 컨테이너 측 인터페이스 이름을 설정할 수 있게 됐어요. moby/moby#52866 - 사용할 수 없는 네트워크가 생성되는 것을 방지하기 위해 "container" 및 "container:" 네트워크 이름을 예약했어요. moby/moby#51973
- 데몬의 주기적인 Swarm 오버레이 네트워크 gossip 및 동기화 작업을 시간에 걸쳐 분산시켜 CPU 및 네트워크 사용량의 반복적인 버스트를 방지했어요. moby/moby#53475
- Swarm 서비스 메시 게시 포트가 이제 로컬 컨테이너의 게시 포트와 동일한 인프라를 사용해요. moby/moby#53118
루트리스(Rootless)
- 루트리스 모드에서
pasta네트워크 드라이버에--disable-host-loopback이 적용되지 않던 문제를 수정했어요. moby/moby#53358 - RootlessKit을 v3.1.0으로 업데이트하여 루트리스 모드에서
pesto포트 드라이버를 지원하게 됐어요. 사용하려면DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=pesto를 설정하세요.pasta네트워크 드라이버가 필요하고 IPv4만 지원해요. moby/moby#53358
Go SDK
- 최소 지원 Go 버전이 1.26으로 올라갔어요. docker/cli#7258
버그 수정 및 개선
- 컨테이너 목록 조회(
docker ps,GET /containers/json)에annotation필터가 추가되어 어노테이션으로 컨테이너를 필터링할 수 있어요. moby/moby#53538 - containerd 이미지 저장소:
docker image inspect가docker image ls보다 작은 이미지 크기를 보고하던 문제를 수정했어요. moby/moby#53426 - containerd 이미지 저장소: 단일 풀 내에서 레지스트리 인증이 반복되어 이미지 풀이 느려지던 문제를 수정했어요. moby/moby#53497
- containerd 이미지 저장소 이미지에 대해 예상된 이미지 서명 ID 누락을 오류로 로그에 남기지 않도록 수정했어요. moby/moby#53495
- 시스템 containerd 서비스가 구성되어 있지 않고 containerd도 설치되어 있지 않으면 dockerd가 이제 임베디드 containerd를 사용해요. moby/moby#53388
- containerd 이미지 저장소 사용 시
GET /images/{name}/json의Size에 압축 해제된 스냅샷 사용량이 포함되지 않던 문제를 수정했어요. moby/moby#53426 FROM --platform으로 비호스트 플랫폼을 선택하는 Dockerfile 스테이지의 클래식 빌더 캐시 문제를 수정했어요. moby/moby#53503DOCKER_HOST또는-H에 잘못된 호스트가 지정되면 CLI가 패닉에 빠지던 문제를 수정했어요. docker/cli#7280- 시작 간격(start interval)이 시작 기간(start period)보다 길 때 헬스체크가 너무 오래 지연되던 문제를 수정했어요. moby/moby#52317
docker inspect출력(GET /containers/{id}/json)과 컨테이너 목록(docker ps,GET /containers/json)에서 마운트 순서가 일치하지 않던 문제를 수정했어요. moby/moby#53534- NRI 컨테이너 메타데이터에서
Container.Args가 DockerCmd만 포함하는 대신 해석된 실행 파일을argv[0]로 포함하도록 수정했어요. 이제 실제 컨테이너에서 실행되는 프로세스와 일치해요. moby/moby#53423 - 자동 생성된 이름이 이미 사용 중일 때 Swarm 서비스 생성이 실패하던 문제를 수정했어요. moby/moby#53468
btrfs스토리지 드라이버 사용 시 컨테이너 루트 디렉터리/가 전 세계에서 쓰기 가능하게 되던 문제를 수정했어요. moby/moby#53500docker ps가 게시 포트를 숫자 순서가 아닌 사전순으로 정렬하던 문제를 수정했어요. docker/cli#7144- 강제 업데이트 중 서비스 마운트 순서를 보존하여 다음 스택 배포 시 불필요한 롤아웃이 발생하지 않도록 했어요. docker/cli#7227
- CRI가 비활성화된 경우 containerd의 v2 CRI 플러그인이 로드되지 않도록 방지했어요. moby/moby#53564
- 플러그인 훅 출력(예: "What's next:" 힌트)이 명령의 오류 메시지 앞이 아닌 뒤에 출력되도록 수정했어요. docker/cli#6976
- 체크포인트 ID에 경로 구분자가 포함된 경우 거부하여 컨테이너 체크포인트 디렉터리 외부로의 접근을 방지했어요. moby/moby#53377
패키징 업데이트
- BuildKit을 v0.33.0으로 업데이트했어요. moby/moby#53554
- containerd(정적 바이너리)를 v2.3.4로 업데이트했어요. moby/moby#53409
- Go 런타임을 1.26.8로 업데이트했어요. moby/moby#53550, docker/cli#7274
- runc(정적 바이너리 내)를 v1.5.1로 업데이트했어요. moby/moby#52306
29.7.2
2026-08-05
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- 동일한 환경 변수가 두 번 이상 전달되면
docker service create및docker service update가 패닉에 빠지던 문제를 수정했어요. docker/cli#7145 - Docker Engine 29.7.0에서 도입된 회귀 문제를 수정했어요. 일부 이미지 빌더가 생성한 절대 하드링크 대상을 포함하는 이미지의 풀이 거부되던 문제였어요. moby/moby#53305
- Docker Engine 29.7.0에서 도입된 또 다른 회귀 문제를 수정했어요. 이전 Linux 커널에서 파일 권한(디바이스 노드 포함)을 적용할 때 이미지 풀과
docker cp가 실패할 수 있었어요. moby/moby#53305
패키징 업데이트
- BuildKit을 v0.32.2로 업데이트했어요. moby/moby#53300
네트워킹
- 기본 체인 정책을 세미콜론으로 종료하여 더 많은 nftables 릴리스와의 호환성을 개선했어요. moby/moby#53303
29.7.1
2026-07-31
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- 명시적인 부모 디렉터리 항목이 없는 디렉터리를 포함하는 레이어의 이미지를 풀 수 없던 회귀 문제를 수정했어요. moby/moby#53260
CopyToContainer가/var/run->/run같은 절대 심볼릭 링크를 통과하는 컨테이너 경로를 거부하던 회귀 문제를 수정했어요. moby/moby#53261
29.7.0
2026-07-30
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
새로운 기능
- 실험적인
embedded-containerd기능이 추가됐어요. 별도의 관리 프로세스 대신 데몬 프로세스 내부에서 containerd를 실행하는 방식이에요. moby/moby#52898 image마운트 유형이 더 이상 실험적이지 않아요. moby/moby#52998- 명시적 타임아웃이 없는 컨테이너에 할당할 중지 타임아웃을 구성하는
default-stop-timeout데몬 옵션이 추가됐어요. moby/moby#53146
보안
이번 릴리스에는 Docker Engine 및 관련 구성 요소에 영향을 주는 보안 취약점 수정이 포함되어 있어요.
- github.com/moby/go-archive를 v0.3.0으로 업데이트하여 CVE-2026-17106 / GHSA-hfg8-hc9c-6c3h를 수정했어요. moby/moby#53247, docker/cli#7139
네트워킹
- 컨테이너가 네트워크에서 연결 해제되는 동안 컨테이너 네트워크 인터페이스 정리가 실패하면 데몬이 패닉에 빠지던 문제를 수정했어요. moby/moby#53237
- 인그레스 프록시 리스너 바인딩에 실패한 후 Swarm 인그레스 포트를 제거할 때 데몬이 패닉에 빠지던 문제를 수정했어요. moby/moby#53022
루트리스(Rootless)
--net=host를 사용하는 컨테이너의 cgroup 마운트를 유지하도록 했어요. moby/moby#52318
버그 수정 및 개선
docker service ls,docker service ps,docker node ps에--filter이름 및 알려진 값에 대한 셸 완성 기능을 추가했어요. docker/cli#7124- containerd 이미지 저장소: 풀과 푸시에 대한 데몬 전체 동시 다운로드 및 업로드 제한이 적용되지 않던 문제를 수정했어요. moby/moby#53081
- 이전의 무제한 시작 동작을 유지하려면 "max-concurrent-downloads"와 "max-concurrent-uploads"를 0으로 구성하세요.
- 사용자 네임스페이스 리매핑이 활성화된 컨테이너에 파일을 복사할 때
docker cp -a가 잘못된 파일 소유자를 사용하던 문제를 수정했어요. moby/moby#53084 - Windows 컨테이너에서 소스 경로가 구분자로 끝나지만 디렉터리가 아닌 경우
docker cp가 오류 대신 파일을 조용히 반환하던 문제를 수정했어요. moby/moby#53123 - containerd 런타임 사용 시 실행 중인 Windows 컨테이너에 대해
docker stats가 모두 0으로 보고되던 문제를 수정했어요. moby/moby#53101 - containerd 런타임 사용 시 실행 중인 Windows 컨테이너에 대해
docker stats가 빈 네트워크 통계를 보고하던 문제를 수정했어요. moby/moby#53219 docker create --pull플래그 설명의 오타를 수정했어요. docker/cli#7103- LB 엔드포인트 인터페이스에 VIP IP 별칭이 이미 존재할 때 "file exists" 오류로 Swarm 서비스 업데이트가 실패하던 문제를 수정했어요. moby/moby#51657
- 이미지가 레지스트리에서 풀되지 않았지만 노드에 이미 존재하는 경우 Swarm 태스크가 거부되던 문제를 수정했어요. moby/moby#53212
- 컨테이너 호스트 이름이 Linux의 64바이트 제한을 초과할 때 반환되는 오류 메시지를 개선했어요. moby/moby#53121
- 데몬 시작 중 컨테이너가 종료될 때 라이브 복원된 볼륨이 활성 마운트 참조를 유지하지 않도록 방지했어요. moby/moby#53115
- 존재하지 않는 컨테이너에 대해
docker rm --force가 성공할 때 "No such container" 오류를 표시하지 않도록 했어요. docker/cli#7110
패키징 업데이트
- Go 런타임을 1.26.5로 업데이트했어요. docker/cli#7087
- BuildKit을 v0.32.0으로 업데이트했어요. moby/moby#53234
- containerd(정적 바이너리)를 v2.3.3으로 업데이트했어요. moby/moby#53050
- runc(정적 바이너리 내)를 v1.4.3으로 업데이트했어요. moby/moby#50960
29.6.2
2026-07-16
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
이번 릴리스에는 Docker Engine에 영향을 주는 여러 보안 취약점 수정이 포함되어 있어요.
- CVE-2026-15793: 번들 파일에서 Git 소스 체크아웃 시 명령 주입이 발생할 수 있었어요. GHSA-hw3h-2gp9-cxpv
- CVE-2026-15792: 프론트엔드에서 보낸 잘못된 매개변수로 인해 패닉이 발생할 수 있었어요. GHSA-qx3x-mv6r-52p6
- CVE-2026-15791: LLB 파일 작업이
/tmp디렉터리의 내용을 제거하도록 속임을 당할 수 있었어요. GHSA-32pv-7hq5-qhwq - CVE-2026-15789: 악성 클라이언트가 로컬 소스 업로드 시 대상 디렉터리 검증을 우회할 수 있었어요. GHSA-g2h8-426c-7976
- CVE-2026-15788: WCOW 캐시 마운트 소스 선택기가 캐시 루트 외부의 NTFS 정션을 확인할 수 있었어요. GHSA-388v-wmr2-g2v2
패키징 업데이트
- containerd(정적 바이너리)를 v2.2.6으로 업데이트했어요. moby/moby#53051
- Go 런타임을 1.26.5로 업데이트했어요. moby/moby#53027
루트리스(Rootless)
- RootlessKit을 v3.0.2로 업데이트했어요. moby/moby#53054
29.6.1
2026-06-26
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
이번 릴리스에는 Docker Engine에 영향을 주는 여러 보안 취약점 수정이 포함되어 있어요.
- 악성 이미지가 악성
/etc/passwd또는/etc/group스타일 파일을 제공하여 과도한 메모리 소비를 유발하고, OOM(Out Of Memory) 조건으로 인해 프로세스가 종료될 수 있었어요. GHSA-mjcv-p78q-w5fw, GHSA-jpcc-p29g-p8mq, GHSA-72x6-4j93-7w86 - 커스텀 프론트엔드가 사용자가 명시적으로 security.insecure 권한을 허용하지 않았더라도 빌드 컨테이너의 Seccomp 및 AppArmor 보호를 비활성화하는 조작된 빌드 요청을 보낼 수 있었어요. Linux capabilities 같은 다른 보안 조치는 여전히 적용되었어요. GHSA-7236-3392-c5c6
버그 수정 및 개선
- containerd(정적 바이너리)를 v2.2.5로 업데이트했어요. moby/moby#52950
패키징 업데이트
- BuildKit을 v0.31.1로 업데이트했어요. moby/moby#52954
29.6.0
2026-06-18
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
새로운 기능
POST /containers/{id}/update가 이제 디바이스별 blkio 리소스 설정을 지원해요. moby/moby#52651- 이미지에 첨부된 in-toto 증명(attestation) 문(예: SLSA provenance, SPDX SBOM)을 검색하는
GET /images/{name}/attestations엔드포인트가 추가됐어요. 선택적 플랫폼 선택, predicate 유형 필터링, 그리고 원문 그대로의 문 본문을 위한 statement 쿼리 매개변수를 지원해요.
버그 수정 및 개선
docker image push가 이제NO_COLOR를 존중해요. docker/cli#6957- containerd 이미지 저장소:
docker system prune이 회수된 공간을 보고할 때 압축 해제된 이미지 데이터를 포함하도록 수정했어요. moby/moby#52905 docker system df이미지 크기 보고가 이미지에서 직접 사용하는 스냅샷만 계산하도록 수정했어요. moby/moby#52901- 워커 이미지 풀 중 레지스트리 인증 실패가 "No such image"라는 오해를 불러일으키는 오류로 보고되던 버그를 수정했어요. moby/moby#52698
- 기본 BuildKit GC 정책이 의도대로 재현 가능한 캐시 유형을 정리하도록 수정했어요. moby/moby#52814
COPY --chmod권한을 포함한 명시적 파일 모드가 데몬 umask에 의해 필터링되던 문제를 수정했어요. moby/moby#52892- amd64 호스트에서 이미지가 amd64 변형별 매니페스트를 제공할 때 containerd 이미지 저장소로 이미지 선택이 실패하던 문제를 수정했어요. moby/moby#52773
docker login의--password플래그가 이제--password-stdin의 대안으로-를 통해 STDIN으로 비밀번호를 전달할 수 있어요. docker/cli#7029
패키징 업데이트
- runc(정적 바이너리 내)를 v1.3.6으로 업데이트했어요. moby/moby#52883
- BuildKit을 v0.31.0으로 업데이트했어요. moby/moby#52904
네트워킹
- 시스템에
nft명령이 설치되어 있지 않아도 libnftables에 링크된 데몬에서 nftables 방화벽 모드를 사용할 수 있게 됐어요. moby/moby#52820 - 포트를 동적으로 할당할 때
net.ipv4.ip_local_reserved_ports에 나열된 호스트 포트에 컨테이너 포트를 게시하지 않도록 했어요. moby/moby#52818 - 새로 합류한 Swarm 노드에서 약 30초간 DNS 해석 지연을 유발하던 오버레이 네트워크 벌크 동기화의 경쟁 조건을 수정했어요. moby/moby#52862
- 방화벽 백엔드로 nftables를 사용할 때 libnftables의 크래시를 완화하기 위해 기본 빌드 옵션을
nft명령을 실행하는 방식으로 변경했어요. 소스에서 dockerd를 빌드하는 사용자는libnftables빌드 태그로 빌드하여 libnftables에 링크하는 옵션을 선택할 수 있어요. moby/moby#52886
루트리스(Rootless)
- "IPv4 forwarding is disabled"라는 잘못된 경고를 표시하지 않도록 했어요. moby/moby#52742
지원 중단(Deprecations)
- 기본 브리지에 연결된 컨테이너가 링크를 지정하여 생성되면 Engine이 이제 지원 중단 경고를 반환해요. moby/moby#47427
29.5.3
2026-06-03
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- containerd 이미지 저장소 사용 시 이미지가 동시에 정리될 때
docker system df오류를 줄였어요. moby/moby#52672
패키징 업데이트
- containerd(정적 바이너리만)를 v2.2.4로 업데이트했어요. moby/moby#52683
- Go 런타임을 1.26.4로 업데이트했어요. moby/moby#52753, docker/cli#7025
루트리스(Rootless)
gvisor-tap-vsock및 비루프백 클라이언트용 UDP 포트 포워딩을 통한 AWS IMDS 접근 문제를 수정했어요. moby/moby#52710- 호스트 네트워킹이 필요한 플러그인 설치 문제를 수정했어요. moby/moby#52735
- RootlessKit을 v3.0.1로 업데이트했어요. moby/moby#52710
29.5.2
2026-05-20
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- 29.5.1에서 도입된 회귀 문제를 수정했어요. 컨테이너에 대상이 컨테이너 내부 심볼릭 링크(예:
/var/run -> /run)를 통과하는 바인드 마운트가 있을 때docker cp가 "mkdirat: file exists" 오류로 실패하던 문제였어요. moby/moby#52655
29.5.1
2026-05-18
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
이번 릴리스에는 Docker Engine에 영향을 주는 여러 보안 취약점 수정이 포함되어 있어요.
-
CVE-2026-41567
docker cp에서 아카이브 압축 해제 바이너리(예:xz,unpigz)가 호스트 루트로 실행되는 동안 컨테이너 파일시스템 내부의PATH를 통해 확인되던 취약점을 수정했어요. 악성 컨테이너가 호스트 루트 권한으로 임의의 바이너리를 실행할 수 있었어요. GHSA-x86f-5xw2-fm2r -
CVE-2026-41568
docker cp의 TOCTOU 취약점을 수정했어요. 컨테이너 프로세스가 호스트 파일시스템의 임의 위치에 파일이나 디렉터리를 생성할 수 있었어요. GHSA-vp62-88p7-qqf5 -
CVE-2026-42306
docker cp의 TOCTOU 취약점을 수정했어요. 컨테이너 프로세스가 바인드 마운트를 호스트 파일시스템의 임의 위치로 리디렉션할 수 있었어요. GHSA-rg2x-37c3-w2rh
네트워킹
- 특정 IP 주소에 바인딩되지 않은 UDP conntrack 항목이 삭제되지 않던 문제를 수정했어요. moby/moby#52640
29.5.0
2026-05-14
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
참고
루트리스(Rootless): gvisor-tap-vsock이 이제 새로운 기본 루트리스 네트워크 드라이버예요. 더 이상 Docker 패키징으로 설치되지 않는 slirp4netns보다 우선해요.
새로운 기능
- 루트리스: 새로운 기본
gvisor-tap-vsock네트워크 드라이버를 추가했어요. moby/moby#52319 - 지원되는 커널에서 컨테이너의 프라이빗 타임 네임스페이스를 기본적으로 활성화했어요. moby/moby#52326
local로깅 드라이버에 커스텀 속성 지원이 추가됐어요.label,label-regex,env,env-regex,tag로그 옵션을 지원해요. moby/moby#52348- Windows: 데몬이 이제 Unix 소켓(
-H unix://...)에서 수신 대기할 수 있으며,--group을 통한 선택적 그룹 기반 접근 제어도 지원해요. moby/moby#52365
보안
- CVE-2026-32288: 악의적으로 조작된 이미지를 풀 때 희소 tar 아카이브 처리 과정에서 데몬이 무제한 메모리를 할당할 수 있는 서비스 거부(DoS)를 수정했어요. GHSA-x4jj-h2v8-hqqv. moby/moby#52478
버그 수정 및 개선
docker ps --format에.HealthStatus플레이스홀더가 추가되어 컨테이너 건강 상태(starting,healthy,unhealthy)를 전용 필드로 출력할 수 있어요. docker/cli#6913- 타임 네임스페이스를 비활성화하는 "time-namespaces" 기능 플래그를 추가했어요. moby/moby#52577
- containerd 통합: 인증 토큰 요청이 호스트별 TLS 설정(커스텀 CA, insecure-registries)을 무시하던 문제를 수정했어요. moby/moby#52600
- 데몬 리로드 이벤트가 이제 데몬 리로드가 완전히 완료되었음을 나타내요. moby/moby#52589
docker info에서 사용자랜드 프록시에 대한 진단 데이터를 노출해요. moby/moby#52321docker image ls --filter reference=...(GET /images/json)가 익숙한 짧은 형식뿐만 아니라 정규화된 정식 이미지 이름(예:docker.io/library/alpine)도 일치하도록 수정했어요. moby/moby#52333- 자동 잠금이 활성화된 Swarm을 떠날 때 고아 상태가 남아 이후 Swarm 초기화가 "Swarm is encrypted and needs to be unlocked" 오류로 실패하던 버그를 수정했어요. moby/moby#52479
- 로깅 오류가 데몬 로그에서 실패한 메시지 대신 빈 문자열로 나타나던 문제를 수정했어요. moby/moby#52442
docker system df -v에서 공유 콘텐츠 blob을 크기 계산에 포함하여 잘못된 SHARED SIZE 및 UNIQUE SIZE 보고를 수정했어요. moby/moby#52482- 추가 그룹 ID를 요청하는 CDI 사양 지원을 수정했어요. moby/moby#52579
- 이미지의 기존 파일 위에 볼륨 하위 경로 파일을 마운트할 때 "not a directory" 오류로 컨테이너 생성이 실패하던 문제를 수정했어요. moby/moby#52584
volume,network,config,secret포맷터에서 라벨을 정렬하여 결정적인 출력을 보장했어요. docker/cli#6954- Swarm: Swarm 상태가 클 때 Raft 스냅샷 손상을 방지했어요. moby/moby#52441
패키징 업데이트
- BuildKit을 v0.30.0으로 업데이트했어요. moby/moby#52618
- Go 런타임을 1.26.3으로 업데이트했어요. moby/moby#52572, docker/cli#6967
네트워킹
- 다른 IP에서 동일한 포트를 공유하는 UDP 컨테이너 중 하나가 재시작될 때 conntrack 항목이 잘못 삭제되던 문제를 수정했어요. moby/moby#52423
- 롤링 업데이트 중 Swarm 서비스 네트워크 별칭의 오래된 VIP DNS 레코드가 제거되지 않던 문제를 수정했어요. moby/moby#52236
- 사용할 수 없는 백엔드에 대한 이전 쓰기가 소켓에 오래된 ECONNREFUSED 오류를 남겼을 때 사용자랜드 프록시가 UDP 데이터그램을 조용히 버리던 문제를 수정했어요. moby/moby#52483
- 루트리스:
--net=host및 localhost 레지스트리를 제대로 지원해요. moby/moby#47103
루트리스(Rootless)
- RootlessKit을 v3.0.0으로 업데이트했어요. moby/moby#52319
Go SDK
- cli/config/configfile:
GetAuthConfig,GetCredentialsStore: 인증 확인 시 호스트 이름을 정규화해요. docker/cli#6846
지원 중단(Deprecations)
- cli/command/image/build: 지원 중단된
DefaultDockerfileName상수를 제거했어요. docker/cli#6737 - cli/command/image/build: 지원 중단된
DetectArchiveReader유틸을 제거했어요. docker/cli#6737 - cli/command/image/build: 지원 중단된
IsArchive유틸을 제거했어요. docker/cli#6737 - cli/command/image/build: 지원 중단된
ResolveAndValidateContextPath유틸을 제거했어요. docker/cli#6737 - cli/command/image/build: 지원 중단된
WriteTempDockerfile유틸을 제거했어요. docker/cli#6737
29.4.3
2026-05-06
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
- CVE-2026-31431: 32비트 프로그램을 깨뜨리던 socketcall(2) seccomp 거부를, LSM 계층에서
AF_ALG를 차단하는 대상 지정 AppArmor(네트워크 alg 거부) 및 SELinux(alg_socket) 규칙으로 대체했어요. 이로써 합법적인 32비트 워크로드를 방해하지 않으면서 socket(2) 및 socketcall(2) 경로를 모두 차단해요. moby/moby#52537
SELinux 기반 시스템에서 SELinux 완화 조치를 적용하려면 데몬이 selinux-enabled: true(daemon.json 또는 --selinux-enabled CLI 플래그)로 구성되어 있어야 해요. 이 옵션은 기본적으로 활성화되어 있지 않아요.
- 데몬 재시작 시 기본 AppArmor 프로필이 업데이트되지 않던 문제를 수정했어요. 이전에는 데몬 업그레이드의 프로필 변경 사항을 적용하려면 시스템 재부팅이 필요했어요. moby/moby#52537
29.4.2
2026-05-01
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
이번 릴리스에는 CVE-2026-31431에 대한 강화 조치가 포함되어 있어요.
- 기본 seccomp 프로필에서
AF_ALG소켓과socketcall(2)멀티플렉서를 차단하여 커널 암호화 API("Copy Fail")를 통한 컨테이너 내 권한 상승을 방지했어요. moby/moby#52501
알려진 문제
이 강화 조치로 인해 32비트 프로그램과 i386 이미지(SteamCMD 및 일부 Wine 기반 워크로드 포함)가 깨질 수 있어요. moby/moby#52506
해결 방법(Workaround)
경고
이 문제를 해결하기 위해 --security-opt seccomp=unconfined를 사용하지 마세요.
seccomp/v0.2.0 프로필도 사용하지 마세요.
해결 방법이 필요하다면 moby/profiles의 seccomp/v0.2.1 프로필을 사용하세요.
CVE-2026-31431에 대한 수정이 포함된 커널을 사용해야 해요.
이 프로필은 socketcall을 차단 해제하면서 socket에 대한 AF_ALG는 계속 차단해요.
중요
이 해결 방법은 필요한 컨테이너에만 사용하세요.
이 프로필을 사용하는 컨테이너는 socketcall syscall을 통해 CVE-2026-31431을 여전히 악용할 수 있어요.
seccomp/v0.2.1 프로필을 다운로드하세요:
$ curl -fsSL https://raw.githubusercontent.com/moby/profiles/refs/tags/seccomp/v0.2.1/seccomp/default.json \
-o /etc/docker/seccomp-profile-v0.2.1.json
다음 옵션 중 하나를 사용하세요. 둘 다 필요하지는 않아요.
docker run명령을 직접 제어할 수 있는 특정 컨테이너에 프로필을 사용하려면--security-opt를 사용하세요:
$ docker run --security-opt seccomp=<path> ...
- 데몬이 생성하는 컨테이너의 기본 프로필로 사용하려면
daemon.json에seccomp-profile을 추가하세요:
{
"seccomp-profile": "/etc/docker/seccomp-profile-v0.2.1.json"
}
29.4.1
2026-04-20
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- containerd 이미지 저장소:
docker image prune --filter label!=key=value가 지정된 라벨이 없는 이미지를 잘못 건너뛰던 문제를 수정했어요. moby/moby#52338 --log-opt "tag={{.ImageID}}"가 다이제스트의 알고리즘을 제거하지 않던 문제를 수정했어요. moby/moby#52343- 바쁜 Swarm 노드에서 시크릿/컨피그 재마운트 시 간헐적인 컨테이너 시작 실패(
EBUSY)를 읽기 전용 재마운트 재시도로 수정했어요. moby/moby#52235
패키징 업데이트
- containerd(정적 바이너리만)를 v2.2.3으로 업데이트했어요. moby/moby#52360
- Go 런타임을 1.26.2로 업데이트했어요. docker/cli#6920, moby/moby#52329
네트워킹
- 컨테이너에 듀얼 스택 엔드포인트보다 "게이트웨이 우선순위"가 높은 IPv4 전용 또는 IPv6 전용 엔드포인트가 있으면, 이제 단일 스택 엔드포인트가 해당 주소 패밀리의 기본 게이트웨이로 사용돼요. moby/moby#52328
29.4.0
2026-04-07
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- docker cp: 콘텐츠 크기와 전송 크기를 모두 보고해요. docker/cli#6800
docker stats --all이 제거된 컨테이너를 계속 표시하던 문제를 수정했어요. docker/cli#6863- 컨테이너를 제거할 수 없게 되는 드문 버그를 수정했어요. moby/moby#51724
- 권한 있는(privileged) 컨테이너가 컨테이너 재시작 후 명시적 AppArmor 프로필(
--security-opt apparmor=<profile>)을 잃어버리던 문제를 수정했어요. moby/moby#52215 - 타임스탬프 대신 라이브 containerd 태스크 상태를 사용하여 중복 컨테이너 종료 처리를 개선했어요. moby/moby#52156
- 레지스트리 연결에 HTTP keep-alive를 활성화하여 불필요한 TCP 및 TLS 핸드셰이크를 방지함으로써 이미지 풀 및 푸시 성능을 개선했어요. moby/moby#52198
- 셸 완성:
docker rm --link에 대한 셸 완성을 추가하고 컨테이너 이름에 대한 레거시 링크를 제외했어요. docker/cli#6872 - 셸 완성: 이미 사용된 완성 항목을 제공하지 않도록 했어요. docker/cli#6871
- runc(정적 바이너리 내)를 v1.3.5로 업데이트했어요. moby/moby#52244
- Windows:
DOCKER_TMPDIR이 존중되지 않던 문제를 수정했어요. moby/moby#52181
패키징 업데이트
- BuildKit을 v0.29.0으로 업데이트했어요. moby/moby#52272
네트워킹
- 업그레이드 후 시작 중에 컨테이너 구성에 잘못된 형식의 IP 주소가 포함되어 있으면 데몬이 크래시하던 문제를 방지했어요. moby/moby#52275
Go SDK
- cli/streams: Out, In: 가능한 경우 원래 os.File을 보존해요. docker/cli#6906
- 최소 Go 버전을 go1.25로 업데이트했어요. docker/cli#6897
지원 중단(Deprecations)
- Go SDK: cli-plugins/hooks:
HookMessage를 지원 중단하고cli-plugins/hooks.Response로 이름을 변경했어요. docker/cli#6859 - Go SDK: cli-plugins/hooks:
HookType을 지원 중단하고cli-plugins/hooks.ResponseType으로 이름을 변경했어요. docker/cli#6859 - Go SDK: cli-plugins/manager:
HookPluginData를 지원 중단하고cli-plugins/hooks.Request로 이동했어요. docker/cli#6859
29.3.1
2026-03-25
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
이번 릴리스에는 Docker Engine 및 관련 구성 요소에 영향을 주는 여러 보안 취약점 수정이 포함되어 있어요.
-
CVE-2026-34040 특정 조건에서 인증 플러그인이 우회될 수 있었던 AuthZ 플러그인의 인증 우회를 수정했어요. GHSA-x744-4wpc-v9h2
-
CVE-2026-33997
docker plugin install에서 권한 검증이 부분적으로 우회될 수 있어 권한 상승으로 이어질 수 있었던 결함을 수정했어요. GHSA-pxq6-2prw-chj9 -
CVE-2026-33748 BuildKit에서 Git URL
#ref:subdir프래그먼트의 검증이 불충분하여 의도된 저장소 범위 밖의 파일에 접근할 수 있었던 문제를 수정했어요. GHSA-4vrq-3vrq-g6gg -
CVE-2026-33747 신뢰할 수 없는 프론트엔드가 BuildKit 상태 디렉터리 밖에 파일을 쓸 수 있었던 BuildKit 취약점을 수정했어요. GHSA-3c29-8rgm-jvjj
버그 수정 및 개선
.dockerignore에 잘못된 패턴이 포함되어 있으면 docker build 중 데몬이 크래시하던 문제를 수정했어요. moby/moby#52214- containerd 클라이언트가 닫힌 스트림을 사용할 때 패닉이 발생하던 문제를 수정했어요. moby/moby#52211
패키징 업데이트
- containerd(정적 바이너리)를 v2.2.2로 업데이트했어요. moby/moby#52213
- Go 런타임을 1.25.8로 업데이트했어요. moby/moby#52210, docker/cli#6883
Go SDK
cli/command패키지를 가져올 때cannot range over 10 (untyped int constant)오류를 유발할 수 있었던 누락된 빌드 태그를 추가했어요. docker/cli#6884
29.3.0
2026-03-05
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
새로운 기능
- 바인드 마운트용
--mount플래그에bind-create-src옵션을 추가했어요. docker/cli#6792 - CLI 플러그인 훅이 이제 명령 실패 시에도 실행돼요(성공 시에만이 아니라). 플러그인은 "error-hooks"를 사용하여 명령이 실패할 때만 힌트를 표시할 수 있어요. docker/cli#6794
- 최소 API 버전을 v1.44에서 v1.40(Docker 19.03)로 낮췄어요. moby/moby#52067
패키징 업데이트
- BuildKit을 v0.28.0으로 업데이트했어요. moby/moby#52135
네트워킹
- 데몬 리로드 시 DNS 구성 손상을 수정했어요. moby/moby#52060
API
POST /networks/{id}/connect가 이제EndpointSettings의MacAddress필드를 올바르게 적용해요. 이 필드는 API v1.44에서 추가되었지만 이전에는 무시되었어요. moby/moby#52040GET /images/json이identity쿼리 매개변수를 지원해요. 설정하면 응답에 매니페스트 요약이 포함되고, 각 매니페스트에 신뢰된 ID 및 출처 정보가 있는Identity필드가 포함될 수 있어요. moby/moby#52030
버그 수정 및 개선
--gpus옵션이 이제 AMD GPU에 CDI 기반 주입을 사용해요. moby/moby#52048- 데몬에 구성 리로드를 알릴 때
sd_notify"RELOADING" 알림을 추가했어요. moby/moby#52041 sd_notify"READY" 및 "STOPPING"을 동기적으로 전송하여 진행 전에 확실히 보내지도록 했어요. moby/moby#52041- systemd 253의
Type=notify-reload서비스 리로드 프로토콜을 지원해요. moby/moby#52041 - 시작 중 중지된 컨테이너에 대해 "failed to determine if container is already mounted" 경고를 로그에 남기지 않도록 했어요. moby/moby#52076
- 컨테이너가 동시에 제거될 때
docker system prune이 "rw layer snapshot not found" 오류로 실패하던 문제를 수정했어요. moby/moby#52090 - 실행 중이 아닌 Windows 컨테이너에서
docker top을 실행할 때 패닉이 발생하던 문제를 수정했어요. moby/moby#52025 - v29.2.0에서 시스템 요구 사항이 아직 설치되지 않은 경우 Windows에서 dockerd 서비스 등록이 불가능했던 회귀 문제를 수정했어요. moby/moby#52006
- 여러 번 마운트된 경로에 대한 공유 마운트 감지를 수정하여 바인드 전파 사용 시 "not a shared mount" 오류가 발생하던 문제를 해결했어요. moby/moby#51787
- 종료 시 "ShouldRestart failed" 경고가 잘못 표시되던 문제를 수정했어요. moby/moby#52079
- 레지스트리 비밀번호 저장 시 앞뒤 공백을 보존하도록 했어요. docker/cli#6784
- 볼륨 크기 계산 시 "not found" 경고를 로그에 남기지 않도록 했어요. moby/moby#52018
- Go 런타임을 1.25.7로 업데이트했어요. moby/moby#52003, docker/cli#6780
29.2.1
2026-02-02
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- BuildKit을 v0.27.1로 업데이트했어요. moby/moby#51962
docker system prune과 동시에 실행될 때docker system df가 실패하던 문제를 수정했어요. moby/moby#51979- 중복 컨테이너 종료 이벤트 처리를 수정하여 반복적인 정리 및 상태 전환을 방지했어요. moby/moby#51925
- 데몬 초기화 실패 후 패닉이 발생하던 문제를 수정했어요. moby/moby#51943
- 암호화된 오버레이 네트워크가 v28 및 이전 Engine의 컨테이너에 트래픽을 전달하지 못하던 문제를 수정했어요. 암호화된 오버레이 네트워크는 더 이상 v29.2.0~v29.0.0, v28.2.2, v25.0.14 또는 v25.0.13의 컨테이너에 트래픽을 전달하지 않아요. moby/moby#51951
docker network prune에서 잠재적 패닉을 수정했어요. moby/moby#51966
29.2.0
2026-01-26
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
새로운 기능
docker info에NRI섹션이 포함됐어요. docker/cli#6710- 실험적인 NRI 지원을 추가했어요. moby/moby#51711, moby/moby#51712, moby/moby#51675, moby/moby#51674, moby/moby#51636, moby/moby#51634
- inspect 엔드포인트에 이미지의 신뢰된 출처 정보를 표시하는 새로운
Identity필드가 추가됐어요. 여기에는 로컬 빌드 이미지의 빌드 참조, 풀된 이미지의 원격 레지스트리 저장소, 유효한 서명된 provenance 증명이 포함된 이미지의 검증된 서명 정보가 포함돼요. moby/moby#51737
버그 수정 및 개선
--detach-keys명령줄 옵션의 검증을 개선했어요. docker/cli#6742- 불완전한 초기화 후 데몬 종료 시 잠재적 패닉을 방지했어요. moby/moby#51797
- 익명 읽기 전용 볼륨에 대한 제한을 제거했어요. moby/moby#51682
- dockerd의
--validate플래그가 이제 시스템 요구 사항도 검증하여 데몬 시작 전에 시스템 요구 사항을 확인할 수 있어요. moby/moby#51868 - 가능한 경우 CDI를 사용하여 NVIDIA 디바이스에 대한
--gpus요청을 처리해요. moby/moby#50228
패키징 업데이트
- BuildKit을 v0.27.0으로 업데이트했어요. moby/moby#51886
- containerd(정적 바이너리만)를 v2.2.1로 업데이트했어요. moby/moby#51765
루트리스(Rootless)
- 루트리스: CDI 디바이스를 찾을 때
$XDG_CONFIG_HOME/cdi및$XDG_RUNTIME_DIR/cdi를 고려해요. moby/moby#51624 - RootlessKit을 v2.3.6으로 업데이트했어요. moby/moby#51757
API
- 수신 소켓에서 gRPC를 기본 지원해요. moby/moby#50744
Go SDK
- cli/command: WithAPIClientOptions 옵션을 추가했어요. docker/cli#6740
지원 중단(Deprecations)
- Windows에서 CLI 플러그인에 사용되는 경로 목록에서
%PROGRAMDATA%\Docker\cli-plugins를 제거했어요. 이 경로는 이전 설치와의 호환성을 위해 존재했지만%ProgramFiles%\Docker\cli-plugins로 대체되었어요. docker/cli#6713
29.1.5
2026-01-16
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
패키징 업데이트
- Go 런타임을 1.25.6으로 업데이트했어요. moby/moby#51860, docker/cli#6750
네트워킹
- 컨테이너 종료 유예 기간 동안 기존 네트워크 연결이 중단될 수 있었던 회귀 문제를 수정했어요. moby/moby#51843
29.1.4
2026-01-08
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
- Windows에서
docker run --network none패닉을 수정했어요. moby/moby#51830 - 긴 마운트 경로에서 이미지 마운트가 "file name too long" 오류로 실패하던 문제를 수정했어요. moby/moby#51829
- 고아 overlay2 레이어 생성 가능성을 수정했어요. moby/moby#51826, moby/moby#51824
패키징 업데이트
- BuildKit을 v0.26.3으로 업데이트했어요. moby/moby#51821
29.1.3
2025-12-12
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
docker stack deploy --compose-file에 대한 셸 완성을 추가했어요. docker/cli#6690- containerd 이미지 저장소:
docker build가 명시적으로 설정된unpack이미지 익스포터 옵션을 무시하던 버그를 수정했어요. moby/moby#51514 docker image ls의 댕글링 이미지 처리를 수정했어요. docker/cli#6704- Engine이 종료 시 autoremove가 설정된 컨테이너를 'dead' 상태로 남겨두고 다시는 회수하지 못하던 버그를 수정했어요. moby/moby#51693
- i386 빌드를 수정했어요. moby/moby#51528
- 이전 graphdriver 상태가 존재할 때 명시적 graphdriver 구성(
"storage-driver")이 containerd snapshotter로 취급되던 문제를 수정했어요. moby/moby#51516 - 고아 overlay2 레이어 생성 가능성을 수정했어요. moby/moby#51703
네트워킹
- 네트워크가 특정 서브넷으로 구성되지 않은 경우에도 특정 IP 주소로 컨테이너를 생성할 수 있게 했어요. moby/moby#51583
- v29.1.2로 업그레이드 전에 API로 생성된 컨테이너로,
PublishAll이 설정되고PortBindings맵이 nil인 컨테이너를 시작할 때 크래시가 발생하지 않도록 했어요. moby/moby#51691 - 노드가 Swarm 클러스터에 합류한 후 Swarm 범위가 아닌 네트워크에 연결된 컨테이너의 DNS 해석이 불가능하던 버그를 수정했어요. moby/moby#51515
- 원격 네트워크 드라이버 플러그인 사용 시 데몬 크래시가 발생하던 문제를 수정했어요. moby/moby#51558
- 여러 네트워크 연결로 컨테이너를 생성할 때, 네트워크 중 하나가 내부가 아니지만 자체 외부 IP 연결이 없는 경우 "endpoint not found" 오류가 발생할 수 있던 문제를 수정했어요. moby/moby#51538
- IPv6가 비활성화된 호스트에서 루트리스 Docker가 시작되지 못하던 문제를 수정했어요. moby/moby#51543
- 컨테이너 포트 0을 가리키는 포트 매핑으로 컨테이너를 생성하면 오류를 반환하도록 했어요. moby/moby#51695
29.1.2
2025-12-02
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
보안
- Go 런타임을 1.25.5로 업데이트했어요. moby/moby#51648, docker/cli#6688
- 호스트 이름 검증 오류를 포맷할 때 과도한 리소스 사용으로 인한 잠재적 DoS를 수정했어요 CVE-2025-61729 CVE-2025-61729
- 와일드카드 SAN에 대한 제외된 하위 도메인 제약 조건의 잘못된 적용을 수정하여 부적절하게 신뢰된 인증서를 허용할 수 있었던 문제를 해결했어요 CVE-2025-61727 CVE-2025-22874
버그 수정 및 개선
- containerd 이미지 저장소: 배포 가능한 모든 blob이 로컬에 없을 때
docker image inspect가 사용 가능한 이미지 데이터를 반환하지 못하던 문제를 수정했어요. moby/moby#51629 - dockerd-rootless-setuptool.sh:
nsenter: no namespace specified오류를 수정했어요. moby/moby#51622 - graph-driver를 스토리지로 사용할 때
docker system df가 공유 크기와 고유 크기에N/A를 표시하던 문제를 수정했어요. moby/moby#51631
패키징 업데이트
- runc(정적 바이너리 내)를 v1.3.4로 업데이트했어요. moby/moby#51633
네트워킹
- slirp4netns 사용 시 루트리스 모드에서 포트 매핑이 되지 않던 버그를 수정했어요. moby/moby#51616
HostConfig.PublishAllPorts(-P)가 설정되고 포트 바인딩이 없는 API 요청 시 크래시를 방지했어요. moby/moby#51621
29.1.1
2025-11-28
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
네트워킹
- 모든 커스텀 브리지 네트워크에서 외부 DNS 해석을 깨뜨리던 PR을 되돌렸어요. moby/moby#51615
29.1.0
2025-11-27
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
패키징 업데이트
- BuildKit을 v0.26.1로 업데이트했어요. moby/moby#51551
- containerd 바이너리를 v2.2.0(정적 바이너리)으로 업데이트했어요. moby/moby#51271
네트워킹
- 컨테이너 재시작 시 사용자가 수정한
/etc/resolv.conf를 덮어쓰지 않도록 했어요. moby/moby#51507 - Windows 컨테이너의
--publish-all/-P를 수정했어요. moby/moby#51586 - 컨테이너 중지 또는 네트워크 연결 해제 중 게이트웨이 구성이 실패하면 컨테이너 재시작이나 네트워크 재연결이 불가능하던 문제를 수정했어요. moby/moby#51592
- Windows 컨테이너: 포트 매핑에 IPv6 매핑된 IPv4 주소를 표시하지 않도록 했어요. 예를 들어
0.0.0.0:8080->80/tcp대신[::ffff:0.0.0.0]:8080->80/tcp로 표시되던 문제를 수정했어요. moby/moby#51587
29.0.4
2025-11-24
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
docker image ls가 더 이상 이미지 이름을 잘라내지 않아요. docker/cli#6675
네트워킹
- 네트워크가 특정 서브넷으로 구성되지 않은 경우에도 특정 IP 주소로 컨테이너를 생성할 수 있게 했어요. moby/moby#51583
29.0.3
2025-11-24
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
docker version --format json: 최상위BuildTime필드가 RFC3339Nano 형식을 사용하도록 복원했어요. docker/cli#6668docker image ls가docker.json의 커스텀imageFormat을 무시하던 문제를 수정했어요. docker/cli#6667
네트워킹
- 원격 네트워크 드라이버 플러그인 사용 시 데몬 크래시가 발생하던 문제를 수정했어요. moby/moby#51558
29.0.2
2025-11-17
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
네트워킹
- 여러 네트워크 연결로 컨테이너를 생성할 때, 네트워크 중 하나가 내부가 아니지만 자체 외부 IP 연결이 없는 경우 "endpoint not found" 오류가 발생할 수 있던 문제를 수정했어요. moby/moby#51538
- IPv6가 비활성화된 호스트에서 루트리스 Docker가 시작되지 못하던 문제를 수정했어요. moby/moby#51543
29.0.1
2025-11-14
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
버그 수정 및 개선
docker image ls가 출력을 리디렉션할 때(예:grep용) 이름 너비를 잘라내지 않도록 했어요. docker/cli#6656docker image ls가 컬러 출력 선택 시NO_COLOR환경 변수를 고려하도록 했어요. docker/cli#6654- containerd 이미지 저장소:
docker build가 명시적으로 설정된unpack이미지 익스포터 옵션을 무시하던 버그를 수정했어요. moby/moby#51514 docker image ls --all이 태그되지 않은/댕글링 이미지를 표시하지 않던 버그를 수정했어요. docker/cli#6657- i386 빌드를 수정했어요. moby/moby#51528
- 이전 graphdriver 상태가 존재할 때 명시적 graphdriver 구성(
"storage-driver")이 containerd snapshotter로 취급되던 문제를 수정했어요. moby/moby#51516 docker version --format=json의ApiVersion및MinApiVersion필드 출력 형식을 이전 버전과 일치하도록 수정했어요. docker/cli#6648
네트워킹
- 노드가 Swarm 클러스터에 합류한 후 Swarm 범위가 아닌 네트워크에 연결된 컨테이너의 DNS 해석이 불가능하던 버그를 수정했어요. moby/moby#51515
29.0.0
2025-11-10
이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.
주의
이번 릴리스에는 여러 주요 변경 사항과 지원 중단이 포함되어 있어요. 업그레이드 전에 릴리스 노트를 주의 깊게 검토하세요.
- Docker 데몬의
firewall-backend옵션을nftables로 설정하여 nftables에 대한 실험적 지원을 활성화할 수 있어요. 자세한 내용은 Docker Engine docs를 참고하세요. - containerd 이미지 저장소가 이제 새 설치의 기본값이에요.
userns-remap으로 구성된 데몬에는 적용되지 않아요(moby#47377 참고).
주요 변경 사항(Breaking Changes)
- Go 모듈
github.com/docker/docker는github.com/moby/moby/client및github.com/moby/moby/api를 위해 지원 중단됐어요.github.com/moby/moby모듈은 내부 구현 세부 사항으로 간주되며, 지원되는 공개 모듈은client와api뿐이에요. v29부터 릴리스는docker-접두사로 태그가 지정돼요(예:docker-v29.0.0). 이것은 Go 모듈 사용자와 패키지 관리자에게만 영향을 줘요. - 데몬은 이제 API 버전
v1.44이상(Docker v25.0+)을 요구해요. - Debian armhf(32비트) 패키지는 이제 ARMv7 CPU를 대상으로 하며 ARMv6 디바이스에서는 작동하지 않아요.
- 공식 Raspbian(32비트) 패키지는 더 이상 제공되지 않아요. 64비트 디바이스에는 Debian arm64 패키지를, 32비트 ARMv7 디바이스에는 Debian armhf 패키지를 사용하세요.
- cgroup v1은 지원 중단됐어요. 지원은 2029년 5월까지 계속되지만, 가능한 한 빨리 cgroup v2로 마이그레이션하세요. moby#51111 참고.
- Docker Content Trust가 Docker CLI에서 제거됐어요. 별도 플러그인으로 빌드할 수 있어요: https://github.com/docker/cli/blob/v29.0.0/cmd/docker-trust/main.go
새로운 기능
docker image load및docker image save가 이제--platform플래그를 통한 다중 플랫폼 선택을 지원해요(예:docker image load --platform linux/amd64,linux/arm64 -i image.tar). docker/cli#6126docker image ls가 이제 기본적으로 새로운 뷰(--tree와 유사하지만 축소된 형태)를 사용해요. docker/cli#6566docker run --runtime <...>이 이제 Windows에서 지원돼요. moby/moby#50546GET /containers/json에 컨테이너 헬스체크 상태를 설명하는Health필드가 포함됐어요. moby/moby#50281- 빌더 구성에
device권한을 추가했어요. moby/moby#50386 docker service create및docker service update명령에memory-swap및memory-swappiness플래그 지원을 추가했어요. docker/cli#6619- Docker CLI가 Docker 컨텍스트 메타데이터에 키-값 쌍(
"GODEBUG":"...")이 존재할 때GODEBUG환경 변수를 설정할 수 있게 됐어요. docker/cli#6371
버그 수정 및 개선
docker image ls --tree가 이제 생성 날짜가 아닌 이름순으로 이미지를 정렬해요. docker/cli#6595docker image ls가--all플래그 없이는 태그되지 않은 이미지를 기본적으로 표시하지 않아요. docker/cli#6574docker save: overlay2 스토리지 드라이버로 이미지를 내보낼 때 tar 멤버 타임스탬프가 일관되지 않던 문제를 수정했어요. moby/moby#51365- fluentd 로그 드라이버에 새 로그 옵션(
fluentd-read-timeout)을 추가하여 fluentd 연결에서 ack를 읽기 위한 읽기 타임아웃을 지정할 수 있어요. moby/moby#50249 docker images에 이미지 이름 완성 기능을 추가했어요. docker/cli#6452--type이 설정된 경우docker inspect에 대한 셸 완성을 추가했어요. docker/cli#6444docker plugin하위 명령에 대한 셸 완성을 추가했어요. docker/cli#6445- api/types/container: ContainerState, HealthStatus를 구체적인 타입으로 만들었어요. moby/moby#51439
- containerd 이미지 저장소는 moby#47377에 대한 해결 방법으로 userns 리매핑이 활성화된 경우 일시적으로 사용할 수 없어요. moby/moby#51042
- contrib: 통합 테스트에만 사용되던 contrib/httpserver를 제거했어요. moby/moby#50654
- daemon:
--dns옵션 및daemon.json의 해당"dns"필드 검증을 개선했어요. moby/moby#50600 - dockerd-rootless.sh: slirp4netns가 설치되어 있지 않으면 pasta(passt)를 사용하도록 시도해요. moby/moby#51149
- 동일한 이미지를 다른 대상에 여러 번 마운트할 때
--mount type=image실패를 수정했어요. moby/moby#50268 docker stats <container>가 정상적으로 종료되지 않던 문제를 수정했어요. docker/cli#6582/events엔드포인트에 열린 연결이 있을 때 API 서버가 빠르게 종료되지 못하던 버그를 수정했어요. moby/moby#51448- "one-shot" 모드로 컨테이너 통계를 수집할 때 컨테이너의 ID와 Name이 포함되지 않던 버그를 수정했어요. moby/moby#51302
- 배치 기본 설정(placement preferences)이 있는 서비스를 스케일 업한 후 Swarm의 모든 새 태스크가 영원히 PENDING 상태에 갇힐 수 있던 문제를 수정했어요. moby/moby#50202
- containerd 이미지 저장소 사용 시 커스텀 메타 헤더가 전달되지 않던 문제를 수정했어요. moby/moby#51024
--log-level=trace로 데몬을 실행할 때 요청이 로그에 기록되지 않던 문제를 수정했어요. moby/moby#50986- firewalld 리로드 후 Swarm 서비스가 게시된 포트에서 접근 불가능해지던 문제를 수정했어요. moby/moby#50443
- API 연결 실패 시 사용자에게 더 많은 컨텍스트를 제공하도록 오류 메시지를 개선했어요. moby/moby#50285
docker secret및docker config하위 명령에 대한 셸 완성을 개선했어요. docker/cli#6446docker run --gpus로 디바이스 드라이버를 선택할 때 GPU 기능보다 명시적 디바이스 드라이버 이름을 우선해요. moby/moby#50717- runc를 v1.3.3으로 업데이트했어요. moby/moby#51393
- 알려진 안전하지 않은 암호 스위트를 제외하도록 SwarmKit 내부 TLS 구성을 업데이트했어요. moby/moby#51139
- Windows: BuildKit이 데몬 구성과 일치하지 않는 격리 모드로 컨테이너를 생성하던 문제를 수정했어요. moby/moby#50942
패키징 업데이트
-
client: 클라이언트 구성에서 레거시 CBC 암호 스위트를 제거했어요. moby/moby#50126
-
contrib: 유지 관리되지 않던
editorconfig를 제거했어요. moby/moby#50607 -
contrib: 유지 관리되지 않고 오래된
nano및 TextMate(tmbundle)용 Dockerfile 구문 강조 파일을 제거했어요. moby/moby#50606 -
contrib: 유지 관리되지 않고 테스트되지 않은 mkimage-xxx 스크립트를 제거했어요. moby/moby#50297
-
Docker가 이 지원이 없는 버전으로 다운그레이드되면 네트워크를 사용할 수 없게 되므로, 삭제 후 다시 생성해야 해요. moby/moby#50114
-
Windows 오버레이 네트워크 드라이버가 이제
--dns옵션을 지원해요. moby/moby#51229 -
BuildKit을 v0.25.2로 업데이트했어요. moby/moby#51397
-
containerd를 v2.1.5로 업데이트했어요. moby/moby#51409
containerd v2.1.5는 이제 컨테이너에 systemd의 기본 LimitNOFILE을 사용해요. 열린 파일 디스크립터 제한(ulimit -n)이 1048576에서 1024로 변경됐어요. 이는 Docker Engine v25.0에서 빌드 컨테이너에 도입된 변경 사항을 모든 컨테이너로 확장한 것이에요.
이로써 ulimit에 따라 동작을 조정하는 프로그램이 제한이 infinity로 설정되었을 때 과도한 메모리를 소비하는 것을 방지할 수 있어요. 컨테이너는 이제 호스트에서 실행되는 프로그램과 동일하게 동작해요.
워크로드에 더 높은 제한이 필요하면 docker run과 함께 --ulimit을 사용하거나 /etc/docker/daemon.json에 기본값을 설정하세요:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Soft": 1048576,
"Hard": 1048576
}
}
}
자세한 내용은 moby#51485를 참고하세요.
-
Go 런타임을 1.25.4로 업데이트했어요. moby/moby#51418, docker/cli#6632
-
사용자는 미지정 주소를 사용하여 기본 풀에서 할당된 네트워크의 특정 접두사 크기를 요청할 수 있어요. 예:
--subnet 0.0.0.0/24 --subnet ::/96. moby/moby#50114
네트워킹
- 데몬 옵션
--bridge-accept-fwmark를 추가했어요. 이 방화벽 마크가 있는 패킷은 Docker의 iptables 또는 nftables "drop" 규칙을 무시하고 브리지 네트워크에서 수락돼요. moby/moby#50476 - api/types/system: 유형별 필드를 위해 최상위
DiskUsage필드를 지원 중단했어요. moby/moby#51235 - 브리지 네트워크 생성 실패 시 브리지 디바이스가 제거되도록 보장했어요. moby/moby#51147
- Engine 재시작 시 Windows NAT 네트워크가 원래 라벨과 함께 재생성되도록 보장했어요. moby/moby#50447
- 레거시 링크를 사용하여 컨테이너에 설정된 환경 변수는 지원 중단되었으며 더 이상 자동으로 추가되지 않아요. moby/moby#50719
DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS=1로 데몬을 시작하면 다시 활성화할 수 있어요- 이러한 변수는 지원 중단되었으므로 사용을 중단하는 것이 좋으며, 이 임시 방편은 이후 버전에서 제거될 거예요
- NetworkDB에서 항목이 일부 노드에서 삭제된 상태로 멈춰 오버레이 네트워크의 컨테이너 간 연결 문제를 일으키던 버그를 수정했어요. moby/moby#50342
- Engine과 다른 호스트 프로세스가 동일한 UDP 포트를 바인딩할 수 있던 버그를 수정했어요. moby/moby#50669
- 브리지 네트워킹 드라이버가 시작 중이거나, 네트워크를 생성/삭제하거나, 포트 매핑을 생성하는 동안 firewalld 리로드가 처리되면 교착 상태가 발생할 수 있던 문제를 수정했어요. moby/moby#50620
- 특정 인터페이스에서만 IPv6가 비활성화된 경우 컨테이너 시작 또는 네트워크 게이트웨이 선택이 불가능하던 문제를 수정했어요. moby/moby#48971
- Linux에서
docker info가 이제 방화벽 백엔드를 사용 가능한 경우 보고해요. docker/cli#6191 - 오버레이 네트워킹과 Swarm 라우팅 메시의 신뢰성을 크게 개선했어요. moby/moby#50393
- 오버레이 네트워킹의 관리 평면 일부인 NetworkDB의 수렴 속도를 업데이트 버스트 후 개선했어요. moby/moby#50193
- 오버레이 네트워크 드라이버의 신뢰성을 개선했어요. moby/moby#50260
- 컨테이너의 네트워크 연결 오류 처리를 개선했어요. moby/moby#50945
- macvlan 및 IPvlan-l2 네트워크: IPAM 구성에
--gateway가 명시적으로 포함되지 않으면 기본 게이트웨이가 구성되지 않아요. 이는 IPv6 자동 구성이 활성화된 네트워크에서 컨테이너 시작이 실패할 수 있던 문제를 해결해요. moby/moby#50929 - nftables: Docker는 호스트에서 IP 포워딩을 활성화하지 않아요. 브리지 네트워크에 포워딩이 필요하지만 활성화되어 있지 않으면 데몬 시작 또는 네트워크 생성이 오류로 실패해요. 포워딩을 활성화하고 비 Docker 인터페이스 간 원치 않는 포워딩을 방지하는 방화벽 규칙을 보장해야 해요. 또는 데몬 옵션
--ip-forward=false를 사용하여 검사를 비활성화할 수 있지만, 포트 포워딩을 포함한 일부 브리지 네트워크 기능이 작동하지 않을 수 있어요. iptables에서 nftables로의 마이그레이션에 대한 자세한 내용은 Engine Docs를 참고하세요. moby/moby#50646 - 데몬 시작 시 네트워크 스택을 공유하는 컨테이너를 해당 스택이 필요한 컨테이너보다 먼저 재시작해요. moby/moby#50327
- 게이트웨이 모드가 "routed"인 네트워크에서 게시된 포트가 이제 항상 접근 가능해요. 이전에는 라우팅 모드 네트워크가 컨테이너의 기본 게이트웨이로 선택된 경우에만 해당 포트를 여는 규칙이 추가되었어요. moby/moby#50140
- 28.0.0부터 SCTP 체크섬을 위한
iptablesmangle 규칙은 환경 변수DOCKER_IPTABLES_SCTP_CHECKSUM=1이 설정된 경우에만 추가되었어요. 이제 규칙이 제거되었고 환경 변수는 더 이상 효과가 없어요. moby/moby#50539 - 브리지 네트워크용 iptables 규칙이 업데이트되었으며,
DOCKER-ISOLATION-STAGE-1및DOCKER-ISOLATION-STAGE-2체인 제거가 포함돼요. 이러한 변경으로: moby/moby#49981 - 사용자랜드 프록시가 실행 중이 아닐 때 컨테이너가 다른 네트워크의 컨테이너가 호스트 주소에 게시한 포트에 접근할 수 있어요
- 컨테이너가 게이트웨이 모드가 "nat-unprotected"인 다른 네트워크의 컨테이너 주소에 있는 포트에 접근할 수 있어요
- 동적으로 링크될 때 Docker 데몬은 이제 libnftables에 의존해요. moby/moby#51033
- Windows:
network inspect: HNS 네트워크 이름이 이제 Docker 네트워크 이름이 아닌 옵션com.docker.network.windowsshim.networkname으로 보고돼요. 이전에는 데몬 재시작 후에만 보고되었어요. moby/moby#50961 - Windows: 데몬 재시작 시 네트워크를 복원할 때 기본이 아닌 IPAM 드라이버와의 연결을 보존해요. moby/moby#50649
API
eventsAPI가 새 줄로 구분된 JSON 이벤트 스트림에 대해 content-type을application/x-ndjson으로 보고해요. moby/moby#50953GET /images/{name}/get및POST /images/load가 이제 여러platform쿼리 매개변수를 허용하여 여러 플랫폼의 이미지를 내보내고 로드할 수 있어요. moby/moby#50166GET /images/{name}/json이 값이 비어 있는 경우 다음 필드를 생략해요:Parent,Comment,DockerVersion,Author. moby/moby#51072GET /images/{name}/json: 설정되지 않은 경우 빈Config필드를 생략해요. moby/moby#50915POST /images/{name:}/push: 본문의 API v1.4 auth-config 호환성을 제거했어요. moby/moby#50371- Swarm 서비스에서 메모리 스와피니스(memory swappiness) 지원을 추가했어요. moby/moby#51114
GET /services가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 반환해요GET /services/{id}가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 반환해요POST /services/create가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 허용해요POST /services/{id}/update가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 허용해요GET /tasks가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 반환해요GET /tasks/{id}가 이제Resource요구 사항의 일부로SwapBytes및MemorySwappiness필드를 반환해요- api/types/build:
CachePruneOptions타입을client.BuildCachePruneOptions로 이동했어요. moby/moby#50772 - api/types/checkpoint: 체크포인트 옵션을 client 모듈로 이동했어요. moby/moby#50905
- api/types/container:
OnBuild는 값이 비어 있거나 0이면 생략돼요. moby/moby#51154 - api/types/container: 컨테이너 구성
MacAddress를 v1.52부터 사용 중지로 표시했어요. 대신 네트워크 엔드포인트 설정을 사용하세요. moby/moby#51189 - api/types/container:
ResizeOptions타입을 client의ContainerResizeOptions로 이동했어요. moby/moby#50773 - api/types/events:
ListOptions타입을 client의EventsListOptions로 이동했어요. moby/moby#50774 - api/types/image: 이미지 옵션을 client로 이동했어요. moby/moby#50776
- api/types/network:
CreateOptions,ConnectOptions및DisconnectOptions를 client 모듈로 이동했어요. moby/moby#50817 - api/types/network:
ListOptions및InspectOptions타입을 client로 이동했어요. moby/moby#50786 - api/types/plugin:
ListResponse를 비포인터 슬라이스로 변경했어요. moby/moby#51440 - api/types/plugin: 지원 중단된
Config.DockerVersion을 제거했어요. moby/moby#51458 - api/types/registry:
SearchOptions를 client의ImageSearchOptions로 이동했어요. moby/moby#50787 - api/types/registry:
ServiceConfig레