Docker Engine 24.0 릴리스 노트

Docker Engine 24.0 릴리스 노트

Docker Engine 24.0 버전의 최신 변경 사항, 추가된 기능, 알려진 이슈, 그리고 수정된 버그들을 정리한 문서예요. 각 패치 버전별로 어떤 문제가 해결되었고, 어떤 보안 취약점이 패치되었는지 하나씩 차근차근 살펴볼게요. 특히 24.0.9에서는 보안 관련 중요 업데이트가 포함되어 있으니 꼭 확인해 주세요.

출처: 공식문서

더 자세한 내용이 필요하다면 아래 문서들도 참고하시면 좋아요.

24.0.9

2024-01-31

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

보안 (Security)

이번 릴리스에서는 Docker Engine과 그 구성 요소에 영향을 주는 다음과 같은 CVE 보안 취약점들이 수정되었어요.

| CVE | 구성 요소 | 수정 버전 | 심각도 |

| CVE-2024-21626 | runc | 1.1.12 | High, CVSS 8.6 |

| CVE-2024-24557 | Docker Engine | 24.0.9 | Medium, CVSS 6.9 |

중요 (Important)

이번 Docker Engine 릴리스에는 BuildKit의 다음과 같은 알려진 취약점에 대한 수정이 포함되어 있지 않다는 점을 꼭 기억해 주세요.

이 취약점들을 해결하려면 Docker Engine v25.0.2로 업그레이드하셔야 해요.

이번 릴리스에서 해결된 보안 이슈와 아직 해결되지 않은 BuildKit 취약점에 대한 자세한 내용은 블로그 포스트를 참고해 주세요.

각 취약점에 대한 세부 정보는 관련 보안 권고(security advisory) 문서를 확인하시면 됩니다.

패키징 업데이트 (Packaging updates)

24.0.8

2024-01-25

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • 라이브 복원(Live restore) 기능 관련해서, 자동 제거(docker run --rm) 옵션으로 실행된 컨테이너가 엔진 재시작 시 더 이상 강제로 제거되지 않도록 수정되었어요. moby/moby#46857

패키징 업데이트 (Packaging updates)

24.0.7

2023-10-27

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • overlay2 레이어 메타데이터를 원자적으로(atomically) 기록하도록 수정했어요. moby/moby#46703
  • systemd 버전 250 이상에서 발생하던 "Rootful-in-Rootless" Docker-in-Docker 문제를 수정했어요. moby/moby#46626
  • 사용자 이름에 백슬래시(\)가 포함된 경우 dockerd-rootless-setuptools.sh가 제대로 동작하지 않던 문제를 수정했어요. moby/moby#46407
  • 네트워크에 연결되지 않은 컨테이너를 중지할 때, 그리고 dockerd --bridge=none을 사용할 때 네트워크 샌드박스가 완전히 삭제되지 않던 버그를 수정했어요. moby/moby#46702
  • API 요청을 취소하면 컨테이너 재시작이 중단될 수 있던 버그를 수정했어요. moby/moby#46697
  • 서브넷보다 큰 범위로 --ip-range를 지정하면 컨테이너가 시작되지 않던 문제를 수정했어요. docker/for-mac#6870
  • zstd 출력 시 데이터 손상이 발생하던 문제를 수정했어요. moby/moby#46709
  • 컨테이너의 MAC 주소가 적용되는 조건을 수정했어요. moby/moby#46478
  • stats 수집기의 성능을 개선했어요. moby/moby#46448
  • 소스 정책 규칙이 잘못된 순서로 적용되던 문제를 수정했어요. moby/moby#46441

패키징 업데이트 (Packaging updates)

보안 (Security)

기본적으로 컨테이너가 /sys/devices/virtual/powercap에 접근하는 것을 차단하도록 변경했어요. 이 변경으로 CVE-2020-8694, CVE-2020-8695, CVE-2020-12912PLATYPUS 공격으로 알려진 공격에 대한 방어가 강화되었어요.

자세한 내용은 보안 권고커밋을 참고해 주세요.

24.0.6

