Docker Engine 20.10 릴리스 노트
Docker Engine 20.10 릴리스 노트
이 문서는 Docker Engine 20.10 버전에서 이루어진 최신 변경 사항, 추가 기능, 알려진 이슈, 그리고 버그 수정 내용을 정리한 자료예요. 각 패치 버전별로 어떤 부분이 달라졌는지 하나씩 차근차근 살펴보도록 할게요.
출처: 공식문서
20.10.24
2023-04-04
업데이트 (Updates)
이번 패치에서는 런타임과 관련 컴포넌트들의 버전을 전반적으로 올렸어요.
- Go 런타임을 1.19.7로 업데이트했어요.
- Docker Buildx를 v0.10.4로 업데이트했어요.
- containerd를 v1.6.20로 업데이트했어요.
- runc를 v1.1.5로 업데이트했어요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- Swarm 암호화 오버레이 네트워크가 보장해야 하는 안전성을 지키지 못하는 여러 문제를 수정했어요. 여기에는 CVE-2023-28841, CVE-2023-28840, CVE-2023-28842가 포함돼요.
- 커널이 암호화 오버레이 네트워크를 지원하지 않는 경우, 이제는 오류로 보고돼요.
- 암호화 오버레이 네트워크가 여러 노드가 붙을 때까지 기다리는 대신, 바로 설정되도록 바뀌었어요.
- Red Hat Enterprise Linux 9에서도
xt_bpf커널 모듈을 사용해서 암호화 오버레이 네트워크를 쓸 수 있게 됐어요. - Swarm 오버레이 네트워크 사용자라면 GHSA-vwm3-crmr-xfxw를 꼭 확인해서 의도치 않은 노출이 없었는지 점검해 보시길 권장해요.
- 잠재적인 패닉(panic) 문제를 해결하기 위해 github.com/containerd/fifo를 v1.1.0으로 업그레이드했어요 moby/moby#45216.
- 설치된 cli-plugins에 대해 Bash 자동 완성(completion)이 동작하지 않던 문제를 고쳤어요 docker/cli#4091.
20.10.23
2023-01-19
이번 릴리스에서는 Docker Compose, Docker Buildx, containerd의 업데이트된 버전과 몇 가지 사소한 버그 수정 및 개선 사항이 포함되어 있어요.
업데이트 (Updates)
- Docker Compose를 v2.15.1로 업데이트했어요.
- Docker Buildx를 v0.10.0로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.15로 업데이트했어요. docker-compose-cli패키지의 버전 관리 형식을 변경해서 배포판 버전 업데이트가 가능하도록 했어요 docker/docker-ce-packaging#822.- Go 런타임을 1.18.10로 업데이트했어요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- BuildKit을 활성화한 상태에서
docker build명령에--add-host=host.docker.internal:host-gateway옵션을 사용하면 빌드가 실패하던 문제를 수정했어요 moby/moby#44650. - 기본 seccomp 프로필에서
AF_VSOCK소켓 호출을 차단하던 변경을 되돌렸어요 moby/moby#44712.
이 변경은 보안 관점에서는 바람직했지만, 일부 사용 사례에서 동작 변화를 일으켰어요. 그래서 영향을 받는 사용자들의 안정성과 호환성을 위해 되돌린 거예요.
다만, 컨테이너에서 AF_VSOCK을 사용하는 분들은 이 특수한 주소 체계가 현재 Linux 커널의 어떤 버전에서도 네임스페이스(namespace)로 격리되지 않는다는 점을 알아두셔야 해요. 호스트 하이퍼바이저와 컨테이너가 직접 통신하는 등 예상치 못한 동작이 발생할 수 있거든요.
향후 릴리스에서는 AF_VSOCK을 다시 필터링할 예정이에요. 네임스페이스로 격리되지 않은 AF_VSOCK을 통해 컨테이너가 통신하도록 허용해야 하는 경우에는 seccomp 제한을 끄거나 커스텀 seccomp 프로필을 설정해야 해요.
20.10.22
2022-12-16
이번 릴리스에는 Docker Compose, Docker Scan, containerd의 업데이트된 버전과 몇 가지 사소한 버그 수정 및 개선 사항이 포함되어 있어요.
업데이트 (Updates)
- Docker Compose를 v2.14.1로 업데이트했어요.
- Docker Scan을 v0.23.0으로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.13로 업데이트해서 CVE-2022-23471을 수정했어요. - Go 런타임을 1.18.9로 업데이트해서 CVE-2022-41716, CVE-2022-41717, CVE-2022-41720을 수정했어요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- 지원되지 않는 이미지 형식이나 OCI 아티팩트를 pull하려고 할 때의 오류 메시지를 개선했어요 moby/moby#44413, moby/moby#44569.
- 컨테이너용 랜덤 포트를 선택할 때 호스트의 임시 포트 범위(ephemeral port-range)가 무시되던 문제를 수정했어요 moby/moby#44476.
- OpenSSH 8.9 이상을 사용하는 호스트에서
docker build중ssh: parse error in message type 27오류가 발생하던 문제를 수정했어요 moby/moby#3862. - 기본 seccomp 프로필에서
AF_VSOCK소켓 호출을 차단하도록 변경했어요 moby/moby#44564.
20.10.21
2022-10-25
이번 릴리스에는 Docker Compose, Docker Scan, containerd의 업데이트된 버전과 Ubuntu 22.10용 패키지 추가, 그리고 몇 가지 사소한 버그 수정 및 개선 사항이 포함되어 있어요.
새로운 기능 (New)
- Ubuntu 22.10(Kinetic Kudu)용 패키지를 제공하기 시작했어요.
- Docker Hub에 대해
allow-nondistributable-artifacts를 지원하게 됐어요 moby/moby#44313.
업데이트 (Updates)
- Docker Compose를 v2.12.2로 업데이트했어요.
- Docker Scan을 v0.21.0으로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.9로 업데이트했어요. - 번들된 BuildKit 버전을 업데이트해서
output clipped, log limit 1MiB reached오류를 수정했어요 moby/moby#44339.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- Bash 자동 완성에서
--platform옵션에 대한 실험적(experimental) 게이트를 제거했어요 docker/cli#3824. - Windows에서 레거시 CLI로 Docker Engine을 서비스로 등록할 때
Invalid standard handle identifier패닉이 발생하던 문제를 수정했어요 moby/moby#44326. - Windows의 Cygwin에서 Git 명령을 실행할 때 발생하던 문제를 수정했어요 moby/moby#44332.
20.10.20
2022-10-18
이번 릴리스에서는 Git 취약점(CVE-2022-39253)에 대한 부분적인 완화 조치가 포함되어 있고, image:tag@digest 이미지 참조 처리 방식도 업데이트됐어요.
이 Git 취약점은 악의적으로 조작된 Git 저장소를 빌드 컨텍스트로 사용할 때, 임의의 파일 시스템 경로를 결과 컨테이너/이미지로 복사할 수 있게 하는 문제예요. 데몬과 API 클라이언트 모두에서 발생할 수 있고, 사용 중인 버전과 도구에 따라 영향이 달라져요.
이번 릴리스와 데몬 API를 사용하는 다른 소비자들이 제공하는 완화 조치는 부분적이며, Git URL 컨텍스트(예: git+protocol://)로 빌드하는 사용자만 보호해요. 서브모듈과 상호작용하며 체크아웃하는 수동 Git 명령으로도 여전히 악용될 수 있기 때문에, 이 취약점을 막으려면 패치된 버전의 Git으로 즉시 업그레이드해야 해요. 자세한 내용은 GitHub 블로그의 "Git security vulnerabilities announced"에서 확인할 수 있어요.
업데이트 (Updates)
- Docker Compose를 v2.12.0으로 업데이트했어요.
image:tag@digest참조 처리 방식을 업데이트했어요.image:tag@digest("digest로 pull") 형식으로 이미지를 pull하면, 이미지 해석은 콘텐츠 주소 지정 digest를 통해 이루어지고image와tag는 사용되지 않아요. 이는 의도된 동작이지만 혼란을 일으킬 수 있고, 사회 공학(social engineering)을 통해 로컬 이미지 저장소에 이미 존재하는 이미지를 실행하도록 악용될 가능성도 있었어요. 이제 Docker는 digest가 이미지를 pull하는 데 사용된 저장소 이름과 일치하는지 확인하고, 일치하지 않으면 오류를 발생시켜요.image:tag@digest참조 처리 방식을 업데이트했어요. 자세한 내용은 위의 "Daemon" 섹션을 참고하세요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- 클래식 빌더에서 Git URL을 빌드 컨텍스트로 사용할 때 CVE-2022-39253에 대한 완화 조치를 추가했어요.
- 클래식 빌더에 완화 조치를 추가하고 BuildKit을 v0.8.3-31-gc0149372로 업데이트해서 CVE-2022-39253을 해결했어요.
20.10.19
2022-10-14
이번 릴리스에는 몇 가지 버그 수정과 업데이트된 Docker Compose 버전이 포함되어 있어요.
업데이트 (Updates)
- Docker Compose를 v2.11.2로 업데이트했어요.
- Go 런타임을 1.18.7로 업데이트했어요. 여기에는 CVE-2022-2879, CVE-2022-2880, CVE-2022-41715에 대한 수정이 포함돼요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
docker builder prune또는docker system prune실행 중 패닉이 발생할 수 있던 문제를 수정했어요 moby/moby#44122.- 데몬이 "live restore" 모드로 실행 중이고 재시작된 경우,
docker volume prune을 사용하면 아직 사용 중인 볼륨까지 제거되던 버그를 수정했어요 moby/moby#44238.
20.10.18
2022-09-09
이번 릴리스에서는 낮은 심각도의 보안 이슈 수정, 몇 가지 사소한 버그 수정, 그리고 Docker Compose, Docker Buildx, containerd, runc의 업데이트된 버전이 포함되어 있어요.
업데이트 (Updates)
- Docker Buildx를 v0.9.1로 업데이트했어요.
- Docker Compose를 v2.10.2로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.8로 업데이트했어요. - runc 버전을 v1.1.4로 업데이트했어요.
- Go 런타임을 1.18.6으로 업데이트했어요. 여기에는 CVE-2022-27664와 CVE-2022-32190에 대한 수정이 포함돼요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- Docker Compose용 Bash 자동 완성을 추가했어요 docker/cli#3752.
- 빌드 중 파일 캐퍼빌리티(file-capabilities)가 보존되지 않던 문제를 수정했어요 moby/moby#43876.
- 동시 맵 읽기와 쓰기로 인해 패닉이 발생할 수 있던 문제를 수정했어요 moby/moby#44067.
- 보조 그룹 권한과 관련된 보안 취약점을 수정했어요. 이 취약점으로 인해 컨테이너 프로세스가 컨테이너 내부의 기본 그룹 제한을 우회할 수 있었어요 CVE-2022-36109, GHSA-rc4r-wh2q-q6c4.
- seccomp: 기본 정책에 Landlock syscall 지원을 추가했어요 moby/moby#43991.
- seccomp: 커널 5.12~5.16에서 도입된 새로운 syscall을 지원하도록 기본 정책을 업데이트했어요 moby/moby#43991.
- 이미지 매니페스트의 캐시 조회가 실패해서 이미지 레지스트리에 불필요한 왕복 요청이 발생하던 문제를 수정했어요 moby/moby#44109.
exec프로세스와 헬스체크가 타임아웃될 때 종료되지 않던 문제를 수정했어요 moby/moby#44018.
20.10.17
2022-06-06
이번 릴리스에는 Docker Compose, containerd, runc 컴포넌트의 업데이트된 버전과 몇 가지 사소한 버그 수정이 포함되어 있어요.
업데이트 (Updates)
- Docker Compose를 v2.6.0으로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.6으로 업데이트했어요. 여기에는 CVE-2022-31030에 대한 수정이 포함돼요. - runc 버전을 v1.1.2로 업데이트했어요. 여기에는 CVE-2022-29162에 대한 수정이 포함돼요.
- Go 런타임을 1.17.11로 업데이트했어요. 여기에는 CVE-2022-30634, CVE-2022-30629, CVE-2022-30580, CVE-2022-29804에 대한 수정이 포함돼요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- zsh 자동 완성 스크립트에서 docker 명령의 별표(*)를 제거했어요 docker/cli#3648.
- 오버레이 네트워크의 호스트 모드에서 게시된 포트와 Windows 포트가 충돌하던 문제를 수정했어요 moby/moby#43644.
- 성능 튜닝이 항상 libnetwork 샌드박스에 적용되도록 보장했어요 moby/moby#43683.
20.10.16
2022-05-12
이번 릴리스에서는 macOS용 Docker CLI 빌드의 회귀(regression) 문제를 수정하고, containerd 1.5 이상을 사용할 때 docker stats에서 발생하던 문제를 해결했어요. 또한 Go 런타임을 업데이트해서 CVE-2022-29526을 수정했어요.
업데이트 (Updates)
- CVE-2022-29526 수정이 포함된 golang.org/x/sys 의존성을 업데이트했어요.
- CVE-2022-29526 수정이 포함된
golang.org/x/sys빌드 타임 의존성을 업데이트했어요. - Go 런타임을 1.17.10으로 업데이트했어요. 여기에는 CVE-2022-29526에 대한 수정이 포함돼요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- 20.10.15에서 도입된 macOS 바이너리의 회귀 문제를 수정했어요. 이 문제로 패닉이 발생할 수 있었어요 docker/cli#43426.
- containerd 1.5.0 이상과 함께 실행할 때
docker stats가 빈 통계를 표시하던 문제를 수정했어요 moby/moby#43567. docker scanCLI 플러그인에 "약한(weak)" 의존성을 사용해서, 다운로드한 RPM 패키지로 오프라인 설치를 할 때 "conflicting requests" 오류가 발생하지 않도록 했어요 docker/docker-ce-packaging#659.
20.10.15
2022-05-05
이번 릴리스에는 compose, buildx, containerd, runc 컴포넌트의 업데이트된 버전과 몇 가지 사소한 버그 수정이 포함되어 있어요.
업데이트 (Updates)
- Docker Compose를 v2.5.0으로 업데이트했어요.
- Docker Buildx를 v0.8.2로 업데이트했어요.
- Go 런타임을 1.17.9로 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.6.4로 업데이트했어요. - runc 버전을 v1.1.1로 업데이트했어요.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- 잠재적인 잠금 경합을 방지하기 위해 stateCounter에 RWMutex를 사용하도록 했어요 moby/moby#43426.
- 특정 조건에서 데몬이 사용 가능한 IP 범위를 찾지 못하는 문제를 방지했어요 moby/moby#43360.
- CentOS 9 Stream과 Fedora 36용 패키지를 추가했어요.
알려진 이슈 (Known issues)
- 20.10.15 릴리스의 macOS CLI 바이너리에서 문제를 확인했어요. 이 문제는 20.10.16 릴리스에서 해결됐어요.
20.10.14
2022-03-23
이번 릴리스에서는 CVE-2022-24769를 해결하기 위해 컨테이너의 기본 상속 가능 캐퍼빌리티(inheritable capabilities)를 업데이트했어요. 같은 문제를 해결하기 위해 새 버전의 containerd.io 런타임도 포함되어 있어요.
업데이트 (Updates)
- 기본 상속 가능 캐퍼빌리티를 업데이트했어요.
- 빌드 중 사용되는 컨테이너의 기본 상속 가능 캐퍼빌리티를 업데이트했어요.
- containerd(
containerd.io패키지)를 v1.5.11로 업데이트했어요. docker buildx를 v0.8.1로 업데이트했어요.
20.10.13
2022-03-10
이번 릴리스에는 몇 가지 버그 수정과 패키징 변경, docker scan 및 docker buildx 명령 업데이트, Go 런타임 업데이트, 그리고 새 버전의 containerd.io 런타임이 포함되어 있어요. 또한 이번 릴리스부터 Docker Compose V2의 .deb 및 .rpm 패키지도 제공되는데, (선택 사항인) docker-compose-plugin 패키지로 설치할 수 있어요.
새로운 기능 (New)
- Docker Compose V2용
.deb및.rpm패키지를 제공해요. Docker Compose v2.3.3은 이제 Linux에서docker-compose-plugin패키지로 설치할 수 있고, Docker CLI에서docker compose하위 명령을 제공해요. Docker Compose 플러그인은 독립 실행형으로도 설치 및 실행할 수 있어서docker-compose(Docker Compose V1)의 대체품으로 사용할 수 있어요 docker/docker-ce-packaging#638.compose-cli-plugin패키지는 CLI 플러그인을 지원하는 이전 버전의 Docker CLI(Docker CLI 18.09 이상)에서도 사용할 수 있어요. - 곧 출시될 Ubuntu 22.04 "Jammy Jellyfish" LTS 릴리스용 패키지를 제공해요 docker/docker-ce-packaging#645, docker/containerd-packaging#271.
업데이트 (Updates)
- 번들된 buildx 버전을 v0.8.0으로 업데이트했어요.
docker buildx를 v0.8.0으로 업데이트했어요.docker scan(docker-scan-plugin)을 v0.17.0으로 업데이트했어요.- containerd(
containerd.io패키지)를 v1.5.10으로 업데이트했어요. - 번들된 runc 버전을 v1.0.3으로 업데이트했어요.
- Golang 런타임을 Go 1.16.15로 업데이트했어요.
- fluentd 로그 드라이버를 업데이트해서 잠재적인 데몬 크래시를 방지하고,
fluentd-async-connect=true를 사용하면서 원격 서버에 연결할 수 없을 때 컨테이너가 멈추지 않도록 했어요 moby/moby#43147.
버그 수정 및 개선 사항 (Bug fixes and enhancements)
- 컨테이너 상태를 업데이트할 때 발생하는 경합 조건(race condition)을 수정했어요 moby/moby#43166.
- etcd 의존성을 업데이트해서 데몬이 파일 잠금을 잘못 보유하지 않도록 했어요 moby/moby#43259.
- 기본
net.ipv4.ping_group_rangesysctl을 구성할 때 사용자 네임스페이스 감지 문제를 수정했어요 moby/moby#43084. - 이미지 pull 중 연결 실패가 발생하면 이미지 매니페스트 다운로드를 재시도하도록 했어요 moby/moby#43333.
- 명령줄 참조 및 API 문서에서 여러 가지 수정을 했어요.
- 많은 양의 로그 메시지를 생성하는 컨테이너에서 "local" 로깅 드라이버를 사용할 때 OOM(메모리 부족)이 발생하는 것을 방지했어요 moby/moby#43165.
20.10.12
2021-12-13
이번 릴리스는 패키징 변경만 포함하고 있으며, docker scan 및 docker buildx 명령에 대한 업데이트를 제공해요. v0.11.0 이전 버전의 docker scan은 Log4j 2 CVE-2021-44228을 감지할 수 없어요. 이번 릴리스에서 업데이트된 docker scan 버전을 제공하니, 이미지에서 이 취약점을 스캔하는 데 사용해 보세요.
참고
Linux에서
docker scan명령은 현재 x86 플랫폼에서만 지원돼요. Linux의 다른 하드웨어 아키텍처용 패키지는 아직 제공되지 않아요.
docker scan 기능은 별도 패키지로 제공되며, 업그레이드 또는 설치 방법에 따라 docker scan이 자동으로 최신 버전으로 업데이트되지 않을 수 있어요. 아래 지침을 사용해서 docker scan을 최신 버전으로 업데이트하세요. Docker Engine을 업그레이드하지 않고 docker scan 패키지를 설치하거나 업그레이드할 때도 이 지침을 사용할 수 있어요.
.deb 기반 배포판(Ubuntu, Debian 등)에서는:
$ apt-get update && apt-get install docker-scan-plugin
rpm 기반 배포판(CentOS, Fedora 등)에서는:
$ yum install docker-scan-plugin
업그레이드 후 최신 버전의 docker scan이 설치되어 있는지 확인해 보세요:
$ docker scan --accept-license --version
Version: v0.12.0
Git commit: 1074dd0
Provider: Snyk (1.790.0 (standalone))
CVE-2021-44228에 관한 블로그 게시물을 읽고 docker scan 명령으로 이미지가 취약한지 확인하는 방법을 알아보세요.
패키징 (Packaging)
20.10.11
2021-11-17
중요
Go 1.16의 net/http 변경 사항으로 인해,
$HTTP_PROXY환경 변수로 구성된 HTTP 프록시는 더 이상 TLS(https://) 연결에 사용되지 않아요.https://URL에 대한 요청을 처리하려면$HTTPS_PROXY환경 변수도 설정해야 해요. Docker 데몬이 프록시 서버를 사용하도록 구성하는 방법은 데몬 프록시 구성에서 확인할 수 있어요.
배포 (Distribution)
- 모호한 OCI 매니페스트 파싱을 처리해서 CVE-2021-41190 / GHSA-mc8v-mgrf-8f4m을 완화했어요. 자세한 내용은 GHSA-xmmx-7jpf-fx42를 참고하세요.
Windows
- panic.log 파일에 읽기 전용 속성이 설정되던 문제를 수정했어요 moby/moby#42987.
패키징 (Packaging)
- CVE-2021-41190을 완화하기 위해 containerd를 v1.4.12로 업데이트했어요.
- Golang 런타임을 Go 1.16.10으로 업데이트했어요.
20.10.10
2021-10-25
중요
Go 1.16의 net/http 변경 사항으로 인해,
$HTTP_PROXY환경 변수로 구성된 HTTP 프록시는 더 이상 TLS(https://) 연결에 사용되지 않아요.https://URL에 대한 요청을 처리하려면$HTTPS_PROXY환경 변수도 설정해야 해요. Docker 데몬이 프록시 서버를 사용하도록 구성하는 방법은 HTTP/HTTPS 프록시 섹션에서 확인할 수 있어요.
빌더 (Builder)
- 플랫폼 일치 로직을 수정해서, Arm 머신에서 BuildKit을 사용할 때
docker build가 로컬 이미지 캐시에서 이미지를 찾지 못하던 문제를 해결했어요 moby/moby#42954.
런타임 (Runtime)
- 최신 버전의 Fedora와 Ubuntu를 기반으로 하는 컨테이너를 실행할 수 있도록 기본 seccomp 정책에
clone3syscall 지원을 추가했어요 moby/moby#42836. - Windows: 최근 Windows 변경으로 드러난 컨테이너 레이어의 희소 파일(sparse file) 처리 버그를 수정하기 위해 hcsshim 라이브러리를 업데이트했어요 moby/moby#42944.
docker stop이 영원히 멈출 수 있던 일부 상황을 수정했어요 moby/moby#42956.
Swarm
- 서비스 업데이트 시 실패해도 롤백되지 않던 문제를 수정했어요 moby/moby#42875.
패키징 (Packaging)
- Ubuntu 21.10 "Impish Indri" 및 Fedora 35용 패키지를 추가했어요.
docker scan을 v0.9.0으로 업데이트했어요.- Golang 런타임을 Go 1.16.9로 업데이트했어요.
20.10.9
2021-10-04
이번 릴리스는 CLI, 런타임의 보안 수정과 업데이트된 containerd.io 패키지 버전이 포함된 보안 릴리스예요.
중요
Go 1.16의 net/http 변경 사항으로 인해,
$HTTP_PROXY환경 변수로 구성된 HTTP 프록시는 더 이상 TLS(https://) 연결에 사용되지 않아요.https://URL에 대한 요청을 처리하려면$HTTPS_PROXY환경 변수도 설정해야 해요. Docker 데몬이 프록시 서버를 사용하도록 구성하는 방법은 HTTP/HTTPS 프록시 섹션에서 확인할 수 있어요.
클라이언트 (Client)
- CVE-2021-41092: 기본 인증 구성에 주소 필드가 설정되도록 보장해서, 자격 증명이 기본 레지스트리로 전송되는 것을 방지했어요.
런타임 (Runtime)
- CVE-2021-41089:
docker cp중 chroot 내부에 상위 디렉터리를 생성할 때, 특수하게 조작된 컨테이너가 호스트 파일 시스템의 기존 파일 권한을 변경하지 못하도록 했어요. - CVE-2021-41091: 파일 권한을 잠가서 권한이 없는 사용자가
/var/lib/docker에서 프로그램을 발견하고 실행하지 못하도록 했어요.
패키징 (Packaging)
알려진 이슈
이번 릴리스의 정적 패키지에 포함된
ctr바이너리는 정적으로 링크되지 않아서 alpine을 기본 이미지로 사용하는 Docker 이미지에서 실행되지 않아요.libc6-compat패키지를 설치하거나 이전 버전의ctr바이너리를 다운로드하는 방법으로 해결할 수 있어요. 자세한 내용은 관련 containerd 티켓을 참고하세요: containerd/containerd#5824.
- CVE-2021-36221 및 CVE-2021-39293 수정이 포함된 Golang 런타임을 Go 1.16.8로 업데이트했어요.
- CVE-2021-41103을 해결하기 위해 정적 바이너리와 containerd.io rpm 및 deb 패키지를 containerd v1.4.11 및 runc v1.0.2로 업데이트했어요.
- rpm 및 deb 패키지의 번들된 buildx 버전을 v0.6.3으로 업데이트했어요.
20.10.8
2021-08-03
중요
Go 1.16의 net/http 변경 사항으로 인해,
$HTTP_PROXY환경 변수로 구성된 HTTP 프록시는 더 이상 TLS(https://) 연결에 사용되지 않아요.https://URL에 대한 요청을 처리하려면$HTTPS_PROXY환경 변수도 설정해야 해요. Docker 데몬이 프록시 서버를 사용하도록 구성하는 방법은 HTTP/HTTPS 프록시 섹션에서 확인할 수 있어요.
지원 중단 (Deprecation)
- 암호화된 TLS 개인 키 지원을 지원 중단(deprecate)했어요. RFC 1423에 명시된 레거시 PEM 암호화는 설계상 안전하지 않아요. 암호문을 인증하지 않기 때문에, 공격자가 평문을 복구할 수 있는 패딩 오라클 공격에 취약해요. 암호화된 TLS 개인 키 지원은 이제 지원 중단으로 표시되었으며, 향후 릴리스에서 제거될 예정이에요 docker/cli#3219.
- Kubernetes 스택 지원을 지원 중단했어요. Compose on Kubernetes의 지원 중단에 따라, Docker CLI의
stack및context명령에서 Kubernetes 지원도 이제 지원 중단으로 표시되었으며, 향후 릴리스에서 제거될 예정이에요 docker/cli#3174.
클라이언트 (Client)
- Windows에서
Invalid standard handle identifier오류를 수정했어요 docker/cli#3132.
루트리스 (Rootless)
- SELinux 호스트에서
can't open lock file /run/xtables.lock: Permission denied오류가 발생하지 않도록 했어요 moby/moby#42462. - SELinux로 실행할 때 권한 거부 오류를 방지하기 위해 overlay2를 비활성화했어요 moby/moby#42462.
- openSUSE Tumbleweed에서
x509: certificate signed by unknown authority오류를 수정했어요 moby/moby#42462.
런타임 (Runtime)
--platform옵션을 사용해서 지정된 아키텍처와 일치하지 않는 단일 아키텍처 이미지를 pull할 때 경고를 출력하도록 했어요 moby/moby#42633.- cgroups v2로 실행할 때 잘못된
Your kernel does not support swap memory limit경고가 표시되던 문제를 수정했어요 moby/moby#42479. - Windows:
HcsShutdownComputeSystem이ERROR_PROC_NOT_FOUND오류를 반환할 때 컨테이너가 중지되지 않던 상황을 수정했어요 moby/moby#42613.
Swarm
- 노드가 이전 로드밸런서 IP를 정리하지 못해서 IP 주소가 겹칠 수 있던 가능성을 수정했어요 moby/moby#42538.
- 로그 브로커에서 "dispatcher is stopped" 교착 상태(deadlock)를 수정했어요 moby/moby#42537.
패키징 (Packaging)
알려진 이슈
이번 릴리스의 정적 패키지에 포함된
ctr바이너리는 정적으로 링크되지 않아서 alpine을 기본 이미지로 사용하는 Docker 이미지에서 실행되지 않아요.libc6-compat패키지를 설치하거나 이전 버전의ctr바이너리를 다운로드하는 방법으로 해결할 수 있어요. 자세한 내용은 관련 containerd 티켓을 참고하세요: containerd/containerd#5824.
- EOL에 도달한 Ubuntu 16.04 "Xenial" 및 Fedora 32용 패키징을 제거했어요 docker/docker-ce-packaging#560.
- Golang 런타임을 Go 1.16.6으로 업데이트했어요.
- rpm 및 deb 패키지의 번들된 buildx 버전을 v0.6.1로 업데이트했어요 docker/docker-ce-packaging#562.
- 정적 바이너리와 containerd.io rpm 및 deb 패키지를 containerd v1.4.9 및 runc v1.0.1로 업데이트했어요: docker/containerd-packaging#241, docker/containerd-packaging#245, docker/containerd-packaging#247.
20.10.7
2021-06-02
클라이언트 (Client)
- 지원 중단된 cgroups에 대한 경고를 표시하지 않도록 했어요 docker/cli#3099.
- Linux 및 macOS에서 컨테이너로
SIGURG신호가 전송되지 않도록 했어요. Go 런타임(Go 1.14부터)은 선점 가능한 syscall을 지원하기 위해 내부적으로SIGURG신호를 인터럽트로 사용해요. Docker CLI가 컨테이너에 연결된 상황에서 이러한 인터럽트가 컨테이너로 전달되고 있었어요. 이 수정으로 Docker CLI가SIGURG신호를 무시하도록 변경됐어요 docker/cli#3107, moby/moby#42421.
빌더 (Builder)
- BuildKit을 v0.8.3-3-g244e8cde 버전으로 업데이트했어요 moby/moby#42448:
- 실행기에서 exec 마운트의 상대 마운트 지점을 변환해서 runc v1.0.0-rc94 이상의 변경 사항을 해결했어요 moby/buildkit#2137.
- 이미지 push 시 5xx 오류가 발생하면 재시도하도록 추가했어요 moby/buildkit#2043.
- 와일드카드를 사용하는
COPY명령으로 복사된 파일의 이름을 바꿀 때 빌드 캐시가 무효화되지 않던 문제를 수정했어요. 참고로 이 변경으로 와일드카드를 사용하는 복사 명령의 기존 빌드 캐시가 무효화돼요 moby/buildkit#2018. - 마운트를 사용할 때 빌드 캐시가 무효화되지 않던 문제를 수정했어요 moby/buildkit#2076.
- 레거시 스키마 1 이미지를 사용할 때
FROM이미지가 캐시되지 않아 빌드가 실패하던 문제를 수정했어요 moby/moby#42382.
로깅 (Logging)
- Windows에서 데몬 로그가 덜 장황해지도록 hcsshim SDK를 업데이트했어요 moby/moby#42292.
루트리스 (Rootless)
- 사용자 네임스페이스가 활성화된 데몬에서 이미지를 빌드할 때 캐퍼빌리티가 적용되지 않던 문제를 수정했어요 moby/moby#42352.
네트워킹 (Networking)
- 커널 부트 파라미터
ipv6.disable=1이 설정된 환경에서 포트를 게시할 때 발생하던 문제와 내부 DNS 조회가 실패하는 교착 상태를 수정하기 위해 libnetwork를 업데이트했어요 moby/moby#42413.
기여 (Contrib)
slirp4netns포트 드라이버로 사용자랜드 프록시를 시작할 때 발생하던 타임아웃을 수정하기 위해 rootlesskit을 v0.14.2로 업데이트했어요 moby/moby#42294.- 루트리스 데몬에서 docker-in-docker를 실행할 때 "Device or resource busy" 오류를 수정했어요 moby/moby#42342.
패키징 (Packaging)
- CVE-2021-30465를 해결하기 위해 containerd를 v1.4.6, runc를 v1.0.0-rc95로 업데이트했어요 moby/moby#42398, moby/moby#42395, docker/containerd-packaging#234.
- containerd를 v1.4.5, runc를 v1.0.0-rc94로 업데이트했어요 moby/moby#42372, moby/moby#42388, docker/containerd-packaging#232.
- Docker Scan 플러그인 패키지(
docker-scan-plugin)를 v0.8로 업데이트했어요 docker/docker-ce-packaging#545.
20.10.6
2021-04-12
클라이언트 (Client)
- Docker CLI의 Apple Silicon(darwin/arm64) 지원이 추가됐어요 docker/cli#3042.
- config: v1.7.0 이전 버전의 config 파일
~/.dockercfg로 폴백할 때 지원 중단 경고를 출력하도록 했어요. 이 파일에 대한 지원은 향후 릴리스에서 제거될 예정이에요 docker/cli#3000.
빌더 (Builder)
- 클래식 빌더가 지원되지 않는 Dockerfile 옵션을 조용히 무시하던 문제를 수정하고, 대신 BuildKit을 활성화하라는 메시지를 표시하도록 했어요 moby/moby#42197.
로깅 (Logging)
- json-file: 간헐적으로 발생하던 예기치 않은 EOF 오류를 수정했어요 moby/moby#42174.
네트워킹 (Networking)
- Docker 20.10에서 포트를 매핑할 때 IPv6 주소가 기본적으로 바인딩되지 않게 된 회귀 문제를 수정했어요 moby/moby#42205.
- 암시적 IPv6 포트 매핑이 API 응답에 포함되지 않던 문제를 수정했어요. Docker 20.10 이전에는 게시된 포트가 기본적으로 IPv4와 IPv6 모두에서 접근 가능했지만, API는 IPv4(0.0.0.0) 매핑에 대한 정보만 포함했어요 moby/moby#42205.
- Docker 20.10에서 docker-proxy가 모든 경우에 종료되지 않던 회귀 문제를 수정했어요 moby/moby#42205.
- 컨테이너 제거 시 iptables 포워딩 규칙이 정리되지 않던 문제를 수정했어요 moby/moby#42205.
패키징 (Packaging)
- 정적 바이너리의 containerd를 v1.4.4로 업데이트했어요. apt/yum 저장소의 containerd.io 패키지에는 이미 이 업데이트가 별도로 적용되어 있었어요. CVE-2021-21334에 대한 수정이 포함돼요 moby/moby#42124.
- Debian/Raspbian 11 Bullseye, Ubuntu 21.04 Hirsute Hippo 및 Fedora 34용 패키지를 추가했어요 docker/docker-ce-packaging#521, docker/docker-ce-packaging#522, docker/docker-ce-packaging#533.
- Linux amd64용 Docker Scan CLI 플러그인을
docker-scan-plugin패키지로 제공하고,docker-ce-cli패키지의 권장 의존성으로 지정했어요 docker/docker-ce-packaging#537. - arm64용 VPNKit 바이너리를 포함했어요 moby/moby#42141.
플러그인 (Plugins)
docker plugin create가 이전 버전의 Docker와 호환되지 않는 플러그인을 만들던 문제를 수정했어요 moby/moby#42256.
루트리스 (Rootless)
- RootlessKit을 v0.14.1로 업데이트했어요(v0.14.0, v0.13.2도 참고) moby/moby#42186, moby/moby#42232.
- dockerd-rootless-setuptool.sh: "rootless" CLI 컨텍스트를 생성하도록 했어요 moby/moby#42109.
- dockerd-rootless.sh: root로 실행되는 것을 금지했어요 moby/moby#42072.
- 기존 마운트를 바인드 마운트할 때 "operation not permitted" 오류가 발생하던 문제를 수정했어요 moby/moby#42233.
- overlay2: "createDirWithOverlayOpaque(...) ... input/output error"를 수정했어요 moby/moby#42235.
- overlay2: "userxattr" 옵션(커널 5.11)을 지원했어요 moby/moby#42168.
- btrfs: 권한이 없는 사용자가 서브볼륨을 삭제할 수 있도록 허용했어요(커널 >= 4.18) moby/moby#42253.
- cgroup2: cgroup v2를 실험적 기능에서 정식 기능으로 전환했어요 moby/moby#42263.
20.10.5
2021-03-02
클라이언트 (Client)
docker start --attach에서 멈추는 문제를 수정하고, 불필요한Unsupported signal: <nil>. Discarding메시지가 표시되지 않도록 docker/cli#2960을 되돌렸어요 docker/cli#2987.
20.10.4
2021-02-26
빌더 (Builder)
- 빈 레이어가 있는 인라인 캐시 가져오기에서 잘못된 캐시 일치가 발생하던 문제를 수정했어요 moby/moby#42061.
- BuildKit을 v0.8.2로 업데이트했어요 moby/moby#42061.
- resolver: 토큰 가져오기 실패 시 오류가 캐시되지 않도록 했어요.
- fileop: 입력의 인덱스를 포함하도록 체크섬을 수정해서 특정 캐시 미스가 발생하지 않도록 했어요.
- 마운트 참조가 있는 타입 오류의 참조 카운트 문제를 수정했어요(
invalid mutable ref오류 수정). - git: 서브모듈을 다른 자격 증명으로 클론할 수 있도록 메인 원격 접근에만 토큰을 설정하도록 했어요.
- pull 후
/var/lib/docker/buildkit/content/blobs/sha256에서 blob이 삭제되도록 보장했어요. 이전 상태를 정리하려면builder prune을 실행하세요 moby/moby#42065. - 병렬 pull 동기화 회귀 문제를 수정했어요 moby/moby#42049.
- libnetwork 상태 파일이 누출되지 않도록 했어요 moby/moby#41972.
클라이언트 (Client)
- config 파일이 없을 때
docker login에서 패닉이 발생하던 문제를 수정했어요 docker/cli#2959. WARNING: Error loading config file: .dockercfg: $HOME is not defined오류를 수정했어요 docker/cli#2958.
런타임 (Runtime)
- docker info: 처리할 수 없는 경고를 표시하지 않도록 했어요 moby/moby#41958.
- XGlobalHeader에 대한 상위 디렉터리를 생성하지 않도록 했어요 moby/moby#42017.
- 누락된 디렉터리를 생성할 때 0755 권한을 사용하도록 했어요 moby/moby#42017.
- 이미지 구성에서 일치하는 플랫폼이 없을 때 매니페스트 목록으로 폴백하도록 했어요 moby/moby#42045, moby/moby#41873.
- 커스텀 기본 런타임이 구성된 환경에서 데몬 패닉이 발생하던 문제를 수정했어요 moby/moby#41974.
- 데몬 구성이 비어 있을 때 패닉이 발생하던 문제를 수정했어요 moby/moby#41976.
- 잘못된 장치 cgroup 규칙으로 컨테이너를 시작할 때 데몬 패닉이 발생하던 문제를 수정했어요 moby/moby#42001.
- 사용자 이름과 UID가 일치할 때 userns-remap 옵션 문제를 수정했어요 moby/moby#42013.
- static: runc 바이너리를 v1.0.0-rc93으로 업데이트했어요 moby/moby#42014.
로거 (Logger)
labels가 설정되지 않아도labels-regex구성이 적용되도록 했어요 moby/moby#42046.- 긴 로그 메시지를 올바르게 처리해서 awslogs가 비차단 모드에서 16kB보다 큰 이벤트를 분할하지 않도록 했어요 moby/moby#41975.
루트리스 (Rootless)
- systemd KillMode를 mixed로 설정해서 중지 시 서비스가 멈추지 않도록 했어요 moby/moby#41956.
- dockerd-rootless.sh: 오타 방지 장치를 추가했어요 moby/moby#42070.
- IPv6 주소 처리 문제를 수정하기 위해 rootlesskit을 v0.13.1로 업데이트했어요 moby/moby#42025.
- userns 내부에서 FIFO mknod를 허용했어요 moby/moby#41957.
보안 (Security)
- profiles: seccomp: Linux 5.11 syscall 목록으로 업데이트했어요 moby/moby#41971.
Swarm
- 재시작 후 하트비트가 유지되지 않던 문제를 수정했어요 moby/moby#42060.
- 잠재적으로 중단될 수 있던 태스크를 수정했어요 moby/moby#42060.
--update-order또는--rollback-order중 하나만 제공될 때 두 플래그 모두 올바르게 동작하도록 수정했어요 docker/cli#2963.- 일부 상황에서
docker service rollback이 0이 아닌 종료 코드를 반환하던 문제를 수정했어요 docker/cli#2964. docker service rollback에서 진행률 표시줄 방향이 일관되지 않던 문제를 수정했어요 docker/cli#2964.
20.10.3
2021-02-01
보안 (Security)
- CVE-2021-21285: 잘못된 이미지로 인해 docker 데몬이 크래시되지 않도록 방지했어요.
- CVE-2021-21284: 리매핑된 root가 docker 상태에 접근하지 못하도록 파일 권한을 잠갔어요.
- BuildKit으로 빌드할 때 AppArmor 및 SELinux 프로필이 적용되도록 보장했어요.
클라이언트 (Client)
- 컨텍스트를 가져오기 전에 검사해서 추출된 파일이 컨텍스트 저장소를 벗어나지 않도록 했어요.
- Windows: 현재 디렉터리에서 특정 바이너리가 실행되지 않도록 했어요 docker/cli#2950.
20.10.2
2021-01-04
런타임 (Runtime)
- 재시작 정책이 있지만 계속 시작에 실패하는 컨테이너를 복원할 때 데몬 시작이 멈추던 문제를 수정했어요 moby/moby#41729.
- overlay2: data-root가 24바이트 길이일 때 컨테이너를 빌드하거나 실행하지 못하던 off-by-one 오류를 수정했어요 moby/moby#41830.
- systemd: 종료할 때
sd_notify STOPPING=1을 보내도록 했어요 moby/moby#41832.
네트워킹 (Networking)
- IPv6 포트 포워딩을 수정했어요 moby/moby#41805, moby/libnetwork#2604.
Swarm
replicated-job및global-job서비스 모드에 대한 필터링을 수정했어요 moby/moby#41806.
패키징 (Packaging)
- buildx를 v0.5.1로 업데이트했어요 docker/docker-ce-packaging#516.
20.10.1
2020-12-14
빌더 (Builder)
- buildkit: 다양한 버그 수정이 포함된 v0.8.1로 업데이트했어요 moby/moby#41793.
패키징 (Packaging)
- 시작 순서 충돌로 인해 docker가 시작되지 않을 수 있던 systemd 유닛의 변경을 되돌렸어요 docker/docker-ce-packaging#514.
- buildx를 v0.5.0으로 업데이트했어요 docker/docker-ce-packaging#515.
20.10.0
2020-12-08
지원 중단 / 제거 (Deprecation / Removal)
모든 지원 중단 기능에 대한 개요는 지원 중단된 엔진 기능 페이지를 참고하세요.
- pull-by-digest를 지원하지 않는 비준수 레지스트리에서
docker pull을 실행할 때 경고 및 지원 중단 공지를 표시하도록 했어요 docker/cli#2872. - 인증되지 않은 TCP 접근에 대해 더 엄격한 경고 및 지원 중단 공지를 표시하도록 했어요 moby/moby#41285.
- KernelMemory(
docker run --kernel-memory)를 지원 중단했어요 moby/moby#41254, docker/cli#2652. aufs스토리지 드라이버를 지원 중단했어요 docker/cli#1484.- 외부 k/v 저장소를 사용하는 호스트 디스커버리와 오버레이 네트워크를 지원 중단했어요 moby/moby#40614, moby/moby#40510.
- Dockerfile 레거시
ENV name value구문을 지원 중단하고,ENV name=value를 사용하도록 했어요 docker/cli#2743. - API v1.41 이상에서 지원 중단된 "filter" 파라미터를 제거했어요 moby/moby#40491.
- push 시 distribution manifest v2 스키마 1을 비활성화했어요 moby/moby#41295.
- 오래된 docker 클라이언트(<= 1.12)를 깨뜨리던 hack MalformedHostHeaderOverride를 제거했어요. 이 경우
DOCKER_API_VERSION을 설정하세요 moby/moby#39076. - "docker engine" 하위 명령을 제거했어요 docker/cli#2207.
- "dab" 파일의 실험적 "deploy"를 제거했어요 docker/cli#2216.
- 지원 중단된
docker search --automated및--stars플래그를 제거했어요 docker/cli#2338. - 엔진 라벨에서 예약된 네임스페이스를 더 이상 허용하지 않도록 했어요 docker/cli#2326.
API
- API 버전을 v1.41로 업데이트했어요.
- metrics API에 "experimental"을 요구하지 않도록 했어요 moby/moby#40427.
GET /events는 이제 리소스 정리(prune)가 완료된 후prune이벤트를 반환해요 moby/moby#41259.container,network,volume,image,builder에 대한 prune 이벤트가 반환되며, 회수된 공간의 크기(바이트)를 나타내는reclaimed속성을 포함해요.- stats를 미리 준비하지 않는
one-shotstats 옵션을 추가했어요 moby/moby#40478. - 시스템 정보 API(
/info)에 OS 버전 정보를 추가했어요 moby/moby#38349. - docker info에 DefaultAddressPools를 추가했어요 moby/moby#40714.
- 서비스에 PidsLimit를 설정할 수 있는 API 지원을 추가했어요 moby/moby#39882.
빌더 (Builder)
- buildkit, dockerfile: 실험적 dockerfile
#syntax지시문을 지정하지 않아도RUN --mount옵션을 지원하게 됐어요 moby/buildkit#1717. - dockerfile:
ARG명령이ENV와 유사하게 같은 줄에서 여러 빌드 인자를 정의할 수 있게 됐어요 moby/buildkit#1692. - dockerfile:
ADD의--chown플래그가 파라미터 확장을 허용하게 됐어요 moby/buildkit#1473. - buildkit: 인증 토큰 가져오기가 클라이언트 측으로 이동했어요(클라이언트가 지원하는 경우). 비밀번호가 더 이상 빌드 데몬으로 유출되지 않으며, 사용자는 자격 증명이나 토큰에 접근할 때 빌드 출력에서 확인할 수 있어요 moby/buildkit#1660.
- buildkit: push 및 pull 중 레지스트리와 통신할 때 연결 오류가 발생하면 재시도하도록 했어요 moby/buildkit#1791.
- buildkit: Git 소스가 빌드 시크릿을 통한 토큰 인증을 지원하게 됐어요 moby/moby#41234, docker/cli#2656, moby/buildkit#1533.
- buildkit: Git 소스에서 빌드할 때 인증을 위해 SSH 소켓 포워딩을 지원하게 됐어요 moby/buildkit#1782.
- buildkit: 과도한 로그를 생성하는 빌드로 인해 크래시가 발생하거나 빌드가 느려지지 않도록 했어요. 필요한 경우 클리핑이 수행돼요 moby/buildkit#1754.
- buildkit: 기본 Seccomp 프로필을 Docker가 제공하는 프로필로 변경했어요 moby/buildkit#1807.
- buildkit: Windows에서 SSH 에이전트 소켓 노출 지원이 개선됐어요 moby/buildkit#1695.
- buildkit:
--progress=plain사용 시 기본적으로 잘림(truncation)을 비활성화했어요 moby/buildkit#1435. - buildkit: 여러 빌드가 공유하는 동안 클라이언트 세션이 끊어지는 경우를 더 잘 처리하도록 했어요 moby/buildkit#1551.
- buildkit: secrets: env로 시크릿을 제공할 수 있게 했어요 moby/moby#41234, docker/cli#2656, moby/buildkit#1534.
- 시크릿 값을 파일에 저장하는 대신
--secret id=foo,env=MY_ENV를 사용할 수 있어요. --secret id=GIT_AUTH_TOKEN은 파일이 없고 env가 존재하면 env를 로드해요.
- 시크릿 값을 파일에 저장하는 대신
- buildkit: 미러 폴백, 비보안 TLS 및 커스텀 TLS 구성을 지원하게 됐어요 moby/moby#40814.
- buildkit: remotecache: 결과를 탐색할 때 각 항목을 한 번만 방문하도록 했어요 moby/moby#41234, moby/buildkit#1577.
- 더 큰 그래프에서 성능과 CPU 사용량이 개선됐어요.
- buildkit: 로컬 이미지 플랫폼이 일치하지 않으면 원격을 확인하도록 했어요 moby/moby#40629.
- buildkit: image export: 새 레이어 blob을 생성할 때 올바른 미디어 타입을 사용하도록 했어요 moby/moby#41234, moby/buildkit#1541.
- buildkit: progressui: 로그 시간 형식을 수정했어요 moby/moby#41234, docker/cli#2656, moby/buildkit#1549.
- buildkit: 병렬 push 시 containerd 문제를 완화했어요 moby/moby#41234, moby/buildkit#1548.
- buildkit: inline cache: 중복 blob 처리 문제를 수정했어요 moby/moby#41234, moby/buildkit#1568.
- https://github.com/moby/buildkit/issues/1388 cache-from이 불안정하게 동작하던 문제를 수정했어요.
- https://github.com/moby/moby/issues/41219 캐시된 레이어에서 빌드한 이미지에 데이터가 누락되던 문제를 수정했어요.
- 원격 컨텍스트 URL에
ssh://를 허용했어요 moby/moby#40179. - builder: 레거시 빌드의 세션 처리를 제거했어요(실험적 기능이었음) moby/moby#39983.
클라이언트 (Client)
- CLI에 swarm jobs 지원을 추가했어요 docker/cli#2262.
docker push에-a/--all-tags를 추가했어요 docker/cli#2220.- Kubernetes 사용자 이름/비밀번호 인증 지원을 추가했어요 docker/cli#2308.
run및create명령에--pull=missing|always|never를 추가했어요 docker/cli#1498.docker exec에 파일에서 환경 변수를 파싱하는--env-file플래그를 추가했어요 docker/cli#2602.--tail옵션의 약어-n을 추가했어요 docker/cli#2646.- service inspect "pretty" 형식에 log-driver 및 옵션을 추가했어요 docker/cli#1950.
- docker run:
--cgroupns로 cgroup 네임스페이스 모드를 지정할 수 있어요 docker/cli#2024. docker manifest rm명령으로 로컬 저장소에서 매니페스트 목록 초안을 제거할 수 있어요 docker/cli#2449.- "docker version" 및 "docker info"에 "context"를 추가했어요 docker/cli#2500.
- 플랫폼 플래그를 컨테이너 생성 API로 전달하도록 했어요 docker/cli#2551.
docker ps --format플래그에 업타임 및 헬스 체크에 대한 추가 세부 정보 없이 컨테이너 상태를 출력하는.State플레이스홀더가 추가됐어요 docker/cli#2000.- docker-compose 스키마 v3.9 지원을 추가했어요 docker/cli#2073.
- docker push
--quiet지원을 추가했어요 docker/cli#2197. - BuildKit이 활성화된 경우 BuildKit이 지원하지 않는 플래그를 숨기도록 했어요 docker/cli#2123.
docker rm -v플래그 설명을 업데이트해서 익명(이름 없는) 볼륨만 제거한다는 점을 명확히 했어요 docker/cli#2289.- docker services의 태스크 출력을 개선했어요 docker/cli#2341.
- docker info: CLI 플러그인을 알파벳순으로 나열하도록 했어요 docker/cli#2236.
docker service update에서--label-add/--label-rm,--container-label-add/--container-label-rm,--env-add/--env-rm플래그의 처리 순서를 수정해서 기존 값을 교체할 수 있도록 했어요 docker/cli#2668.- 하나 이상의 컨테이너가 존재하지 않을 때
docker rm --force가 0이 아닌 종료 코드를 반환하던 문제를 수정했어요 docker/cli#2678. cache대신total_inactive_file을 사용하여 메모리 통계 표시를 개선했어요 docker/cli#2415.- 과도한 앨리어싱이 있는 YAML 파일에 대한 대비책을 마련했어요 docker/cli#2117.
- source 필드만 있는 config 또는 secret을 설정할 때 고급 구문을 사용할 수 있게 했어요 docker/cli#2243.
auth가 비어 있어도username및password인증이 포함된 config 파일을 읽을 수 있도록 수정했어요 docker/cli#2122.- docker cp: 대상 상태 확인 실패 시 NPE가 발생하지 않도록 했어요 docker/cli#2221.
- config: config 파일의 소유권과 권한을 보존하도록 했어요 docker/cli#2228.
로깅 (Logging)
- 모든 로깅 드라이버에서
docker logs읽기를 지원하게 됐어요(최선 노력) moby/moby#40543. - 인덱스 확인이 활성화된 Splunk HEC와 함께 작동하도록
splunk-index-acknowledgment로그 옵션을 추가했어요 moby/moby#39987. - journald 로그에 부분 메타데이터를 추가했어요 moby/moby#41407.
- 로그 파일 리더의 할당을 줄였어요 moby/moby#40796.
- Fluentd: fluentd-async, fluentd-request-ack를 추가하고 fluentd-async-connect를 지원 중단했어요 moby/moby#39086.
런타임 (Runtime)
- cgroup2를 지원하게 됐어요 moby/moby#40174, moby/moby#40657, moby/moby#40662.
- cgroup2: 사용 가능할 때 기본적으로 "systemd" cgroup 드라이버를 사용하도록 했어요 moby/moby#40846.
- 새로운 스토리지 드라이버: fuse-overlayfs moby/moby#40483.
- containerd 바이너리를 v1.4.3으로 업데이트했어요 moby/moby#41732.
docker push가 이제 모든 태그 대신 기본적으로latest태그를 사용해요 moby/moby#40302.- config 파일에 max-download-attempts를 추가해서 이미지 pull 중 연결이 끊겼을 때 재연결 시도 횟수를 변경할 수 있게 됐어요 moby/moby#39949.
- 이제 기본값인
io.containerd.runc.v2런타임을 사용하여 containerd v2 shim을 지원하게 됐어요 moby/moby#41182. - cgroup v1: 기본 런타임을 io.containerd.runc.v2로 변경했어요. containerd v1.3.0 이상이 필요하며, v1.3.5 이상을 권장해요 moby/moby#41210.
- 컨테이너를 자체 cgroup 네임스페이스에서 시작하도록 했어요 moby/moby#38377.
- CIFS 볼륨에 대한 DNS 조회를 활성화했어요 moby/moby#39250.
- 실제 사용 가능한 메모리를 추정할 때 MemFree 대신 MemAvailable을 사용하도록 했어요 moby/moby#39481.
docker run의--device플래그가 이제 컨테이너가 privileged 모드로 시작될 때도 적용돼요 moby/moby#40291.- 예약된 내부 라벨을 강제 적용했어요 moby/moby#40394.
- 컨테이너 시작 중 런타임의 더 높은 메모리 사용량을 고려하여 최소 메모리 제한을 6M로 올렸어요 moby/moby#41168.
- runc v1.0.0-rc92를 vendor로 포함했어요 moby/moby#41344, moby/moby#41317.
- info: blkio cgroup 지원 누락에 대한 경고를 추가했어요 moby/moby#41083.
- 컨테이너 생성 시 플랫폼 사양을 허용하게 됐어요 moby/moby#40725.
- 공백이 있는 사용자 및 그룹 이름을 조회할 때의 처리 문제를 수정했어요 moby/moby#41377.
네트워킹 (Networking)
- Linux의 dockerd에서 host.docker.internal을 지원하게 됐어요 moby/moby#40007.
- 연결된 컨테이너의 IPv6 주소를 /etc/hosts에 포함하도록 했어요 moby/moby#39837.
--ip6tables가 IPv6 iptables 규칙을 활성화해요(실험적 기능일 때만) moby/moby#41622.- hostname이 컨테이너 이름과 다르면 hostname에 대한 별칭을 추가했어요 moby/moby#39204.
- DNS 서버 선택을 개선했어요(systemd 사용 시) moby/moby#41022.
- firewalld docker 영역에 docker 인터페이스를 추가했어요 moby/moby#41189, moby/libnetwork#2548.
- CentOS8의 DNS 문제를 수정했어요 docker/for-linux#957.
- FirewallBackend=nftables로 Firewalld를 실행하는 RHEL 8의 포트 포워딩 문제를 수정했어요 moby/libnetwork#2496.
- 'failed to get network during CreateEndpoint'를 보고하던 문제를 수정했어요 moby/moby#41189, moby/libnetwork#2554.
- IPv6 라우터 알림 실패 시 오류를 기록하는 대신 비활성화하도록 했어요 moby/moby#41189, moby/libnetwork#2563.
- 특정 경우에
--default-address-pool옵션을 무시하지 않도록 했어요 moby/moby#40711. - 잘못된 주소 풀로 오류를 생성하도록 했어요 moby/moby#40808, moby/libnetwork#2538.
- IPTableEnable=false일 때
DOCKER-USER체인이 생성되지 않던 문제를 수정했어요 moby/moby#40808, moby/libnetwork#2471. - systemd 환경에서 시작 시 패닉이 발생하던 문제를 수정했어요 moby/moby#40808, moby/libnetwork#2544.
- 컨테이너가 macvlan 내부 네트워크를 통해 통신하지 못하던 문제를 수정했어요 moby/moby#40596, moby/libnetwork#2407.
- InhibitIPv4 nil 패닉을 수정했어요 moby/moby#40596.
- Windows 오버레이 네트워크 삭제 시 VFP 누출을 수정했어요 moby/moby#40596, moby/libnetwork#2524.
패키징 (Packaging)
- docker.service: 유닛 파일의 After=에 multi-user.target을 추가했어요 moby/moby#41297.
- docker.service: 소켓 활성화를 허용했어요 moby/moby#37470.
- seccomp: dockerd에서 libseccomp에 대한 의존성을 제거했어요 moby/moby#41395.
루트리스 (Rootless)
- rootless: 실험적 기능에서 정식 기능으로 승격했어요 moby/moby#40759.
- dockerd-rootless-setuptool.sh를 추가했어요 moby/moby#40950.
--exec-opt native.cgroupdriver=systemd를 지원하게 됐어요 moby/moby#40486.
보안 (Security)
- Glibc에서 chroot 내부의 nsswitch 기반 구성을 로드할 때 발생하던 CVE-2019-14271을 수정했어요 moby/moby#39612.
- seccomp:
clock_adjtime을 허용 목록에 추가했어요. 시간 조정에는 여전히CAP_SYS_TIME이 필요해요 moby/moby#40929. - seccomp: 기본 seccomp 프로필에 openat2 및 faccessat2를 추가했어요 moby/moby#41353.
- seccomp: 기본 seccomp 프로필에서 'rseq' syscall을 허용했어요 moby/moby#41158.
- seccomp: membarrier syscall을 허용했어요 moby/moby#40731.
- seccomp: io-uring 관련 시스템 콜을 허용 목록에 추가했어요 moby/moby#39415.
- 캐퍼빌리티 없이 ping 소켓과 권한 있는 포트를 허용하는 기본 sysctl을 추가했어요 moby/moby#41030.
- clone syscall에 대한 seccomp 프로필을 수정했어요 moby/moby#39308.
Swarm
- swarm jobs 지원을 추가했어요 moby/moby#40307.
- stack/service 명령에 캐퍼빌리티 지원을 추가했어요 docker/cli#2687, docker/cli#2709, moby/moby#39173, moby/moby#41249.
- 서비스 Running 및 Desired 태스크 수를 전송하는 기능을 추가했어요 moby/moby#39231.
- service:
--mount type=bind,bind-nonrecursive를 지원하게 됐어요 moby/moby#38788. - Swarm 서비스에서 ulimits를 지원하게 됐어요 moby/moby#41284, docker/cli#2712.
- 워커에서 서비스 로그가 고루틴을 누출할 수 있던 문제를 수정했어요 moby/moby#40426.