Docker Engine 버전 27 릴리스 노트
Docker Engine 버전 27 릴리스 노트
Docker Engine 27 버전의 릴리스 노트를 정리해 드릴게요. 각 패치 버전에서 새로 추가된 기능, 버그 수정, 패키징 업데이트, 그리고 알아두셔야 할 변경 사항들을 하나씩 살펴보겠습니다. 특히 IPv6 네트워킹 기본값 변경과 containerd 이미지 저장소 관련 수정 사항은 꼭 확인해 두시는 게 좋아요.
출처: 공식문서
본문
참고로 더 알아두시면 좋은 자료는 다음과 같아요.
- 더 이상 사용되지 않거나 제거된 기능은 Deprecated Engine Features에서 확인하실 수 있어요.
- Engine API 변경 사항은 Engine API version history에서 확인하실 수 있어요.
27.5
Docker Engine 27.5 릴리스에 대한 릴리스 노트입니다.
27.5.1
2025-01-22
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- 기본 브리지(default bridge) 초기화에 실패한 후 데몬이 계속해서 시작되지 못하는 문제를 수정했어요. moby/moby#49307
DOCKER_IGNORE_BR_NETFILTER_ERROR환경 변수가 새로 추가되었어요. 이 값을1로 설정하면br_netfilter를 로드할 수 없는 호스트에서도 Docker를 실행할 수 있습니다. 다만 브리지 네트워크에서 컨테이너 간 통신을 비활성화하는 기능 등 일부 기능은 동작하지 않을 수 있어요. 또한 userland proxy가 비활성화된 경우, 같은 네트워크에 있는 다른 컨테이너에서 특정 컨테이너의 게시된 포트에 접근할 수 없게 됩니다. moby/moby#49306
패키징 업데이트
- Go 런타임을 1.22.11로 업데이트했어요 (CVE-2024-45341, CVE-2024-45336 수정). moby/moby#49312, docker/docker-ce-packaging#1147, docker/cli#5762
- RootlessKit을 v2.3.2로 업데이트하여
passt>= 2024_10_30.ee7d0b6을 지원하게 되었어요. moby/moby#49304 - Buildx를 v0.20.0으로 업데이트했어요. docker/docker-ce-packaging#1149
27.5.0
2025-01-13
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- containerd 이미지 저장소:
/build엔드포인트에 tarball 형태의 빌드 컨텍스트를 전달할 때 발생하던 문제를 수정했어요. moby/moby#49194 keepStorage값이 없는 Builder 가비지 컬렉션 정책이 이제 의도한 대로defaultKeepStorage제한을 상속받아요. moby/moby#49137- 데몬 시작 중 네트워크 라벨이 유지되도록 수정했어요. moby/moby#49200
- 컨테이너 삭제 시 발생할 수 있는 경쟁 조건(race condition) 오류를 수정했어요. moby/moby#49239
Go SDK
pkg/sysinfo:NumCPU가 더 이상 사용되지 않게 되었어요(deprecated). 이 유틸리티는runtime.NumCPU와 동일한 동작을 합니다. moby/moby#49247pkg/fileutils:GetTotalUsedFds가 더 이상 사용되지 않게 되었어요. 이 함수는 내부적으로만 사용되며 다음 릴리스에서 제거될 예정입니다. moby/moby#49209pkg/ioutils:BytesPipe,NewBytesPipe,ErrClosed,WriteCounter,NewWriteCounter,NewReaderErrWrapper,NopFlusher,NopWriter,NopWriteCloser가 더 이상 사용되지 않게 되었어요. 내부적으로만 사용되었으며 다음 릴리스에서 제거될 예정입니다. moby/moby#49246, moby/moby#49255pkg/reexec: 이 패키지는 더 이상 사용되지 않으며 별도의 모듈로 이동했어요.github.com/moby/sys/reexec를 사용해 주세요. moby/moby#49135
패키징 업데이트
- containerd를 v1.7.25로 업데이트했어요. moby/moby#49253
runc를 v1.2.4로 업데이트했어요. moby/moby#49243- BuildKit을 v0.18.2로 업데이트했어요. moby/moby#48949
- Compose를 v2.32.2로 업데이트했어요. docker/docker-ce-packaging#1140
27.4
Docker Engine 27.4 릴리스에 대한 릴리스 노트입니다.
27.4.1
2024-12-18
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- OTel이 구성되지 않은 경우 발생하던 과도한 메모리 할당 문제를 수정했어요. moby/moby#49079
docker info명령과 해당GET /infoAPI 엔드포인트는 더 이상 데몬 시작 시bridge-nf-call-iptables또는bridge-nf-call-ip6tables가 비활성화되어 있을 때 경고를 포함하지 않아요.br_netfilter커널 모듈이 필요할 때 로드되도록 개선되었기 때문에 기존 경고가 정확하지 않게 되었거든요. moby/moby#49090ip6_tables및br_netfilter를 포함한 커널 모듈이 필요할 때 로드하도록 시도하며, Docker-in-Docker 컨테이너 내부에서도 성공할 가능성이 높은 방법을 사용해요. moby/moby#49043- 실패 시 iptables
DOCKER FILTER체인이 정리되지 않을 수 있는 버그를 수정했어요. moby/moby#49110
패키징 업데이트
- Compose를 v2.32.1로 업데이트했어요. docker/docker-ce-packaging#1130
- Buildx를 v0.19.3으로 업데이트했어요. docker/docker-ce-packaging#1132
- runc(정적 바이너리만 해당)를 v1.2.3으로 업데이트했어요. moby/moby#49085
27.4.0
2024-12-09
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
API
manifests옵션을 활성화한GET /images/json은 이제 manifest-index에 나타난 manifest의 원래 순서를 유지해요. moby/moby#48712
버그 수정 및 개선 사항
jsonfile또는local로그 드라이버로 로그를 읽을 때, 기본 로그 파일을 읽거나 파싱하는 중 오류가 발생하면 클라이언트에 오류를 반환하고 스트림을 닫는 대신 나머지 파일을 건너뛰고 다음 로그 파일(있는 경우)로 이동해요. 오류는 Docker 데몬 로그에서 확인할 수 있으며, 추적(tracing)이 구성된 경우 추적으로도 내보내집니다. moby/moby#48842- 로그 파일을 읽을 때, 이제 압축된 로그 파일은 로그 스트림을 시작하기 전에 모든 파일의 압축을 푸는 대신 필요할 때만 압축을 해제해요. moby/moby#48842
- 커널의
br_netfilter모듈이 로드 및 활성화되지 않은 상태에서userland-proxy가 비활성화된 경우, 브리지 네트워크의 한 컨테이너에서 게시된 포트를 같은 네트워크의 다른 컨테이너에서 접근할 수 없던 문제를 수정했어요. 이제 데몬은 userland proxy가 비활성화된 네트워크를 생성할 때 모듈 로드와bridge-nf-call-iptables또는bridge-nf-call-ip6tables활성화를 시도합니다. moby/moby#48685 bridge및br_netfilter커널 모듈 로딩 문제를 수정했어요. moby/moby#48966- containerd 이미지 저장소: containerd snapshotter와 많은 빌드/이미지가 있을 때 Docker 데몬이 "context deadline exceeded error"로 완전히 시작되지 못하던 문제를 수정했어요. moby/moby#48954
- containerd 이미지 저장소: 부분적으로 풀링된 이미지가 가비지 컬렉션되지 않던 문제를 수정했어요. moby#48910, moby/moby#48957
- containerd 이미지 저장소:
docker image inspect가RepoDigests에 중복 참조를 출력하던 문제를 수정했어요. moby/moby#48785 - containerd 이미지 저장소: HTTPS 요청이 TLS와 관련 없는 오류로 실패한 경우 일부 비보안(insecure) 레지스트리에 연결할 수 없던 문제를 수정했어요. moby/moby#48758
- containerd 이미지 저장소: dangling이 아닌 이미지에 태그를 지정할 때 혼란스러운 경고 로그가 출력되던 것을 제거했어요. moby/moby#49010
- containerd 이미지 저장소:
docker image ls --tree에서 이름에 밑줄을 표시하지 않도록 수정했어요. docker/cli#5519 - containerd 이미지 저장소:
docker image ls --tree의USED열 이름을IN USE로 변경했어요. docker/cli#5518 dockerd-rootless-setuptool.sh install --force가 이제 RootlessKit 오류를 무시해요. moby/moby#48695- 브리지 네트워크에 속한 브리지에 할당된 주소에 대해 IPv6 중복 주소 감지(DAD, Duplicate Address Detection)를 비활성화했어요. moby/moby#48684
- BuildKit 초기화 타임아웃을 제거했어요. moby/moby#48963
- ZFS에서 데이터셋을 제거할 때 "dataset does not exist" 오류를 무시하도록 수정했어요. moby/moby#48968
- 클라이언트: 유휴 연결이 FD(파일 디스크립터)를 누수하지 않도록 방지했어요. moby/moby#48764
--mount옵션을 통해 생성된 익명 볼륨이 익명으로 표시되지 않던 문제를 수정했어요. moby/moby#48755- live-restore로 데몬을 재시작한 후, iptables 점프가 다른 규칙보다 먼저
DOCKER-USER체인에 배치되도록 보장했어요. moby/moby#48714 - OTel 미터로 인해 발생할 수 있는 메모리 누수를 수정했어요. moby/moby#48693
- 각 이미지 저장소에 대해 별도의 빌드 기록 DB를 생성하도록 했어요. moby/moby#48688
- DNS 확인이 빡빡한 루프에서 이루어질 때 과도한 메모리 사용을 유발하던 문제를 수정했어요. moby/moby#48840
docker run중 이미지 풀을 취소할 수 없던 버그를 수정했어요. docker/cli#5654docker login및docker logout명령은 자격 증명이 변경되지 않은 경우 더 이상 구성 파일을 업데이트하지 않아요. docker/cli#5569docker stats의 깜빡임(flickering) 문제를 줄이도록 최적화했어요. docker/cli#5588, docker/cli#5635- 플러그인 경로에 접근할 수 없어 플러그인이 감지되지 않던 문제를 수정했어요. docker/cli#5652
- cobra 생성 셸 완성에서
events --filter지원을 추가했어요. docker/cli#5614 events --filter daemon=의 bash 완성 문제를 수정했어요. docker/cli#5563docker rm의 컨테이너 셸 완성을 개선했어요. docker/cli#5540--platform플래그에 대한 셸 완성을 추가했어요. docker/cli#5540- rootless: Container Device Interface(CDI) 통합을 위해
/etc/cdi와/var/run/cdi에 접근할 수 있도록 했어요. moby/moby#49027
제거 및 더 이상 사용되지 않는 기능
Daemon.Exists()와Daemon.IsPaused()는 더 이상 사용되지 않아요. 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다. moby/moby#48719container.ErrNameReserved와container.ErrNameNotReserved는 더 이상 사용되지 않아요. moby/moby#48697pkg/platform은 더 이상 사용되지 않아요. 내부적으로만 사용되며 다음 릴리스에서 제거될 예정입니다. moby/moby#48863RepositoryInfo.Class는 더 이상 사용되지 않아요. 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다. moby/moby#49013- Go SDK: v27.2.1부터 더 이상 사용되지 않던
cli/command.ConfigureAuth()의 deprecation을 수정했어요. docker/cli#5552 - Go SDK:
cli.Errors타입 대신 Go의errors.Join을 사용하도록 권장하며,cli.Errors는 더 이상 사용되지 않아요. docker/cli#5548
패키징 업데이트
- Go 런타임을 1.22.10으로 업데이트했어요. moby/moby#49026, docker/cli#5669, docker/docker-ce-packaging#1120
- Compose를 v2.31.0으로 업데이트했어요. docker/docker-ce-packaging#1100
- BuildKit을 v0.17.3으로 업데이트했어요. moby/moby#49024
- Buildx를 v0.19.1로 업데이트했어요. docker/docker-ce-packaging#1115
- containerd를 v1.7.24로 업데이트했어요. moby/moby#48934
- containerd(정적 바이너리만 해당)를 v1.7.24로 업데이트했어요. moby/moby#48919
- runc를 v1.2.2로 업데이트했어요. moby/moby#48919
27.3
Docker Engine 27.3 릴리스에 대한 릴리스 노트입니다.
27.3.1
2024-09-20
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- CLI: 명령 실행 메트릭이 올바르게 내보내지지 않던 문제를 수정했어요. docker/cli#5457
패키징 업데이트
- Compose를 v2.29.7로 업데이트했어요.
27.3.0
2024-09-19
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- containerd 이미지 저장소: 다이제스트 참조로 시작된 이미지에서 실행된 컨테이너가 사용하는 이미지를
docker image prune -a가 untagging하던 문제를 수정했어요. moby/moby#48488 - 데몬 옵션에
--feature플래그를 추가했어요. moby/moby#48487 --gpus=0플래그 처리를 NVIDIA Container Runtime과 일관되게 업데이트했어요. moby/moby#48483- WSL2 미러링 모드 네트워킹에서 Windows 호스트의 패킷에 대해
loopback0인터페이스를 사용하는 것을 지원해요. moby/moby#48514 --iptables=false,--ip6tables=true(기본값)로 실행 중이고,br_netfilter커널 모듈이 일반적으로 로드되지 않은 호스트에서 포워딩된 패킷에 대한 DROP 규칙이 있는 방화벽을 사용할 때, IPv4 브리지 네트워크의 컨테이너 간 통신이 차단되던 문제를 수정했어요. moby/moby#48511- CLI:
docker volume update명령에 인자/볼륨이 전달되지 않으면 CLI가 패닉하던 문제를 수정했어요. docker/cli#5426 - CLI: Windows의 WSL 환경에서 실행할 때 메트릭이 올바르게 보고되도록 수정했어요. docker/cli#5432
패키징 업데이트
- containerd(정적 바이너리만 해당)를 v1.7.22로 업데이트했어요. moby/moby#48468
- Buildkit을 v0.16.0으로 업데이트했어요.
- Compose를 v2.29.6으로 업데이트했어요.
- Buildx를 v0.17.1로 업데이트했어요.
27.2
Docker Engine 27.2 릴리스에 대한 릴리스 노트입니다.
27.2.1
2024-09-09
버그 수정 및 개선 사항
- containerd 이미지 저장소:
docker image ls출력에서 컨테이너가 아닌 이미지가 숨겨지던 문제를 수정했어요. moby/moby#48402 - containerd 이미지 저장소: 이미지 플랫폼이 일치하지 않을 때
docker pull오류 메시지를 개선했어요. moby/moby#48415 - CLI:
docker login이 전달된 레지스트리 주소에서 저장소 이름을 제거하지 않아 자격 증명이 잘못된 키로 저장되던 문제를 수정했어요. docker/cli#5385 - CLI: 사용자가 인증을 기다리는 동안 CLI 프로세스가 일시 중단되었다가 재개되면 브라우저 로그인 흐름이 실패할 수 있는 문제를 수정했어요. docker/cli#5376
- CLI:
--user없이--password또는--password-stdin을 사용하여 비대화식으로docker login을 호출하면 더 이상 멈추지 않고 오류를 반환해요. docker/cli#5402
패키징 업데이트
- runc를 v1.1.14로 업데이트했어요. CVE-2024-45310에 대한 수정이 포함되어 있어요. moby/moby#48426
- Go 런타임을 1.22.7로 업데이트했어요. moby/moby#48433, docker/cli#5411, docker/docker-ce-packaging#1068
27.2.0
2024-08-27
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
- docker/cli, 27.2.0 milestone
- moby/moby, 27.2.0 milestone
- 더 이상 사용되지 않거나 제거된 기능은 Deprecated Features에서 확인하실 수 있어요.
- Engine API 변경 사항은 API version history에서 확인하실 수 있어요.
새로운 기능
이 릴리스의 새로운 기능은 다음과 같아요.
기기 코드 로그인
이 릴리스에서는 Docker Hub에 인증할 때 기기 코드 로그인(device code login)을 사용할 수 있게 되었어요.
기존처럼 사용자 이름과 비밀번호 또는 액세스 토큰으로 로그인하는 방법도 계속 사용할 수 있지만, 기기 코드 로그인이 더 안전하고 CLI에 비밀번호를 입력할 필요가 없어요.
기존 방법을 사용하려면 docker login -u <username>을 사용하면 됩니다.
docker image ls의 멀티 플랫폼 지원
실험적 기능
이 기능은 실험적이며 사전 통지 없이 언제든지 변경될 수 있어요. 이전 버전과의 호환성도 보장되지 않습니다.
containerd 이미지 저장소를 활성화하면 docker image ls 명령(또는 docker images 단축 명령)에 --tree 플래그가 추가되어 이미지가 멀티 플랫폼 이미지인지 여부를 표시해요.
API
GET /images/json응답에 이제Manifests필드가 포함되어요. 이 필드에는 이미지 인덱스에 포함된 하위 manifest에 대한 정보(플랫폼별 manifest, 빌드 증명 등)가 담겨 있습니다.- 이 새 필드는 요청에서
manifests쿼리 파라미터를true로 설정한 경우에만 채워져요.
실험적 기능
이 기능은 실험적이며 사전 통지 없이 언제든지 변경될 수 있어요. 이전 버전과의 호환성도 보장되지 않습니다.
버그 수정 및 개선 사항
- CLI: SSH를 통한 원격 컨텍스트에서 CLI가 원격 호스트에 연결할 때 pseudo-TTY를 할당하던 문제를 수정했어요. 드문 상황에서 문제를 유발할 수 있었어요. docker/cli#5351
- 64비트 경계에서 끝나는
--ip-range로 네트워크를 생성할 수 없던 문제를 수정했어요. moby/moby#48326 - CLI:
docker ps의 포트 바인딩에 표시되는 IPv6 주소가 이제 대괄호로 묶여요. docker/cli#5365 - containerd 이미지 저장소: 이미지 압축 해제가 실패할 경우
docker load가 조기에 오류로 종료되던 문제를 수정했어요. moby/moby#48376 - containerd 이미지 저장소:
docker pull후 이전 이미지가 dangling으로 유지되지 않던 문제를 수정했어요. moby/moby#48380
패키징 업데이트
- BuildKit을 v0.15.2로 업데이트했어요. moby/moby#48341
- Compose를 v2.29.2로 업데이트했어요. docker/docker-ce-packaging#1050
- containerd를 v1.7.21로 업데이트했어요. moby/moby#48383, docker/containerd-packaging#389
알려진 문제
Docker CLI에서 레지스트리에 인증할 때(docker login [registry address]) 알려진 문제가 있어요. 제공된 레지스트리 주소에 저장소/이미지 이름이 포함된 경우(예: docker login index.docker.io/docker/welcome-to-docker), 저장소 부분(docker/welcome-to-docker)이 정규화되지 않아 자격 증명이 잘못 저장되고, 이후 레지스트리에서 풀(docker pull index.docker.io/docker/welcome-to-docker)할 때 인증이 되지 않아요. 이를 방지하려면 docker login을 실행할 때 레지스트리 주소에 불필요한 접미사를 포함하지 마세요.
참고
URL 경로 세그먼트가 포함된 주소로
docker login을 사용하는 것은 문서화된 사용 사례가 아니며 지원되지 않는 것으로 간주해요. 권장 사용법은docker login의 주소로 레지스트리 호스트 이름만(선택적으로 포트 포함) 지정하는 것입니다.
27.1
Docker Engine 27.1 릴리스에 대한 릴리스 노트입니다.
27.1.2
2024-08-13
이 릴리스의 전체 pull request와 변경 사항 목록은 관련 GitHub 마일스톤에서 확인하실 수 있어요.
- docker/cli, 27.1.2 milestone
- moby/moby, 27.1.2 milestone
- 더 이상 사용되지 않거나 제거된 기능은 Deprecated Features에서 확인하실 수 있어요.
- Engine API 변경 사항은 API version history에서 확인하실 수 있어요.
버그 수정 및 개선 사항
- 대형 Dockerfile에서 빌드할 때
ResourceExhausted desc = grpc: received message larger than max오류가 발생할 수 있던 회귀(regression) 문제를 수정했어요. moby/moby#48245 - CLI:
docker attach가 가짜context cancelled오류 메시지를 출력하던 문제를 수정했어요. docker/cli#5296 - CLI:
docker attach가SIGINT에서 종료되는 대신 신호를 컨테이너로 전달하고 종료를 기다리도록 수정했어요. docker/cli#5302 - CLI:
--device-read-bps및--device-write-bps옵션이 적용되지 않던 문제를 수정했어요. docker/cli#5339 - CLI: 플러그인 실행 중 일부 경우에 발생하던 패닉을 수정했어요. docker/cli#5337
패키징 업데이트
- BuildKit을 v0.15.1로 업데이트했어요. moby/moby#48246
- Buildx를 v0.16.2로 업데이트했어요. docker/docker-ce-packaging#1043
- Go 런타임을 1.21.13으로 업데이트했어요. moby/moby#48301, docker/cli#5325, docker/docker-ce-packaging#1046
- Windows 패키지에서 사용되지 않는
docker-proxy.exe바이너리를 제거했어요. docker/docker-ce-packaging#1045
27.1.1
2024-07-23
보안
이 릴리스에는 CVE-2024-41110 / GHSA-v23v-6jw2-98fq에 대한 수정이 포함되어 있어요. 이 취약점은 접근 제어를 위해 인증 플러그인(AuthZ)을 사용하는 설정에 영향을 주었습니다. 이 릴리스에는 다른 변경 사항이 포함되어 있지 않으며, AuthZ 플러그인을 사용
더 알아보기 (Learn more)
관련 내용은 Docker 공식 문서에서 확인할 수 있어요.