Docker Engine 18.05 릴리스 노트
Docker Engine 18.05 릴리스 노트
Docker Engine 18.05.0-ce 버전이 2018년 5월 9일에 공개되었어요. 이번 릴리스에서는 빌더, 클라이언트, 로깅, 네트워킹, 런타임, 스웜 모드 전반에 걸쳐 다양한 개선과 버그 수정이 이루어졌어요. 특히 중간 빌드 산출물 경로 표준화, 로그 메시지 속성 통일, libnetwork 확장성 개선 같은 변화가 눈에 띄네요. 하나씩 차근차근 살펴볼게요.
출처: 공식문서
Builder (빌더)
빌더 쪽에서는 두 가지 변경이 있었어요.
pkg/term패키지에netbsd호환성을 추가했어요. moby/moby#36887- 중간 빌드 산출물(artifact)의 출력 경로를
/build/로 표준화했어요. 이제 빌드 과정에서 생성되는 중간 파일들이 일관된 위치에 쌓이게 돼요. moby/moby#36858
Client (클라이언트)
CLI 쪽에서 여러 가지 버그가 수정되었어요.
docker stack deploy명령의 reference 플래그가 제대로 동작하지 않던 문제를 고쳤어요. docker/cli#981- 서비스를
--force옵션으로 업데이트한 뒤docker stack deploy를 다시 실행하면 서비스가 중복 배포되던 문제를 해결했어요. docker/cli#963 secret|config create --template-driver명령에 bash 자동 완성(completion)을 추가했어요. docker/cli#1004docker trust하위 명령에 fish 셸 자동 완성을 추가했어요. docker/cli#984docker history명령의--format예시가 잘못 표시되던 문제를 수정했어요. docker/cli#980- composefile에 networks를 병합할 때 발생하던 오류를 해결했어요. docker/cli#983
Logging (로깅)
로깅 시스템의 일관성을 높이는 작업이 이루어졌어요.
- 스토리지 드라이버 로그 메시지의 속성을 표준화했어요. moby/moby#36492
- 로거(logger)에서 부분 메시지(partial message) 지원을 개선했어요. moby/moby#35831
Networking (네트워킹)
네트워크 관련 개선 사항이에요.
- 미리 설정된 속성값을 더 큰 값으로 허용하고, 기존 값을 덮어쓰지 않도록 했어요. docker/libnetwork#2124
- networkdb의
handleNodeEvent에서 사용자 쓰기 잠금(user write lock)을 적용했어요. docker/libnetwork#2136 - 롤링 업데이트 관련 libnetwork 수정 사항을 가져왔어요. moby/moby#36638
- 브리지 네트워크 격리 규칙의 확장성(scalability)을 높이기 위해 libnetwork를 업데이트했어요. moby/moby#36774
- 잘못 사용되고 있던 네트워크 객체 이름을 바로잡았어요. moby/moby#36745
Runtime (런타임)
런타임 영역에서는 정말 많은 변경이 있었어요. 주요 내용을 정리하면 다음과 같아요.
- LCOW(Linux Containers on Windows) 환경에서
docker save를 구현했어요. moby/moby#36599 - devmapper 패키지에서
dm_task_deferred_remove를 동적으로 로드하도록 변경했어요. moby/moby#35518 - Windows 그래프 드라이버에
GetLayerPath구현을 추가했어요. moby/moby#36738 - Windows에서 쓰기 실패 시 레이어가 누수되던 문제를 수정했어요. moby/moby#36728
- 사용자 네임스페이스(user NS)에서 FIFO, 소켓, 디바이스 파일이 제대로 동작하지 않던 문제를 고쳤어요. moby/moby#36756
docker version출력의 정렬이 어긋나던 문제를 수정했어요. docker/cli#965- privileged 모드에서 sysfs를 항상 읽기-쓰기(read-write)로 마운트하도록 변경했어요. moby/moby#36808
- Go 언어 버전을 1.10.1로 올렸어요. moby/moby#35739
- containerd 클라이언트 버전을 올렸어요. moby/moby#36684
golang.org/x/net을 go1.10 릴리스 커밋으로 업데이트했어요. moby/moby#36894Context.WithTimeout사용 시 cancel 함수를 호출하도록 수정했어요. moby/moby#36920- authz 플러그인 사용 시 시스템 메모리를 모두 소모하지 않도록 복사(copy) 로직을 개선했어요. moby/moby#36595
- daemon/cluster 구성 중 부분적인 attachment 항목을 처리하도록 했어요. moby/moby#36769
- 컨테이너 마운트가 unbindable로 설정되지 않도록 변경했어요. moby/moby#36768
- 종료(shutdown) 시 마운트 해제 전에 추가 검사를 수행하도록 했어요. moby/moby#36879
- 마운트 파싱 로직을 별도 패키지로 분리했어요. moby/moby#36896
- 전역 볼륨 드라이버 저장소(global volume driver store)를 제거했어요. moby/moby#36637
pkg/mount패키지를 개선했어요. moby/moby#36091- libcontainerd 클라이언트의 일부 잠금(locking)을 완화했어요. moby/moby#36848
- daemon이 api 패키지에 의존하지 않도록 정리했어요. moby/moby#36912
- 서비스 업데이트 시 재시도(retry) 로직을 제거했어요. moby/moby#36827
- 암호화되지 않은 스토리지 경고 프롬프트 변경을 되돌렸어요. docker/cli#1008
directory.Size()에서 취소(cancellation)를 지원하도록 했어요. moby/moby#36734x/net/context대신 표준context패키지를 사용하도록 전환했어요. moby/moby#36904- Content-type이
application/json인지 확인하는 함수를 수정했어요. moby/moby#36778 - 기본
pollSettings설정 함수를 추가했어요. moby/moby#36706 daemonWaitCh에서 작업을 받기 전에 if 판단을 추가했어요. moby/moby#36651- 비루트(non-root) 사용자로 볼륨 테스트를 실행할 때 발생하던 문제를 수정했어요. moby/moby#36935
Swarm Mode (스웜 모드)
스웜 모드 관련 변경 사항이에요.
- RoleManager가 클러스터 멤버십에서 감지된 노드를 제거하도록 했어요. docker/swarmkit#2548
- Scheduler/TaskReaper가 종료(shutdown) 표시된 미할당 태스크를 처리하도록 했어요. docker/swarmkit#2574
- 미리 정의된 오류 로그를 피하도록 수정했어요. docker/swarmkit#2561
- Task reaper가 아직 할당되지 않았지만 제거된 슬롯(slot)의 태스크를 삭제하도록 했어요. docker/swarmkit#2557
- 에이전트가 FIPS 상태를 보고하도록 했어요. docker/swarmkit#2587
timeMutex의 중요 연산이 임계 구역(critical section) 밖에서 실행되던 문제를 수정했어요. docker/swarmkit#2603- 엔진 설정에서 swarmkit의 Raft 튜닝 파라미터를 노출했어요. moby/moby#36726
internal/test/daemon.Daemon이 스웜을 인식하도록 만들었어요. moby/moby#36826