Docker Engine 29 릴리스 노트

Docker Engine 29 릴리스 노트

이 문서는 Docker Engine 29 버전에서 새로 추가된 기능, 변경 사항, 알려진 문제, 그리고 버그 수정 내역을 정리한 내용이에요. 각 버전별로 어떤 변화가 있었는지 하나씩 살펴볼게요. 특히 업그레이드 전에 꼭 확인해야 할 호환성 주의사항도 함께 설명드릴게요.

출처: 공식문서

본문

더 알아보기 (Learn more)

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

패키징 업데이트

네트워킹

  • 잘못된 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#7108
  • awslogs 로깅 드라이버에서 서비스 이름, 환경, 커스텀 CloudWatch 엔티티 속성을 로그에 첨부할 수 있게 됐어요. moby/moby#52632

보안

네트워킹

  • 다른 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

버그 수정 및 개선

  • 컨테이너 목록 조회(docker ps, GET /containers/json)에 annotation 필터가 추가되어 어노테이션으로 컨테이너를 필터링할 수 있어요. moby/moby#53538
  • containerd 이미지 저장소: docker image inspectdocker 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}/jsonSize에 압축 해제된 스냅샷 사용량이 포함되지 않던 문제를 수정했어요. moby/moby#53426
  • FROM --platform으로 비호스트 플랫폼을 선택하는 Dockerfile 스테이지의 클래식 빌더 캐시 문제를 수정했어요. moby/moby#53503
  • DOCKER_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가 Docker Cmd만 포함하는 대신 해석된 실행 파일을 argv[0]로 포함하도록 수정했어요. 이제 실제 컨테이너에서 실행되는 프로세스와 일치해요. moby/moby#53423
  • 자동 생성된 이름이 이미 사용 중일 때 Swarm 서비스 생성이 실패하던 문제를 수정했어요. moby/moby#53468
  • btrfs 스토리지 드라이버 사용 시 컨테이너 루트 디렉터리 /가 전 세계에서 쓰기 가능하게 되던 문제를 수정했어요. moby/moby#53500
  • docker ps가 게시 포트를 숫자 순서가 아닌 사전순으로 정렬하던 문제를 수정했어요. docker/cli#7144
  • 강제 업데이트 중 서비스 마운트 순서를 보존하여 다음 스택 배포 시 불필요한 롤아웃이 발생하지 않도록 했어요. docker/cli#7227
  • CRI가 비활성화된 경우 containerd의 v2 CRI 플러그인이 로드되지 않도록 방지했어요. moby/moby#53564
  • 플러그인 훅 출력(예: "What's next:" 힌트)이 명령의 오류 메시지 앞이 아닌 뒤에 출력되도록 수정했어요. docker/cli#6976
  • 체크포인트 ID에 경로 구분자가 포함된 경우 거부하여 컨테이너 체크포인트 디렉터리 외부로의 접근을 방지했어요. moby/moby#53377

패키징 업데이트

29.7.2

2026-08-05

이번 릴리스의 전체 Pull Request와 변경 목록은 아래 GitHub 마일스톤에서 확인할 수 있어요.

버그 수정 및 개선

  • 동일한 환경 변수가 두 번 이상 전달되면 docker service createdocker service update가 패닉에 빠지던 문제를 수정했어요. docker/cli#7145
  • Docker Engine 29.7.0에서 도입된 회귀 문제를 수정했어요. 일부 이미지 빌더가 생성한 절대 하드링크 대상을 포함하는 이미지의 풀이 거부되던 문제였어요. moby/moby#53305
  • Docker Engine 29.7.0에서 도입된 또 다른 회귀 문제를 수정했어요. 이전 Linux 커널에서 파일 권한(디바이스 노드 포함)을 적용할 때 이미지 풀과 docker cp가 실패할 수 있었어요. moby/moby#53305

패키징 업데이트

네트워킹

  • 기본 체인 정책을 세미콜론으로 종료하여 더 많은 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 및 관련 구성 요소에 영향을 주는 보안 취약점 수정이 포함되어 있어요.