2023-09-05

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • containerd 스토리지 백엔드: 컨테이너 이미지가 콘텐츠 저장소(content store)에 더 이상 존재하지 않을 때 docker ps가 실패하던 문제를 수정했어요. moby/moby#46095
  • containerd 스토리지 백엔드: 컨테이너 이미지 구성(config)이 콘텐츠 저장소에 더 이상 존재하지 않을 때 docker ps -s -adocker container prune이 실패하던 문제를 수정했어요. moby/moby#46097
  • containerd 스토리지 백엔드: 컨테이너 이미지 구성이 콘텐츠 저장소에 더 이상(또는 처음부터) 존재하지 않을 때 docker inspect가 실패하던 문제를 수정했어요. moby/moby#46244
  • containerd 스토리지 백엔드: 참조 카운트(ref-counted) 방식의 rootfs 마운트를 사용하여 overlayfs 스냅샷터에서 diff와 export가 제대로 동작하도록 수정했어요. moby/moby#46266
  • containerd 스토리지 백엔드: 로컬에서 사용 가능한 이미지 플랫폼이 원하는 플랫폼과 일치하지 않을 때 표시되는 오류 메시지가 이해하기 어렵던 문제를 수정했어요. moby/moby#46300
  • containerd 스토리지 백엔드: 클래식 빌더로 FROM scratch Dockerfile 명령을 사용할 때 발생하던 문제를 수정했어요. moby/moby#46302
  • containerd 스토리지 백엔드: 클래식 빌더에서 mismatched image rootfs and manifest layers 오류가 발생하던 문제를 수정했어요. moby/moby#46310
  • 모든 레지스트리에서 Docker Image Format v1 및 Docker Image manifest version 2, schema 1 이미지를 풀(pull)할 때 경고가 표시되도록 했어요. moby/moby#46290
  • 사용자 정의 볼륨 옵션을 사용하는 볼륨의 라이브 복원(live-restore) 문제를 수정했어요. moby/moby#46366
  • 비루트(non-root) 사용자로 컨테이너를 실행할 때 capabilities 비트가 잘못 제거되던 문제를 수정했어요. (참고로 이 변경은 회귀(regression)로 인해 이미 사실상 적용된 상태였어요.) moby/moby#46221
  • 네트워크 격리 iptables 규칙으로 인해 컨테이너 간 IPv6 Neighbor Solicitation 패킷 교환이 차단되던 문제를 수정했어요. moby/moby#46214
  • Windows에서 바이너리가 현재 디렉터리에 있을 때 dockerd.exe --register-service가 동작하지 않던 문제를 수정했어요. moby/moby#46215
  • Docker Hub에 docker login을 할 때 PAT(Personal Access Token) 사용을 권장하는 힌트를 추가했어요. docker/cli#4500
  • CLI의 Bash 자동 완성(completion) 사용자들을 위해 셸 시작 시간을 개선했어요. docker/cli#4517
  • 가능한 경우 GET /_ping을 건너뛰어 일부 명령의 속도를 개선했어요. docker/cli#4508
  • Docker Hub에서 PAT를 사용하여 docker manifest inspect로 이미지를 조회할 때 자격 증명(credential) 범위가 잘못 설정되던 문제를 수정했어요. docker/cli#4512
  • docker events--format=json을 지원하지 않던 문제를 수정했어요. docker/cli#4544

패키징 업데이트 (Packaging updates)

24.0.5

2023-07-24

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • Go 클라이언트가 go1.20.6에서 도입된 변경 사항과의 호환성을 위해 HTTP Host: 헤더에 UNIX 소켓 경로를 사용하지 않도록 수정했어요. moby/moby#45962, moby/moby#45990
  • containerd 스토리지 백엔드: docker image inspectGET /images/{name}/jsonVariant가 포함되지 않던 문제를 수정했어요. moby/moby#46025
  • containerd 스토리지 백엔드: 이미지 내보내기(export) 중 콘텐츠가 가비지 컬렉션될 수 있는 잠재적 문제를 방지했어요. moby/moby#46021
  • containerd 스토리지 백엔드: RepoDigests에 중복된 다이제스트(digest) 항목이 생기지 않도록 수정했어요. moby/moby#46014
  • containerd 스토리지 백엔드: 태그와 다이제스트로 참조된 이미지를 다룰 때 잘못된 태그를 대상으로 작업이 수행되던 문제를 수정했어요. moby/moby#46013
  • containerd 스토리지 백엔드: 레거시 빌더로 컨테이너를 빌드할 때 EXPOSE로 인해 패닉(panic)이 발생하던 문제를 수정했어요. moby/moby#45921
  • Swarm 노드가 아닌 곳에서 overlay 네트워크를 생성하려고 할 때 이해하기 어려운 오류가 반환되던 회귀(regression) 문제를 수정했어요. moby/moby#45974
  • 명령줄에서 볼륨 사양을 파싱할 때 발생하는 오류가 제대로 보고되지 않던 문제를 수정했어요. docker/cli#4423
  • CLI 구성 파일에 auths: null이 있을 때 패닉이 발생하던 문제를 수정했어요. docker/cli#4450

