Docker Engine 17.09 릴리스 노트
Docker Engine 17.09 릴리스 노트
이 문서는 Docker Engine 17.09의 두 가지 패치 버전(17.09.1-ce, 17.09.0-ce)에서 어떤 변화가 있었는지 정리한 내용이에요. 빌더, 클라이언트, 네트워킹, 런타임, 스웜 모드 등 여러 영역에서 버그 수정과 기능 추가가 이뤄졌어요. 각 항목을 하나씩 짚어보면서 어떤 문제가 해결되었는지, 어떤 기능이 새로 생겼는지 함께 살펴보도록 할게요.
출처: 공식문서
17.09.1-ce
2017-12-07에 배포된 첫 번째 패치 버전이에요. 주로 안정성과 보안 관련 수정이 포함되어 있어요.
Builder
- 공유된 부모 스테이지에서 설정(config)이 새어 나가던 문제를 고쳤어요. moby/moby#33753
- 주석만 있는 줄에서는 경고를 띄우지 않고, 진짜 빈 줄에서만 경고하도록 바꿨어요. moby/moby#35004
Client
Ping이 실패하더라도 클라이언트의 API 버전을 설정하도록 수정했어요. 이제 연결 상태와 무관하게 버전 정보를 유지할 수 있어요. docker/cli#546
Networking
- 오버레이 네트워크에서 IP가 잠깐 재사용되던 문제를 해결했어요. docker/libnetwork#2016
- NetworkDB의
reapTime로직을 수정하고, attach 가능한 컨테이너의 DNS 정리 작업을 처리하도록 했어요. docker/libnetwork#2017 - 체인 존재 여부를 확인할 때 호스트명 조회를 하지 않도록 꺼두었어요. docker/libnetwork#2019
- 린트(lint) 문제들을 정리했어요. docker/libnetwork#2020
FindNetwork에서 발생하던 오류 타입을 원래대로 복원했어요. moby/moby#35634
Runtime
health monitor의 Go 채널을 보호하도록 했어요. moby/moby#35482- 컨테이너와 exec 상태가 누수되던 문제를 고쳤어요. moby/moby#35484
- 마스킹 경로에
/proc/scsi를 추가했어요. 이는 CVE-2017-16539를 우회하기 위한 패치예요. moby/moby/#35399 - tar-split을 최신 버전으로 갱신해서, Docker 데몬을 크래시시킬 수 있는 메모리 고갈 문제를 예방했어요. CVE-2017-14992를 해결하는 조치예요. moby/moby/#35424
- P/Z HubPullSuite 테스트를 수정했어요. moby/moby#34837
- Windows: pull 시 버전 필터링을 지원하도록 추가했어요. moby/moby#35090
- Windows: 매니페스트 리스트를 버전별로 필터링하던 동작을 중단했어요. moby/moby#35117
- chroot 아카이브에서
rprivate대신rslave를 사용하도록 변경했어요. moby/moby/#35217 - 컨테이너의 rootfs 마운트 경로를 언마운트한 뒤 제거하도록 했어요. moby/moby#34573
- 사용자가 직접 마운트한
/dev/shm의 tmpfs 크기 설정이 제대로 적용되지 않던 문제를 고쳤어요. moby/moby#35316 may_detach_mounts를 설정할 때 오류가 나도 중단하지 않고 로그만 남기도록 바꿨어요. moby/moby#35172- API 버전을 협상할 때 버전 비교가 잘못되던 문제를 수정했어요. moby/moby#35008
Swarm mode
- 스냅샷을 보낼 때 gRPC 요청 타임아웃을 늘렸어요. docker/swarmkit#2404
- 로그 드라이버가 없을 때 노드 필터링이 제대로 동작하지 않던 문제를 고쳤어요. docker/swarmkit#2442
- 클러스터 이름을 변경하려고 시도하면 오류를 반환하도록 추가했어요. docker/swarmkit/#2454
- 노드가 제거될 때 노드에 연결된 attachment도 함께 삭제하도록 했어요. docker/swarmkit/#2456
- 기본 프록시 다이얼러를 재정의할 수 있도록 커스텀 gRPC 다이얼러를 제공했어요. docker/swarmkit/#2457
- swarm 정보를 조회할 때 재귀적 읽기 잠금이 발생하지 않도록 수정했어요. moby/moby#35388
17.09.0-ce
2017-09-26에 배포된 메이저 릴리스예요. 여러 가지 새로운 기능과 개선 사항이 포함되어 있어요.
Builder
- Dockerfile의
ADD/COPY명령에--chown플래그를 추가했어요. 이제 빌드할 때 파일 소유자를 지정할 수 있어요. moby/moby#34263 - Git 저장소에서 빌드할 때 불필요한 파일을 복제하던 문제를 고쳤어요. moby/moby#33704
Client
- Compose 포맷 v3.4에서 확장 필드를 허용하도록 했어요. docker/cli#452
- Compose 파일에서 외부 볼륨이 아닌 볼륨에도 이름을 지정할 수 있게 했어요. docker/cli#306
--compose-file -를 표준 입력으로 받아들일 수 있게 지원했어요. docker/cli#347- Docker Compose의 healthcheck에
start_period를 지원하도록 추가했어요. docker/cli#475 docker stack명령에서stop-signal을 지원하도록 했어요. docker/cli#388- Compose 배포에서 업데이트 순서(update order)를 지원하도록 추가했어요. docker/cli#360
- 지원하지 않는 Compose 필드 목록에 ulimits를 추가했어요. docker/cli#482
docker-search명령에--format옵션을 추가했어요. docker/cli#440- 포맷 문자열에
{{.Digest}}가 포함되면 이미지 다이제스트를 표시하도록 했어요. docker/cli#439 docker stack rm의 출력을stderr대신stdout으로 보내도록 변경했어요. docker/cli#491docker history --format {{json .}}를 사용할 때--human=true면 ISO8601 대신 사람이 읽기 쉬운 타임스탬프가 출력되던 문제를 고쳤어요. docker/cli#438- secrets나 configs를 사용할 때
docker stack deploy가 멱등성을 유지하지 못하던 문제를 수정했어요. docker/cli#509 - 임의의 호스트 포트가 표시될 때 보기 좋게 표현하도록 수정했어요. docker/cli#404
- 서비스를 여러 secrets와 함께 생성할 때 불필요하게 서비스가 재시작되던 문제를 고쳤어요. moby/moby#34746
Logging
- Splunk 로거에서 태그가 비어 있고 raw-mode를 사용할 때 로그 데이터가 전송되지 않던 문제를 수정했어요. moby/moby#34520
Networking
- 데몬 설정에 컨트롤 플레인 MTU 옵션을 추가했어요. moby/moby#34103
- 서비스 가상 IP를 샌드박스의 루프백 주소에 추가하도록 했어요. docker/libnetwork#1877
Runtime
- 그래프 드라이버 기본값을 aufs보다 overlay2를 우선하도록 변경했어요. moby/moby#34430
- LCOW: VHD 부팅을 위한 추가 플래그를 지원했어요. moby/moby#34451
- LCOW: export를 차단하지 않도록 수정했어요. moby/moby#34448
- LCOW: 동적 샌드박스 관리를 도입했어요. moby/moby#34170
- LCOW: Hyper-V 격리를 강제하도록 했어요. moby/moby#34468
- LCOW: toolsScratchPath를
/tmp로 이동했어요. moby/moby#34396 - LCOW: 하드코딩된 부분을 제거했어요. moby/moby#34398
- LCOW:
WORKDIR을 올바르게 처리하도록 수정했어요. moby/moby#34405 - Windows: named pipe 마운트를 지원했어요. moby/moby#33852
- SELinux enforcing 모드에서 볼륨에 접근할 때 "permission denied" 오류가 나던 문제를 고쳤어요. moby/moby#34684
docker system df에서 레이어 크기가0으로 표시되던 문제를 수정했어요. moby/moby#34826- RHEL 7.4 기반 커널에서 컨테이너를 제거할 때 "device or resource busy" 오류가 발생하던 문제를 일부 해결했어요. moby/moby#34886
Swarm mode
docker info에 swarm 매니저가 자동 잠금(autolock) 상태인지 여부를 포함하도록 했어요. docker/cli#471docker service rollback하위 명령을 추가했어요. docker/cli#205- gRPC 스냅샷이 4MB보다 크면 매니저가 조인에 실패하던 문제를 고쳤어요. docker/swarmkit#2375
- SELinux가 활성화된 컨테이너에서 설정 파일 접근 시 "permission denied" 오류가 나던 문제를 수정했어요. moby/moby#34732
- ARM 노드에서 서비스 배포가 실패하던 문제를 고쳤어요. moby/moby#34021
Packaging
- Ubuntu에서 ppc64el 아키텍처용 빌드 스크립트를 추가했어요. docker/docker-ce-packaging#43
Deprecation
- 더 이상 사용되지 않는
--enable-api-cors데몬 플래그를 제거했어요. moby/moby#34821