네트워킹

  • 컨테이너가 네트워크에서 연결 해제되는 동안 컨테이너 네트워크 인터페이스 정리가 실패하면 데몬이 패닉에 빠지던 문제를 수정했어요. 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

패키징 업데이트

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

패키징 업데이트

루트리스(Rootless)

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

버그 수정 및 개선

패키징 업데이트

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

패키징 업데이트

네트워킹

  • 시스템에 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

패키징 업데이트

루트리스(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#52321
  • docker 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

패키징 업데이트

네트워킹

  • 다른 IP에서 동일한 포트를 공유하는 UDP 컨테이너 중 하나가 재시작될 때 conntrack 항목이 잘못 삭제되던 문제를 수정했어요. moby/moby#52423
  • 롤링 업데이트 중 Swarm 서비스 네트워크 별칭의 오래된 VIP DNS 레코드가 제거되지 않던 문제를 수정했어요. moby/moby#52236
  • 사용할 수 없는 백엔드에 대한 이전 쓰기가 소켓에 오래된 ECONNREFUSED 오류를 남겼을 때 사용자랜드 프록시가 UDP 데이터그램을 조용히 버리던 문제를 수정했어요. moby/moby#52483
  • 루트리스: --net=host 및 localhost 레지스트리를 제대로 지원해요. moby/moby#47103

루트리스(Rootless)

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/profilesseccomp/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

다음 옵션 중 하나를 사용하세요. 둘 다 필요하지는 않아요.

  1. docker run 명령을 직접 제어할 수 있는 특정 컨테이너에 프로필을 사용하려면 --security-opt를 사용하세요:
$ docker run --security-opt seccomp=<path> ...
  1. 데몬이 생성하는 컨테이너의 기본 프로필로 사용하려면 daemon.jsonseccomp-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

패키징 업데이트

네트워킹

  • 컨테이너에 듀얼 스택 엔드포인트보다 "게이트웨이 우선순위"가 높은 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

패키징 업데이트

네트워킹

  • 업그레이드 후 시작 중에 컨테이너 구성에 잘못된 형식의 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

패키징 업데이트

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

패키징 업데이트

네트워킹

  • 데몬 리로드 시 DNS 구성 손상을 수정했어요. moby/moby#52060

API

  • POST /networks/{id}/connect가 이제 EndpointSettingsMacAddress 필드를 올바르게 적용해요. 이 필드는 API v1.44에서 추가되었지만 이전에는 무시되었어요. moby/moby#52040
  • GET /images/jsonidentity 쿼리 매개변수를 지원해요. 설정하면 응답에 매니페스트 요약이 포함되고, 각 매니페스트에 신뢰된 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 마일스톤에서 확인할 수 있어요.

새로운 기능

버그 수정 및 개선

  • --detach-keys 명령줄 옵션의 검증을 개선했어요. docker/cli#6742
  • 불완전한 초기화 후 데몬 종료 시 잠재적 패닉을 방지했어요. moby/moby#51797
  • 익명 읽기 전용 볼륨에 대한 제한을 제거했어요. moby/moby#51682
  • dockerd의 --validate 플래그가 이제 시스템 요구 사항도 검증하여 데몬 시작 전에 시스템 요구 사항을 확인할 수 있어요. moby/moby#51868
  • 가능한 경우 CDI를 사용하여 NVIDIA 디바이스에 대한 --gpus 요청을 처리해요. moby/moby#50228

패키징 업데이트

루트리스(Rootless)

  • 루트리스: CDI 디바이스를 찾을 때 $XDG_CONFIG_HOME/cdi$XDG_RUNTIME_DIR/cdi를 고려해요. moby/moby#51624
  • RootlessKit을 v2.3.6으로 업데이트했어요. moby/moby#51757

API

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 마일스톤에서 확인할 수 있어요.

패키징 업데이트

네트워킹

  • 컨테이너 종료 유예 기간 동안 기존 네트워크 연결이 중단될 수 있었던 회귀 문제를 수정했어요. 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

패키징 업데이트

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

패키징 업데이트

네트워킹

  • 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 마일스톤에서 확인할 수 있어요.

패키징 업데이트

네트워킹

  • 컨테이너 재시작 시 사용자가 수정한 /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#6668
  • docker image lsdocker.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#6656
  • docker 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=jsonApiVersionMinApiVersion 필드 출력 형식을 이전 버전과 일치하도록 수정했어요. 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/dockergithub.com/moby/moby/clientgithub.com/moby/moby/api를 위해 지원 중단됐어요. github.com/moby/moby 모듈은 내부 구현 세부 사항으로 간주되며, 지원되는 공개 모듈은 clientapi뿐이에요. 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 loaddocker image save가 이제 --platform 플래그를 통한 다중 플랫폼 선택을 지원해요(예: docker image load --platform linux/amd64,linux/arm64 -i image.tar). docker/cli#6126
  • docker image ls가 이제 기본적으로 새로운 뷰(--tree와 유사하지만 축소된 형태)를 사용해요. docker/cli#6566
  • docker run --runtime <...>이 이제 Windows에서 지원돼요. moby/moby#50546
  • GET /containers/json에 컨테이너 헬스체크 상태를 설명하는 Health 필드가 포함됐어요. moby/moby#50281
  • 빌더 구성에 device 권한을 추가했어요. moby/moby#50386
  • docker service createdocker service update 명령에 memory-swapmemory-swappiness 플래그 지원을 추가했어요. docker/cli#6619
  • Docker CLI가 Docker 컨텍스트 메타데이터에 키-값 쌍("GODEBUG":"...")이 존재할 때 GODEBUG 환경 변수를 설정할 수 있게 됐어요. docker/cli#6371

버그 수정 및 개선

  • docker image ls --tree가 이제 생성 날짜가 아닌 이름순으로 이미지를 정렬해요. docker/cli#6595
  • docker image ls--all 플래그 없이는 태그되지 않은 이미지를 기본적으로 표시하지 않아요. docker/cli#6574
  • docker 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#6444
  • docker 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 secretdocker config 하위 명령에 대한 셸 완성을 개선했어요. docker/cli#6446
  • docker 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 체크섬을 위한 iptables mangle 규칙은 환경 변수 DOCKER_IPTABLES_SCTP_CHECKSUM=1이 설정된 경우에만 추가되었어요. 이제 규칙이 제거되었고 환경 변수는 더 이상 효과가 없어요. moby/moby#50539
  • 브리지 네트워크용 iptables 규칙이 업데이트되었으며, DOCKER-ISOLATION-STAGE-1DOCKER-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

  • events API가 새 줄로 구분된 JSON 이벤트 스트림에 대해 content-type을 application/x-ndjson으로 보고해요. moby/moby#50953
  • GET /images/{name}/getPOST /images/load가 이제 여러 platform 쿼리 매개변수를 허용하여 여러 플랫폼의 이미지를 내보내고 로드할 수 있어요. moby/moby#50166
  • GET /images/{name}/json이 값이 비어 있는 경우 다음 필드를 생략해요: Parent, Comment, DockerVersion, Author. moby/moby#51072
  • GET /images/{name}/json: 설정되지 않은 경우 빈 Config 필드를 생략해요. moby/moby#50915
  • POST /images/{name:}/push: 본문의 API v1.4 auth-config 호환성을 제거했어요. moby/moby#50371
  • Swarm 서비스에서 메모리 스와피니스(memory swappiness) 지원을 추가했어요. moby/moby#51114
  • GET /services가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요
  • GET /services/{id}가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요
  • POST /services/create가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 허용해요
  • POST /services/{id}/update가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 허용해요
  • GET /tasks가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요
  • GET /tasks/{id}가 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요
  • 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, ConnectOptionsDisconnectOptions를 client 모듈로 이동했어요. moby/moby#50817
  • api/types/network: ListOptionsInspectOptions 타입을 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