Docker Engine 18.09 릴리스 노트
Docker Engine 18.09 릴리스 노트
Docker Engine 18.09의 변경 사항을 정리한 릴리스 노트예요. 이 버전부터 daemon, client, container runtime이 각각 별도의 패키지로 제공되기 때문에, 업데이트할 때는 모든 패키지를 함께 업데이트해야 해요. 예를 들어 Ubuntu에서는 아래 명령으로 설치할 수 있어요.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
각 Linux 배포판에 맞는 자세한 설치 방법은 공식 설치 문서를 참고하세요.
출처: 공식문서
18.09.9
2019-09-03
Client
클라이언트 쪽에서는 Windows가 아닌 환경에서 Windows 절대 경로를 감지하던 문제를 고쳤어요. Windows에서 delegation.key 파일의 키를 로드하지 못하던 문제도 해결했고, bash와 zsh용 완성 스크립트도 업데이트했어요.
- Windows absolute path detection on non-Windows 수정 docker/cli#1990
- Windows에서
delegation.key키 로드 거부 문제 수정 docker/cli#1968 - bash/zsh 완성 스크립트 업데이트
Logging
journald 로그를 읽을 때 발생하던 문제를 수정했어요.
Networking
네트워킹 관련해서 몇 가지 문제를 고쳤어요. 네트워킹이 비활성화된 컨테이너에 네트워크를 연결할 때 패닉이 발생하지 않도록 막았고, 애플리케이션의 서비스 포트가 무작위로 사용 불가능해지던 문제를 해결했어요. 또 --config-only 네트워크와 --config-from 네트워크가 비정상 종료될 때 정리가 제대로 되지 않던 문제도 수정했어요.
- 네트워킹 비활성화 컨테이너에 네트워크 연결 시 패닉 방지 moby/moby#39589
- 서비스 포트가 무작위로 사용 불가능해지는 문제 수정 docker/libnetwork#2069
--config-only/--config-from네트워크 정리 문제 수정 docker/libnetwork#2373
Runtime
Go 1.11.13으로 업데이트했어요. XFS 디스크 쿼터를 사용할 때 엔진 패닉이 발생할 수 있는 잠재적 문제도 해결했어요.
- Go 1.11.13 업데이트
- XFS 디스크 쿼터 사용 시 엔진 패닉 가능성 수정 moby/moby#39644
Swarm
Swarm에서 grpc: received message larger than max 오류를 수정했어요. 여러 작업이 있는 노드를 제거할 수 없던 문제도 해결했어요.
18.09.8
2019-07-17
Runtime
디버그 모드에서 Docker Engine을 실행할 때 시크릿이 로그 파일에 노출되지 않도록 마스킹 처리했어요. CVE-2019-13509 취약점 관련인데, 디버그 모드에서 docker stack deploy로 외부 시크릿이 아닌 시크릿을 포함한 스택을 재배포하면 로그에 시크릿이 포함될 수 있었어요.
Client
롤백 구성에서 parallelism과 max_failure_ratio 필드의 타입 보간 문제를 수정했어요.
Known Issue
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.7
2019-06-27
Builder
주석만 있는 Dockerfile을 빌드할 때 발생하던 패닉 오류를 수정했어요. GCR 인증 문제에 대한 우회책을 추가했고, Builder-next에서 GCR 토큰 캐시 구현의 버그도 고쳤어요.
- 주석만 있는 Dockerfile 빌드 시 패닉 수정 moby/moby#38487
- GCR 인증 문제 우회책 추가 moby/moby#38246
- Builder-next GCR 토큰 캐시 버그 수정 moby/moby#39183
Networking
--network-rm으로 네트워크를 제거하지 못하던 오류를 수정했어요.
Runtime
aufs와 레이어 스토어의 성능 최적화를 추가해서 대규모 병렬 컨테이너 생성/제거를 더 빠르게 처리할 수 있게 됐어요. containerd를 1.2.6으로 업데이트했고, CVE-2018-15664 심볼릭 링크 교환 공격을 디렉터리 트래버설과 함께 수정했어요. Windows에서 docker service create --limit-cpu 지원을 고쳤고, daemon의 mirrors 검증 문제도 해결했어요. 이제 Docker는 ID 맵에서 UID와 GID 범위 정렬을 더 이상 지원하지 않아요.
- aufs/layer store 성능 최적화 moby/moby#39107, moby/moby#39135
- containerd 1.2.6 업데이트 moby/moby#39016
- CVE-2018-15664 수정 moby/moby#39357
- Windows
docker service create --limit-cpu지원 수정 moby/moby#39190 - daemon mirrors 검증 문제 수정 moby/moby#38991
- ID 맵 UID/GID 범위 정렬 지원 중단 moby/moby#39288
Logging
로거 플러그인에서 큰 로그 라인을 허용하도록 수정했어요.
Known Issue
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.6
2019-05-06
Builder
DOCKER_BUILDKIT=1일 때 여러 <src>를 가진 COPY와 ADD가 캐시를 무효화하지 않도록 수정했어요.
Networking
에이전트가 닫힐 때 클러스터 프로바이더를 정리하도록 했어요. Windows에서는 사용자가 호스트 포트를 지정하지 않으면 임의의 호스트 포트를 선택하도록 변경했어요.
- 클러스터 프로바이더 정리 docker/libnetwork#2354
- Windows 임의 호스트 포트 선택 docker/libnetwork#2369
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.5
2019-04-11
Builder
DOCKER_BUILDKIT=1 docker build --squash .. 명령이 제대로 동작하도록 수정했어요.
Client
tty 초기 크기 오류를 수정했어요. dial-stdio 고루틴 누수 문제도 고쳤고, 배포 추적에 사용되는 스택 인포머의 셀렉터도 수정했어요.
- tty 초기 크기 오류 수정 docker/cli#1775
- dial-stdio 고루틴 누수 수정 docker/cli#1795
- 스택 인포머 셀렉터 수정 docker/cli#1794
Networking
systemd-resolved를 사용할 때 network=host가 잘못된 resolv.conf를 사용하던 문제를 수정했어요. Windows에서 부하가 걸릴 때 ARP 엔트리가 무작위로 손상되던 문제도 고쳤어요.
network=hostresolv.conf 문제 수정 docker/engine#180- Windows ARP 엔트리 손상 문제 수정 docker/engine#192
Runtime
재시작 정책이 있는 중지된 컨테이너를 Restarting 상태로 표시하도록 변경했어요. exec 실행 시 원래 프로세스 스펙을 사용하도록 수정했어요.
- 중지된 컨테이너
Restarting표시 docker/engine#181 - exec 원래 프로세스 스펙 사용 docker/engine#178
Swarm Mode
노드가 삭제될 때 작업 리소스가 누수되던 문제를 수정했어요.
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.4
2019-03-28
Builder
git ref 검증을 추가해서 CVE-2019-13139 취약점을 수정했어요. git ref가 플래그로 잘못 해석되지 않도록 했어요.
Runtime
파일 이름이 100자를 넘을 때 docker cp에서 발생하던 오류를 수정했어요. layer/layer_store에서 NewInputTarStream 리소스가 제대로 해제되도록 고쳤고, GetConfigs의 GRPC 한도를 늘렸어요. containerd를 1.2.5로 업데이트했어요.
docker cp100자 초과 파일명 오류 수정 moby/moby#38634NewInputTarStream리소스 해제 수정 moby/moby#38413GetConfigsGRPC 한도 증가 moby/moby#38800- containerd 1.2.5 업데이트 docker/engine#173
Swarm Mode
Swarm에 노드를 조인할 때 nil 포인터 예외가 발생하던 문제를 수정했어요. HTTP 프록시가 설정된 경우 Swarm 노드가 마스터로 조인할 수 없던 문제도 해결했어요.
- nil 포인터 예외 수정 moby/moby#38618
- HTTP 프록시 설정 시 마스터 조인 불가 문제 수정 moby/moby#36951
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.3
2019-02-28
Networking fixes
Windows에서 네트워크 ID 재생성을 피해서 네트워크 참조가 깨지지 않도록 했어요. 독립 컨테이너에서 네트워크를 지정할 때 --restart always 플래그가 동작하지 않던 문제를 수정했어요. 매니저가 오버레이 네트워크에 연결되어 있지 않을 때 networkdb의 IPAM 상태와 관련된 문제도 고쳤어요.
- Windows 네트워크 ID 재생성 방지 docker/engine#149
- Windows
--restart always플래그 문제 수정 (docker/escalation#1037) - networkdb IPAM 상태 문제 수정 (docker/escalation#1049)
Runtime fixes and updates
Go 1.10.8로 업데이트했어요. 컨테이너 이름 생성기의 이름 목록을 수정했어요. 기존 폴더를 복사할 때 대상 파일시스템이 xattr를 지원하지 않으면 xattr 설정 오류를 무시하도록 했어요. Graphdriver에서 'character-device' 비트가 설정된 경우 'device' 모드를 감지하지 못하던 문제를 수정했어요. containerd 연결 실패 시 nil 포인터 역참조가 발생하던 문제를 고쳤고, 시작 실패 시 오래된 containerd 객체를 삭제하도록 했어요.
- Go 1.10.8 업데이트
- 컨테이너 이름 생성기 이름 수정 docker/engine#159
- xattr 미지원 파일시스템에서 오류 무시 docker/engine#135
- Graphdriver 'device' 모드 감지 수정 docker/engine#160
- containerd 연결 실패 nil 포인터 수정 docker/engine#162
- 시작 실패 시 stale containerd 객체 삭제 docker/engine#154
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.2
2019-02-11
Security fixes
보안 취약점을 해결하기 위해 runc를 업데이트했어요. 특수하게 조작된 컨테이너가 호스트에서 관리자 권한을 얻을 수 있는 치명적인 취약점(CVE-2019-5736)을 수정했어요. Ubuntu 14.04에서 3.13 커널을 사용하는 고객은 지원되는 Ubuntu 4.x 커널로 업그레이드해야 해요. 자세한 내용은 Docker 블로그 포스트를 참고하세요.
runc업데이트로 CVE-2019-5736 수정- Ubuntu 14.04 3.13 커널 사용자는 4.x 커널로 업그레이드 필요
- Docker 블로그 포스트
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.1
2019-01-09
Important notes about this release
18.09 이전 버전에서는 containerd를 Docker Engine 데몬이 관리했어요. 그런데 18.09부터는 systemd가 containerd를 관리해요. 따라서 docker.service의 systemd 설정에서 마운트 관련 설정(예: MountFlags=slave)을 변경하면 Docker Engine 데몬과 containerd 사이의 상호작용이 깨져서 컨테이너를 시작할 수 없게 돼요. 다음 명령으로 현재 MountFlags 값을 확인할 수 있어요.
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
만약 이 명령이 MountFlags에 비어 있지 않은 값을 출력한다면 설정을 업데이트하고 docker 서비스를 재시작해야 해요.
Security fixes
Go 언어를 1.10.6으로 업그레이드해서 CVE-2018-16873, CVE-2018-16874, CVE-2018-16875를 해결했어요. authz 플러그인에서 0 길이 콘텐츠와 경로 검증 문제를 수정했고, 마스킹된 경로에 /proc/asound를 추가했어요.
- Go 1.10.6 업그레이드 (CVE-2018-16873, CVE-2018-16874, CVE-2018-16875)
- authz 플러그인 0-length 콘텐츠/경로 검증 수정
/proc/asound마스킹 경로 추가 docker/engine#126
Improvements
BuildKit 0.3.3으로 업데이트했어요. containerd 1.2.2로 업데이트했고, 더 이상 사용되지 않는 레거시 overlay 및 devicemapper 스토리지 드라이버 사용에 대한 경고를 추가했어요. prune 명령에서 빌드 캐시 정리 전에 이미지 정리를 먼저 수행하도록 변경했어요. 실험적인 CLI 명령(manifest)에 대한 bash 완성 스크립트를 추가했고, Windows 10에서 프로세스 격리를 허용했어요.
- BuildKit 0.3.3 업데이트 docker/engine#122
- containerd 1.2.2 업데이트 docker/engine#144
- 레거시 overlay/devicemapper 드라이버 경고 추가 docker/engine#85
- prune 시 이미지 정리 먼저 수행 docker/cli#1532
- 실험적 CLI 명령 bash 완성 추가 docker/cli#1542
- Windows 10 프로세스 격리 허용 docker/engine#81
Fixes
RHEL/CentOS에서 runc의 kmem accounting을 비활성화했어요. 비효율적인 네트워킹 구성을 수정했고, docker system prune이 until 필터를 받지 못하던 문제를 고쳤어요. containerd에서 자격 증명이 설정되지 않은 경우를 방지했어요. Debian에서 iptables 호환성 문제를 수정했고, docker host의 기본 스키마를 tcp로 설정하는 문제를 고쳤어요. service update --force의 bash 완성 스크립트를 수정했어요. Windows에서 정리 중 DetachVhd를 시도하도록 했어요. API에서 잘못된 JSON을 처리할 때 400 상태를 반환하도록 했고, API < 1.39에서 기본 주소 풀을 무시하도록 했어요. swagger에 누락된 기본 주소 풀 필드를 추가했어요. awslogs에서 UTF-8 정규화를 한도에 반영했어요. HTTP 오류 응답에서 1MB 이상 읽는 것을 금지했어요. apparmor에서 docker kill의 신호 수신을 허용했어요. overlay2에서 가능하면 index=off를 사용하도록 해서 마운트 시 EBUSY 오류를 수정했어요.
- RHEL/CentOS runc kmem accounting 비활성화 docker/engine#121
- 비효율적 네트워킹 구성 수정 docker/engine#123
docker system pruneuntil 필터 수정 docker/engine#122containerd자격 증명 미설정 방지 docker/engine#122- Debian iptables 호환성 수정 docker/engine#107
- docker host 기본 스키마 tcp 설정 수정 docker/cli#1454
service update --forcebash 완성 수정 docker/cli#1526- Windows DetachVhd 정리 시도 docker/engine#113
- API 잘못된 JSON 400 반환 docker/engine#110
- API < 1.39 기본 주소 풀 무시 docker/engine#118
- swagger 기본 주소 풀 필드 추가 docker/engine#119
- awslogs UTF-8 정규화 반영 docker/engine#112
- HTTP 오류 응답 1MB 제한 docker/engine#114
- apparmor
docker kill신호 허용 docker/engine#116 - overlay2 index=off 사용 docker/engine#84
Packaging
docker.service에 docker.socket 요구 사항을 추가했어요. RHEL 계열 배포판에 소켓 활성화를 추가했고, RPM 패키지에 libseccomp 요구 사항을 추가했어요.
- docker.socket 요구 사항 추가 docker/docker-ce-packaging#276
- RHEL 계열 소켓 활성화 추가 docker/docker-ce-packaging#274
- RPM libseccomp 요구 사항 추가 docker/docker-ce-packaging#266
Known Issues
18.09.0에서 18.09.1로 업그레이드할 때 Ubuntu에서 containerd가 올바른 버전으로 업그레이드되지 않는 문제가 있어요. 그리고 업그레이드 프로세스에 중요한 변경 사항이 있어서, 제대로 따르지 않으면 Swarm에서 실행 중인 애플리케이션 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
18.09.0
2018-11-08
Important notes about this release
18.09 이전 버전에서는 containerd를 Docker Engine 데몬이 관리했어요. 그런데 18.09부터는 systemd가 containerd를 관리해요. 따라서 docker.service의 systemd 설정에서 마운트 관련 설정(예: MountFlags=slave)을 변경하면 Docker Engine 데몬과 containerd 사이의 상호작용이 깨져서 컨테이너를 시작할 수 없게 돼요. 다음 명령으로 현재 MountFlags 값을 확인할 수 있어요.
$ sudo systemctl show --property=MountFlags docker.service
MountFlags=
만약 이 명령이 MountFlags에 비어 있지 않은 값을 출력한다면 설정을 업데이트하고 docker 서비스를 재시작해야 해요.
New features
API 버전을 1.39로 업데이트했어요. SSH를 이용한 원격 연결을 지원하게 됐어요. Builder API에 prune 옵션을 추가했고, /info 엔드포인트에 'Warnings'를 추가해서 탐지를 데몬으로 옮겼어요. 이제 실험 모드를 활성화하지 않아도 BuildKit 빌드를 실행할 수 있어요. BuildKit은 daemon.json의 옵션으로 구성할 수 있어요. BuildKit 사용 시 --secret 플래그로 빌드 타임 시크릿을 지원하고, SSH 에이전트 소켓 포워더(docker build --ssh $SSHMOUNTID=$SSH_AUTH_SOCK)도 지원해요. Windows에서 ADD와 COPY 명령에 --chown 플래그를 지원하게 됐어요. BuildKit 빌드 캐시를 정리하는 builder prune 하위 명령을 추가했어요. BuildKit 빌드 캐시에 대한 가비지 컬렉션 정책을 구성할 수 있게 됐고, BuildKit 사용 시 docker build --pull ...을 지원해요. 또한 BuildKit에서 'registry-mirrors'와 'insecure-registries'를 지원하고, net 모드와 bridge를 활성화했어요. containerd 위에서 특권 컨테이너로 실행되는 Docker Engine의 수명 주기를 관리하고 Docker Engine Enterprise로 업그레이드할 수 있는 docker engine 하위 명령을 추가했어요. docker info 출력에 제품 라이선스를 노출하고, 데몬이 생성한 경고도 표시하도록 했어요. 'local' 로그 드라이버를 추가했고, Amazon CloudWatch에 awslogs-endpoint 로깅 옵션을 추가했어요. 전역 기본 주소 풀을 지원하게 됐고, containerd 로그 레벨을 dockerd와 동일하게 설정했어요. cri-containerd에 대한 구성 옵션을 추가했고, containerd 클라이언트를 v1.2.0-rc.1로 업데이트했어요. POST /session 엔드포인트를 실험 모드에서 정식으로 옮겼어요.
- API 1.39 업데이트 moby/moby#37640
- SSH 원격 연결 지원 docker/cli#1014
- Builder API prune 옵션 추가 moby/moby#37651
/info엔드포인트 Warnings 추가 moby/moby#37502- BuildKit 실험 모드 없이 실행 가능 moby/moby#37593 moby/moby#37686 moby/moby#37692 docker/cli#1303 docker/cli#1275
- BuildKit
--secret빌드 타임 시크릿 지원 docker/cli#1288 - BuildKit SSH 에이전트 소켓 포워더 지원 docker/cli#1438 / docker/cli#1419
- Windows
ADD/COPY--chown지원 moby/moby#35521 builder prune하위 명령 추가 docker/cli#1295 docker/cli#1334- BuildKit GC 정책 구성 가능 docker/engine#59 / moby/moby#37846
- BuildKit
docker build --pull지원 moby/moby#37613 - BuildKit registry-mirrors/insecure-registries 지원 docker/engine#59 / moby/moby#37852
- BuildKit net modes/bridge 활성화 moby/moby#37620
docker engine하위 명령 추가 docker/cli#1260docker info제품 라이선스 노출 docker/cli#1313docker info데몬 경고 표시 docker/cli#1225- 'local' 로그 드라이버 추가 moby/moby#37092
- CloudWatch
awslogs-endpoint옵션 추가 moby/moby#37374 - 전역 기본 주소 풀 지원 moby/moby#37558 docker/cli#1233
- containerd 로그 레벨 dockerd와 동일하게 설정 moby/moby#37419
- cri-containerd 구성 옵션 추가 moby/moby#37519
- containerd 클라이언트 v1.2.0-rc.1 업데이트 moby/moby#37664, docker/engine#75 / moby/moby#37710
POST /session엔드포인트 정식 지원 moby/moby#40028
Improvements
/info 응답에서 '<unknown>'을 반환하지 않도록 했어요. BuildKit에서 --console=[auto,false,true]를 --progress=[auto,plain,tty]로 변경했어요. BuildKit의 ExportedProduct 변수를 설정해서 향후 유용한 오류를 표시할 수 있게 했어요. 이 옵션을 지원하지 않는 데몬에 연결하면 --data-path-addr 플래그를 숨기도록 했어요. BuildKit이 활성화된 경우에만 BuildKit 관련 플래그를 표시해요. 버전 출력 정렬을 개선했고, 플러그인 이름과 네트워크를 자연스러운 순서로 정렬하도록 했어요. bash와 zsh 완성 스크립트를 업데이트했어요. 로그 레벨을 containerd로 전달하도록 했어요. 동서 방향 오버레이 로드 밸런싱에서 직접 서버 반환(DSR)을 사용하도록 했어요. Builder에서 buildkit 사용 시 브리지 네트워킹을 임시로 비활성화했어요. 노드 연결이 준비될 때까지 작업 시작을 차단하도록 했어요. 제공된 외부 CA 인증서를 swarm의 외부 CA 객체로 전파하도록 했어요. 지원 플랫폼에서 Ubuntu 14.04 'Trusty Tahr'와 Debian 8 'Jessie'를 제거했어요. containerd와 runc 바이너리에서 'docker-' 접두사를 제거했어요. 'engine', 'cli', 'containerd'를 별도 패키지로 분리하고 containerd를 별도의 systemd 서비스로 실행하도록 했어요. Go 1.10.4로 바이너리를 빌드했고, 버전 문자열에서 -ce 접미사를 제거했어요.
/info응답<unknown>제거 moby/moby#37472- BuildKit
--progress옵션 변경 docker/cli#1276 - BuildKit ExportedProduct 설정 moby/moby#37439
- 미지원 데몬에서
--data-path-addr숨김 docker/cli#1240 - BuildKit 활성화 시에만 관련 플래그 표시 docker/cli#1438 / docker/cli#1427
- 버전 출력 정렬 개선 docker/cli#1204
- 플러그인/네트워크 자연 정렬 docker/cli#1166, docker/cli#1266
- bash/zsh 완성 스크립트 업데이트
- containerd로 로그 레벨 전달 moby/moby#37419
- 오버레이 로드 밸런싱 DSR 사용 docker/engine#93 / docker/libnetwork#2270
- BuildKit 사용 시 브리지 네트워킹 임시 비활성화 moby/moby#37691
- 노드 연결 준비 전 작업 시작 차단 moby/moby#37604
- 외부 CA 인증서 swarm 전파 docker/cli#1178
- Ubuntu 14.04 지원 제거 docker-ce-packaging#255 / docker-ce-packaging#254
- Debian 8 지원 제거 docker-ce-packaging#255 / docker-ce-packaging#254
- containerd/runc 'docker-' 접두사 제거 docker/engine#61 / moby/moby#37907, docker-ce-packaging#241
- engine/cli/containerd 패키지 분리 docker-ce-packaging#131, docker-ce-packaging#158
- Go 1.10.4 빌드 docker-ce-packaging#181
- 버전 문자열
-ce접미사 제거 docker-ce-packaging#206
Fixes
BuildKit 상태 요청을 취소하지 않도록 수정했어요. docker build 중 빌드 인자가 누락되어도 오류가 표시되지 않던 문제를 고쳤어요. 8GB 파일을 추가할 때 'unexpected EOF' 오류가 발생하던 문제를 수정했어요. LCOW에서 COPY/ADD 시 플랫폼이 채워지도록 보장했어요. 호스트 포트 범위를 단일 컨테이너 포트에 매핑할 때 발생하던 문제를 수정했어요. trust inspect의 오타 'AdminstrativeKeys'를 수정했어요. 환경 파일 파싱에서 존재하지 않는 변수나 이름 없는 변수를 가져올 때의 문제를 고쳤어요. docker image prune 실행 시 많은 수의 댕글링 이미지가 있을 때 발생할 수 있는 'out of memory exception'을 수정했어요. Windows의 ConEmu와 ConsoleZ에서 파이프 처리를 수정했어요. Windows에서 HNS가 관리하지 않는 Hyper-V 네트워크를 사용할 때 시작 시간이 길어지던 문제를 해결했어요. 설정 파일과 CLI 양쪽에 'runtimes' 옵션이 정의되어 있으면 데몬이 시작되지 않던 문제를 수정했어요. /etc/docker 디렉터리의 권한을 완화해서 docker manifest inspect 사용 시 'permission denied' 오류가 발생하지 않도록 했어요. cpuset-cpus와 cpuset-mems에 큰 숫자를 사용할 때 발생할 수 있는 서비스 거부 문제를 수정했어요. LCOW에서 docker import에 --platform을 추가했고, Windows에서 기본적으로 LinuxMetadata를 지원하도록 했어요. 명령줄 길이 제한을 피하기 위해 짧은 컨테이너 경로로 마운트하도록 했고, 빌더가 잘못된 캐시 레이어를 사용하던 문제를 수정했어요. --follow 사용 시 json-log 파일 디스크립터가 누수되던 문제를 고쳤어요. kqueue에서 watcher를 닫을 때 발생할 수 있는 교착 상태를 수정했어요. Windows의 파일 캐싱 문제를 해결하기 위해 폴러 기반 watcher를 사용하도록 했어요. systemd-resolved 환경을 처리해서 네트워킹 레이어에 적절한 resolv.conf를 제공하도록 했어요. TLS 1.2 미만 지원을 제거했어요. Seccomp 기본 프로파일에서 CAP_SYS_NICE와 관련된 syscall을 화이트리스트에 추가했고, syslog syscall을 CAP_SYS_ADMIN 또는 CAP_SYSLOG로 게이트하도록 변경했어요. SELinux가 활성화된 시스템에서 Mounts API로 지정된 로컬 볼륨의 재라벨링 문제를 수정했어요. REST API가 안전하지 않은 연결을 통해 접근 가능할 때 경고를 추가했어요. 시스템 정보에 표시될 때 URL에서 프록시 자격 증명을 마스킹하도록 했어요. btrfs의 마운트 전파 문제를 수정했고, 노드 할당 시 nil 포인터 역참조를 수정했어요.
- BuildKit 상태 요청 취소 방지 moby/moby#37597
- 빌드 인자 누락 시 오류 표시 moby/moby#37396
- 8GB 파일 추가 시 'unexpected EOF' 수정 moby/moby#37771
- LCOW
COPY/ADD플랫폼 보장 moby/moby#37563 - 호스트 포트 범위 매핑 수정 docker/cli#1102
trust inspect오타 수정 docker/cli#1300- 환경 파일 파싱 수정 docker/cli#1019
docker image pruneOOM 가능성 수정 docker/cli#1432 / docker/cli#1423- Windows ConEmu/ConsoleZ 파이프 처리 수정 moby/moby#37600
- Windows Hyper-V 네트워크 시작 시간 단축 docker/engine#67 / moby/moby#37774
- 'runtimes' 중복 정의 시 데몬 시작 불가 수정 docker/engine#57 / moby/moby#37871
/etc/docker권한 완화 docker/engine#56 / moby/moby#37847cpuset-cpus/cpuset-memsDoS 수정 docker/engine#70 / moby/moby#37967- LCOW
docker import --platform추가 docker/cli#1375 / docker/cli#1371 - LCOW LinuxMetadata 기본 지원 moby/moby#37514
- LCOW 짧은 경로 마운트 moby/moby#37659
- LCOW 빌더 캐시 레이어 오류 수정 moby/moby#37356
- json-log fd 누수 수정 docker/engine#48 moby/moby#37576 moby/moby#37734
- kqueue watcher 교착 상태 수정 moby/moby#37392
- Windows 폴러 기반 watcher 사용 moby/moby#37412
- systemd-resolved resolv.conf 처리 moby/moby#37485
- TLS < 1.2 지원 제거 moby/moby#37660
- Seccomp
CAP_SYS_NICEsyscall 화이트리스트 moby/moby#37242 - Seccomp syslog syscall 게이트 변경 docker/engine#64 / moby/moby#37929
- SELinux 로컬 볼륨 재라벨링 수정 moby/moby#37739
- REST API 비보안 연결 경고 moby/moby#37684
- 프록시 자격 증명 마스킹 docker/engine#72 / moby/moby#37934
- btrfs 마운트 전파 수정 docker/engine#86 / moby/moby#38026
- 노드 할당 nil 포인터 수정 docker/engine#94 / docker/swarmkit#2764
Known Issues
업그레이드 프로세스에 중요한 변경 사항이 있어요. 제대로 따르지 않으면 업그레이드 중 Swarm에서 실행 중인 애플리케이션의 가용성에 영향을 줄 수 있어요. 이 제약은 18.09 이전 버전에서 18.09 이상으로 업그레이드할 때 모두 적용돼요.
또한 boot2docker ISO v18.09.0을 사용할 때 가상 머신의 노드에서 연결이 거부되는 문제가 있어요. VirtualBox로 생성한 docker-machine VM에서 Swarm 포트를 게시하면 응답하지 않아요. macOS와 Windows 10에서 docker-machine 0.15와 0.16을 사용할 때 발생해요. docker run -d -p 4000:80 nginx는 호스트 브라우저에서 접근 가능하지만, docker service create -p 5000:80 nginx는 curl/chrome에서 연결이 거부돼요. docker-machine으로 18.09.0 클라우드 VM을 프로비저닝할 때는 이 문제가 나타나지 않아요. 해결 방법으로는 boot2docker에 의존하지 않는 클라우드 VM을 사용하거나, docker run은 영향이 없으니 그대로 사용하거나, Swarm의 경우 VIRTUALBOX_BOOT2DOCKER_URL=https://github.com/boot2docker/boot2docker/releases/download/v18.06.1-ce/boot2docker.iso로 설정하면 돼요. 이 문제는 18.09.1에서 해결됐어요.
Deprecation Notices
Docker는 Device Mapper를 스토리지 드라이버로 지원하는 것을 더 이상 권장하지 않아요. 당분간은 계속 지원하지만, 향후 릴리스에서 제거될 예정이에요. 이제 Overlay2 스토리지 드라이버가 Docker Engine 구현의 기본값이에요. 더 이상 사용되지 않는 플래그와 API 목록은 deprecation 정보에서 확인할 수 있고, 제거 예정 날짜도 나와 있어요.
End of Life Notification
이 릴리스에서는 TLS 1.2 미만 지원, Ubuntu 14.04 'Trusty Tahr', Debian 8 'Jessie'에 대한 지원도 제거했어요.
- TLS < 1.2 지원 제거 moby/moby#37660
- Ubuntu 14.04 지원 제거 docker-ce-packaging#255 / docker-ce-packaging#254
- Debian 8 지원 제거 docker-ce-packaging#255 / docker-ce-packaging#254