Docker Engine 17.12 릴리스 노트

Docker Engine 17.12 릴리스 노트

Docker Engine 17.12 버전의 릴리스 노트를 살펴볼게요. 17.12.0-ce(2017-12-27)와 17.12.1-ce(2018-02-27) 두 가지 버전으로 나뉘어 있어요. 각 버전에서 어떤 기능이 추가되고 어떤 버그가 수정됐는지, 그리고 어떤 알려진 이슈가 있는지 하나씩 차근차근 설명드릴게요.

출처: 공식문서

17.12.1-ce (2018-02-27)

17.12.0-ce가 나온 뒤 약 두 달 만에 나온 패치 버전이에요. 주로 버그 수정에 집중된 릴리스랍니다.

Client

클라이언트 쪽에서 두 가지가 수정됐어요.

  • node-generic-resource 오타가 수정됐어요. (moby/moby#35970, moby/moby#36125)
  • stack deploy 시 configs를 create/update할 때 daemon에서 발생한 에러가 제대로 반환되도록 수정됐어요. (docker/cli#757)

Logging

로깅 드라이버 관련 수정사항이에요.

  • awslogs 드라이버에서 큰 로그에 대한 batch size 계산이 잘못되던 문제를 고쳤어요. (moby/moby#35726)
  • splunk 로그 드라이버에서 프록시를 지원하게 됐어요. (moby/moby#36220)

Networking

네트워크 관련해서 여러 버그가 수정됐어요.

  • 17.09에서 17.12로 업그레이드할 때 ingress 네트워크에 문제가 생기던 것을 고쳤어요. (moby/moby#36003)
  • 부분적인 overlay ID에 verbose 정보를 추가했어요. (moby/moby#35989)
  • live-restore를 활성화하면 IPv6 네트워킹이 해제되던 문제를 수정했어요. (docker/libnetwork#2043)
  • watchMiss 스레드 컨텍스트 문제를 고쳤어요. (docker/libnetwork#2051)

Packaging

Runtime

런타임 관련해서 꽤 많은 수정이 있었어요.

  • Golang을 1.9.4로 올렸어요.
  • containerd를 1.0.1로 올렸어요.
  • dockerd가 containerd 재시작 시 다시 연결하지 못하던 문제를 고쳤어요. (moby/moby#36173)
  • containerd 이벤트가 두 번 처리되던 문제를 수정했어요. (moby/moby#35891)
  • fs quota 설정 실패로 vfs graph driver 초기화가 실패하던 문제를 고쳤어요. (moby/moby#35827)
  • health check가 컨테이너의 working directory를 사용하지 않던 회귀 문제를 수정했어요. (moby/moby#35845)
  • containerd 1.0에서 DOCKER_RAMDISK 환경 변수를 존중하도록 했어요. (moby/moby#35957)
  • start와 exec 중 hang이 걸리던 문제를 해결하기 위해 runc를 업데이트했어요. (moby/moby#36097)
  • Windows: Microsoft/hcsshim을 v.0.6.8로 vendor 업데이트하여 import layer 실패 문제를 부분적으로 해결했어요. (moby/moby#35924)
  • graphdriver 홈을 private mount로 만들지 않도록 했어요. (moby/moby#36047)
  • daemon root의 mount에 rslave propagation을 사용하도록 했어요. (moby/moby#36055)
  • daemon root가 shared mount propagation을 사용하도록 설정했어요. (moby/moby#36096)
  • 컨테이너 생성 시점이 아니라 시작 시점에 mounted path가 존재하는지 검증하도록 했어요. (moby/moby#35833)
  • TaskState에 REMOVEORPHANED 상태를 추가했어요. (moby/moby#36146)
  • swarm scope의 네트워크에서 network inspect가 Created time을 표시하지 않던 문제를 고쳤어요. (moby/moby#36095)
  • 컨테이너 해제 시 read write 레이어를 nullify하도록 했어요. (moby/moby#36160, moby/moby#36242)

Swarm

Known Issues

이 버전에서 아직 해결되지 않은 알려진 이슈들이에요.

  • Health check가 더 이상 컨테이너의 working directory를 사용하지 않아요. (moby/moby#35843)
  • stack deploy configs에서 클라이언트가 에러를 반환하지 않아요. (docker/cli#757)
  • systemd 옵션 사용 시 Docker가 메모리 제한을 사용할 수 없어요. (moby/moby#35123)

17.12.0-ce (2017-12-27)

17.12의 메이저 릴리스예요. 빌더, 클라이언트, 런타임, 네트워킹, 스웜 모드까지 전반에 걸쳐 많은 변화가 있었어요.

Known Issues

  • AWS logs batch size 계산 문제 (moby/moby#35726)
  • Health check가 더 이상 컨테이너의 working directory를 사용하지 않아요. (moby/moby#35843)
  • stack deploy configs에서 클라이언트가 에러를 반환하지 않아요. (docker/cli#757)
  • project quota 실패 시 daemon이 중단돼요. (moby/moby#35827)
  • systemd 옵션 사용 시 Docker가 메모리 제한을 사용할 수 없어요. (moby/moby#35123)

Builder

빌더 관련 수정사항이에요.

  • broken symlink에 대한 build cache hash 문제를 고쳤어요. (moby/moby#34271)
  • 긴 스트림 동기화 문제를 수정했어요. (moby/moby#35404)
  • 긴 토큰에서 dockerfile 파서가 조용히 실패하던 문제를 고쳤어요. (moby/moby#35429)

Client

클라이언트에 많은 변화가 있었어요.

  • cli/compose에서 secret과 config의 중복을 제거했어요. (docker/cli#671)
  • docker trust sign--local 플래그를 추가했어요. (docker/cli#575)
  • docker trust inspect 명령을 추가했어요. (docker/cli#694)
  • secrets와 configs에 name 필드를 추가하여 Compose 파일에서 보간(interpolation)을 사용할 수 있게 했어요. (docker/cli#668)
  • swarm service 격리 모드를 설정하는 --isolation 플래그를 추가했어요. (docker/cli#426)
  • 더 이상 사용되지 않는 "daemon" 하위 명령을 제거했어요. (docker/cli#689)
  • 예상치 못한 에러 발생 시 rmi -f의 동작을 수정했어요. (docker/cli#654)
  • service create에 Generic resource를 통합했어요. (docker/cli#429)
  • stacks에서 external networks 문제를 고쳤어요. (docker/cli#743)
  • 이미지 shortid로 이미지를 참조하는 기능을 제거했어요. (docker/cli#753, moby/moby#35790)
  • containerd에 tag 대신 commit-sha를 사용하도록 했어요. (moby/moby#35770)

Documentation

  • API 버전 히스토리를 1.35로 업데이트했어요. (moby/moby#35724)

Logging

로깅 관련 변경사항이에요.

  • Logentries 드라이버에서 line-only=true일 때 []byte 출력 문제를 수정했어요. (moby/moby#35612)
  • Logentries line-only logopt이 하위 호환성을 유지하도록 수정했어요. (moby/moby#35628)
  • docker logs--until 플래그를 추가했어요. (moby/moby#32914)
  • Windows 빌드에 gelf 로그 드라이버 플러그인을 추가했어요. (moby/moby#35073)
  • splunk 배치 전송에 타임아웃을 설정했어요. (moby/moby#35496)
  • Graylog2/go-gelf를 업데이트했어요. (moby/moby#35765)

Networking

네트워킹 관련 변경사항이에요.

  • load balancer sandbox 생성/삭제를 libnetwork로 이동했어요. (moby/moby#35422)
  • 컨테이너 메타데이터 내의 네트워크 파일에 대해서만 chown을 수행하도록 했어요. (moby/moby#34224)
  • FindNetwork에서 에러 타입을 복원했어요. (moby/moby#35634)
  • NetworkConnect의 consumes MIME 타입을 수정했어요. (moby/moby#35542)
  • Windows 네트워크 드라이버별 옵션을 영구 저장할 수 있게 했어요. (moby/moby#35563)
  • netlink 소켓의 타임아웃과 watchmiss 누수 문제를 고쳤어요. (moby/moby#35677)
  • 네트워크 진단을 위한 새로운 daemon config를 추가했어요. (moby/moby#35677)
  • 노드 관리 로직을 정리했어요. (docker/libnetwork#2036)
  • 엔드포인트 복원 시 VIP를 할당하도록 했어요. (docker/swarmkit#2474)

Runtime

런타임 관련 변경사항이에요. 꽤 많으니 하나씩 볼게요.

  • containerd를 v1.0.0으로 업데이트했어요. (moby/moby#35707)
  • VFS graphdriver가 가속화된 in-kernel copy를 사용하도록 했어요. (moby/moby#35537)
  • docker execworkingdir 옵션을 도입했어요. (moby/moby#35661)
  • Go를 1.9.2로 올렸어요. (moby/moby#33892, docker/cli#716)
  • --readonly 플래그를 사용해도 /dev가 readonly가 되지 않도록 했어요. (moby/moby#35344)
  • 빌드 시점에 Graphdrivers 우선순위 목록을 커스텀할 수 있게 했어요. (moby/moby#35522)
  • LCOW: pull, run, create, build에 platform 플래그를 추가하는 CLI 변경이 있었어요. (docker/cli#474)
  • Windows에서 docker exec의 width/height 문제를 수정했어요. (moby/moby#35631)
  • 4.0 미만 커널에서 overlay2 지원을 감지하도록 했어요. (moby/moby#35527)
  • Devicemapper: umount 후 컨테이너 rootfs mountPath를 제거하도록 했어요. (moby/moby#34573)
  • NFS 위에서 overlay/overlay2를 사용하지 못하도록 했어요. (moby/moby#35483)
  • plugin set 중 발생할 수 있는 panic을 수정했어요. (moby/moby#35632)
  • 컨테이너 잠금 관련 일부 문제를 수정했어요. (moby/moby#35501)
  • plugin refcounting 관련 문제를 수정했어요. (moby/moby#35265)
  • ProcessEvent에 누락된 lock을 추가했어요. (moby/moby#35516)
  • vfs quota 지원을 추가했어요. (moby/moby#35231)
  • 이전 graphdriver 감지 시 빈 디렉터리를 건너뛰도록 했어요. (moby/moby#35528)
  • user namespace에서 실행할 때 xfs quota 테스트를 건너뛰도록 했어요. (moby/moby#35526)
  • config 옵션에 SubSecondPrecision을 추가했어요. (moby/moby#35529)
  • watch 제거 시 deadlock을 해결하기 위해 fsnotify를 업데이트했어요. (moby/moby#35453)
  • --tmpfs /dev/shm 사용 시 "duplicate mount point" 문제를 수정했어요. (moby/moby#35467)
  • 사용자 /dev/shm 마운트에서 tmpfs-size를 존중하도록 수정했어요. (moby/moby#35316)
  • overlayfs와 v4.13+ 커널에서 EBUSY 에러를 수정했어요. (moby/moby#34948)
  • Container: health monitor 채널을 보호했어요. (moby/moby#35482)
  • Container: health 상태를 mutex로 보호했어요. (moby/moby#35517)
  • Container: 실시간 리소스를 업데이트했어요. (moby/moby#33731)
  • 볼륨이 원격에만 존재할 때 레이블을 생성하도록 했어요. (moby/moby#34896)
  • 컨테이너/exec 상태 누수 문제를 수정했어요. (moby/moby#35484)
  • 레거시(v1) 레지스트리 사용을 허용하지 않도록 했어요. (moby/moby#35751, docker/cli#747)
  • Windows: 빌더 캐시에 대한 대소문자 구분 없는 파일명 매칭 문제를 수정했어요. (moby/moby#35793)
  • 프로세스 처리와 에러 검사 주변의 경쟁 조건을 수정했어요. (moby/moby#35809)
  • daemon 시작 시 컨테이너가 중지되도록 보장했어요. (moby/moby#35805)
  • containerd namespace 규칙을 따르도록 했어요. (moby/moby#35812)

Swarm Mode

Packaging

더 알아보기 (Learn more)

이 릴리스 노트에서 다룬 내용 외에도 Docker Engine의 다른 버전 릴리스 노트나 관련 문서를 살펴보시면 더 깊이 있는 이해에 도움이 될 거예요. 특히 containerd, runc, libnetwork 같은 핵심 컴포넌트의 변화는 Docker 동작 방식에 직접적인 영향을 주니까 참고하시면 좋아요.