패키징 업데이트 (Packaging updates)

24.0.4

2023-07-07

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • 24.0.3에서 도입된 회귀(regression) 문제로 바인드 마운트(bind mounts)가 있는 컨테이너의 라이브 복원(live-restore) 중 패닉이 발생하던 문제를 수정했어요. moby/moby#45903

24.0.3

2023-07-06

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • containerd 이미지 저장소: 기본 플랫폼에 대한 매니페스트가 포함되지 않은 멀티 플랫폼 이미지를 다룰 수 없던 문제를 수정했어요. moby/moby#45849
  • containerd 이미지 저장소: 컨테이너 빌드에서 FROM scratch를 캐시하려는 잘못된 시도가 발생하던 문제를 수정했어요. moby/moby#45822
  • containerd 이미지 저장소: 동일한 콘텐츠를 여러 번 마운트할 수 없는 스냅샷터에서 docker cp가 실패하던 문제를 수정했어요. moby/moby#45780, moby/moby#45786
  • containerd 이미지 저장소: type=image로 빌드한 결과물이 올바르게 언팩(unpack)/저장되지 않던 문제를 수정했어요. moby/moby#45692
  • containerd 이미지 저장소: docker load에서 증명(attestations)을 포함한 의사 이미지(pseudo-images)를 잘못 언팩하려 시도하던 문제를 수정했어요. moby/moby#45688
  • containerd 이미지 저장소: 레지스트리와 상호작용할 때 사용자 에이전트(user agent)를 올바르게 설정하고, 스냅샷터와 같은 추가 정보를 포함하도록 수정했어요. moby/moby#45671, moby/moby#45684
  • containerd 이미지 저장소: 스냅샷터를 전환한 후 이미 풀(pull)된 콘텐츠의 언팩이 실패하던 문제를 수정했어요. moby/moby#45678
  • containerd 이미지 저장소: 다시 태그(re-tag)되었거나 모든 태그가 제거된 이미지가 아직 사용 중인데도 정리(prune)되던 문제를 수정했어요. moby/moby#45857
  • Swarm CSI에서 Topology 필드가 NodeCSIInfo로 전파되지 않던 문제를 수정했어요. moby/moby#45810
  • 매우 큰 raft 로그로 인해 새 Swarm 매니저를 추가하지 못하던 문제를 수정했어요. moby/moby#45703, moby/swarmkit#3122, moby/swarmkit#3128
  • 기본 seccomp 프로필에서 name_to_handle_at(2) 시스템 콜이 이제 항상 허용되도록 변경했어요. moby/moby#45833
  • 암호화된 Swarm overlay 네트워크가 기본 포트(4789)가 아닌 다른 포트에서 동작하지 않던 문제를 수정했어요. moby/moby#45637
  • 라이브 복원(live-restore) 중 마운트 참조 카운트(ref-count) 복원이 실패하던 문제를 수정했어요. moby/moby#45824
  • 라이브 복원 중 발생하는 다양한 네트워크 관련 실패를 수정했어요. moby/moby#45658, moby/moby#45659
  • 데몬이 예기치 않게 종료되었을 때 실행 중인 컨테이너가 0(성공) 종료 상태로 복원되던 문제를 수정했어요. moby/moby#45801
  • 헬스체크(healthcheck) 프로브를 실행하는 동안 발생할 수 있는 패닉을 수정했어요. moby/moby#45798
  • 컨테이너 exec 시작 시 경쟁 조건(race condition)으로 인해 발생하는 패닉을 수정했어요. moby/moby#45794
  • 존재하지 않는 명령으로 exec에 터미널을 연결할 때 발생하는 예외를 수정했어요. moby/moby#45643
  • IP를 라벨로 전달하여 BuildKit에서 host-gateway가 동작하도록 수정했어요. (이를 위해서는 docker/buildx#1894도 필요해요.) moby/moby#45790
  • POST /containers/{id}/stop 요청이 취소되었을 때 지정된 타임아웃 동안 '정상적인(graceful)' 중지를 기다리는 대신 컨테이너를 강제로 종료하던 문제를 수정했어요. moby/moby#45774
  • 루트(/) 디렉터리에서 docker cp -a를 실행하면 실패하던 문제를 수정했어요. moby/moby#45748
  • OCI 구성에서 리소스 제약 파라미터를 더 정확하게 설정하여 non-runc 컨테이너 런타임과의 호환성을 개선했어요. moby/moby#45746
  • 루트리스(rootless) 모드에서 특정 구성(예: LDAP)의 subuid/subgid 범위가 겹칠 때 발생하는 문제를 수정했어요. moby/moby#45747, rootless-containers/rootlesskit#369
  • GET /info의 Debug 섹션을 채울 때 CPU와 메모리 사용량을 크게 줄였어요. moby/moby#45856
  • 클라이언트만 디버그 모드일 때 docker info 중 디버그 정보가 올바르게 출력되지 않던 문제를 수정했어요. docker/cli#4393
  • SSH 연결로 호스트에 연결할 때 연결이 끊긴(hung) 상태가 되던 문제를 수정했어요. docker/cli#4395

패키징 업데이트 (Packaging updates)

24.0.2

2023-05-26

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • 로컬에서 태그된 이미지를 참조할 때 빌드 중 패닉이 발생하던 문제를 수정했어요. moby/buildkit#3899, moby/moby#45582
  • 동시에 많은 빌드 스테이지를 수행할 때 exit code: 4294967295 오류로 빌드가 실패할 수 있던 문제를 수정했어요. moby/moby#45620
  • Windows에서 DNS 확인 시 etc/hosts(%WINDIR%\System32\Drivers\etc\hosts)를 무시하던 문제를 수정했어요. 여기에는 localhost 확인도 포함돼요. moby/moby#45562
  • 동시에 실행되는 docker exec 명령이 예상보다 훨씬 오래 걸리게 만드는 containerd 버그에 대한 해결책(workaround)을 적용했어요. moby/moby#45625
  • containerd 이미지 저장소: 이미지의 Created 필드에 잘못된 값이 포함되던 문제를 수정했어요. moby/moby#45623
  • containerd 이미지 저장소: containerd 이미지 저장소 사용 여부와 관계없이 이미지 풀 진행 상황 출력이 동일한 형식을 가지도록 조정했어요. moby/moby#45602
  • containerd 이미지 저장소: 기본 이미지 저장소와 containerd 이미지 저장소 간 전환 시 이제 데몬 재시작이 필요해요. moby/moby#45616

패키징 업데이트 (Packaging updates)

24.0.1

2023-05-19

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

제거된 항목 (Removed)

  • 24.0 메이저 릴리스에서 제거된 스토리지 드라이버에 대한 CLI 자동 완성(completions)을 제거했어요. docker/cli#4302

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • 외부 서버의 DNS 쿼리 NXDOMAIN 응답이 클라이언트에 SERVFAIL로 전달되던 문제를 수정했어요. moby/moby#45573
  • docker pull --platform 실행 시 같은 이미지를 가리키는 다른 태그에 대해 No such image라고 보고되던 문제를 수정했어요. moby/moby#45562
  • 구성 리로드 중 비보안(insecure) 레지스트리 구성이 잊혀지던 문제를 수정했어요. moby/moby#45571
  • containerd 이미지 저장소: 레이어가 없는 이미지가 docker images -a에 나열되지 않던 문제를 수정했어요. moby/moby#45588
  • API: GET /images/{id}/json이 빈 RepoTagsRepoDigests 대신 null을 반환하던 문제를 수정했어요. moby/moby#45564
  • API: POST /commit이 빈 요청 본문을 허용하지 않던 문제를 수정했어요. moby/moby#45568

패키징 업데이트 (Packaging updates)

24.0.0

2023-05-16

이번 릴리스에서 어떤 PR과 변경 사항이 있었는지 전체 목록을 보시려면 관련 GitHub 마일스톤을 확인해 주세요.

새로운 기능 (New)

  • containerd를 콘텐츠 저장소(content store)로 사용하는 실험적 지원을 도입했어요. (기존 스토리지 드라이버를 대체하는 방식이에요.) moby/moby#43735, 기타 moby/moby pull requests
  • --host CLI 플래그가 이제 ssh:// 호스트 주소에서 경로 구성 요소를 지원해요. 원격 호스트에서 별도 설정 없이 대체 소켓 경로를 사용할 수 있게 된 거예요. docker/cli#4073
  • docker info CLI 명령이 이제 버전(version)과 플랫폼(platform) 필드를 보고해요. docker/cli#4180
  • 새로 생성되는 네트워크의 옵션을 구성할 수 있는 데몬 플래그 --default-network-opt를 도입했어요. moby/moby#43197
  • 기본 seccomp 프로필에서 socket(2) 계열 시스템 콜의 AF_VSOCK 접근을 제한했어요. moby/moby#44562
  • 컨테이너에 OCI 런타임 주석(annotations)을 설정하는 기능을 도입했어요. docker/cli#4156, moby/moby#45025
  • 이제 daemon.json에서 대체 런타임을 구성할 수 있어요. 런타임 이름에 별칭(alias)을 부여하고 옵션을 전달할 수 있게 되었어요. moby/moby#45032
  • docker-init 바이너리가 이제 PATH 외에도 FHS 규격을 따르는 libexec 디렉터리에서도 발견되도록 했어요. moby/moby#45198
  • API: 데몬 수준의 --no-new-privileges 설정을 GET /info에서 표시하도록 했어요. moby/moby#45320

제거된 항목 (Removed)

  • docker info가 더 이상 IndexServiceAddress를 보고하지 않아요. docker/cli#4204
  • libnetwork: 오래된 커널 버전을 위한 폴백(fallback) 코드를 제거했어요. moby/moby#44684, moby/moby#44802
  • libnetwork: 클래식 Swarm과 관련된 사용하지 않는 코드를 제거했어요. moby/moby#44965
  • libnetwork: 암호화된 Swarm overlay 네트워크에서 xt_u32 커널 모듈 사용을 제거했어요. moby/moby#45281
  • 표준 provenance 증명(attestations)을 위해 BuildKit의 더 이상 사용되지 않는 buildinfo 지원을 제거했어요. moby/moby#45097
  • 더 이상 사용되지 않는 AUFS 및 레거시 overlay 스토리지 드라이버를 제거했어요. moby/moby#45342, moby/moby#45359
  • 더 이상 사용되지 않는 overlay2.override_kernel_check 스토리지 드라이버 옵션을 제거했어요. moby/moby#45368
  • AppArmor 프로필에서 오래된 버전의 apparmor_parser에 대한 해결책(workarounds)을 제거했어요. moby/moby#45500
  • API: GET /images/json이 더 이상 빈 RepoTags와 RepoDigests를 <none>:<none>/<none>@<none>으로 표시하지 않아요. API >= 1.43에서는 빈 배열이 대신 반환돼요. moby/moby#45068

지원 중단 (Deprecated)

  • --oom-score-adjust 데몬 옵션을 지원 중단(deprecate)했어요. moby/moby#45315
  • API: GET /images/jsonGET /images/{id}/jsonVirtualSize 필드를 지원 중단했어요. moby/moby#45346

버그 수정 및 개선 사항 (Bug fixes and enhancements)

  • docker stack 명령이 더 이상 Compose 파일의 build 섹션을 검증하지 않아요. docker/cli#4214
  • 타임아웃에 도달한 후에도 헬스체크 프로세스가 남아 있던 문제를 수정했어요. moby/moby#43739
  • overlay2 스토리지 드라이버를 사용할 때 컨테이너 시작 오버헤드를 줄였어요. moby/moby#44285
  • API: GET /images에서 여러 개의 before=since= 필터를 처리하도록 했어요. moby/moby#44503
  • 사용자 정의 네트워크에서 사용되는 내장 DNS 리졸버 구현의 수많은 버그를 수정했어요. moby/moby#44664
  • 이벤트 속성 맵에 execDuration 필드를 추가했어요. moby/moby#45494
  • Windows의 internal, l2bridge, nat 드라이버로 Swarm 수준 네트워크를 생성할 수 있게 되었어요. moby/swarmkit#3121, moby/moby#45291

패키징 업데이트 (Packaging updates)

더 알아보기 (Learn more)