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#491
  • docker 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#471
  • docker service rollback 하위 명령을 추가했어요. docker/cli#205
  • gRPC 스냅샷이 4MB보다 크면 매니저가 조인에 실패하던 문제를 고쳤어요. docker/swarmkit#2375
  • SELinux가 활성화된 컨테이너에서 설정 파일 접근 시 "permission denied" 오류가 나던 문제를 수정했어요. moby/moby#34732
  • ARM 노드에서 서비스 배포가 실패하던 문제를 고쳤어요. moby/moby#34021

Packaging

Deprecation

  • 더 이상 사용되지 않는 --enable-api-cors 데몬 플래그를 제거했어요. moby/moby#34821

더 알아보기