Docker Engine 18.06 릴리스 노트
Docker Engine 18.06 릴리스 노트
Docker Engine 18.06 버전의 변경 사항을 정리한 릴리스 노트예요. 보안 취약점 수정부터 빌더, 클라이언트, 런타임, 스웜 모드까지 다양한 영역의 개선이 포함되어 있어요. 특히 18.06.2에서는 치명적인 보안 취약점(CVE-2019-5736)이 수정되었으니 꼭 확인해 두세요. 각 버전별로 어떤 문제가 해결되었는지 하나씩 살펴볼게요.
출처: 공식문서
18.06.3-ce
2019-02-19
Docker Engine 보안 수정
runc의 치명적인 취약점 패치가 RPM 패키지에도 포함되도록 적용 방식을 변경했어요. docker/engine#156
18.06.2
2019-02-11
Docker Engine 보안 수정
- 특수하게 제작된 컨테이너가 호스트에서 관리자 권한을 획득할 수 있는 치명적인 취약점을 해결하기 위해
runc를 업데이트했어요. CVE-2019-5736 - Ubuntu 14.04에서 3.13 커널을 사용하는 경우 지원되는 Ubuntu 4.x 커널로 업그레이드해야 해요.
18.06.1-ce
2018-08-21
Builder
docker build중 빌드 인자(build args)가 누락되어도 오류가 발생하지 않던 문제를 수정했어요. docker/engine#25- BuildKit의
ExportedProduct변수를 설정해서 유용한 오류 메시지가 표시되도록 했어요. docker/engine#21
Client
- 다양한 셸 완성(completion) 스크립트가 업데이트되었어요: docker/cli#1229, docker/cli#1268, docker/cli#1272
DOCKER_CONFIG경고 메시지와 폴백(fallback) 검색 동작을 수정했어요. docker/cli#1241docker stack명령과 하위 명령의 도움말 플래그 표시를 수정했어요. docker/cli#1267
Runtime
- CRI 플러그인이 기본적으로 포트 10010에서 수신 대기하지 않도록 비활성화했어요. docker/engine#29
- containerd를 v1.1.2로 업데이트했어요. docker/engine#33
- Windows: terminate가 호출되면 HCS 종료(shutdown)를 호출하지 않도록 했어요. docker/engine#31
- Windows: 로그 감시자(watcher)로 폴링 기반 감시자를 선택하도록 했어요. docker/engine#34
Swarm Mode
- 실행 중인 태스크를 건너뛰는 조건을 수정했어요. docker/swarmkit#2677
- 태스크 정렬 방식을 수정했어요. docker/swarmkit#2712
18.06.0-ce
2018-07-18
이번 릴리스의 중요 사항
- Docker 18.06 CE는 4개월 유지보수 수명주기를 갖는 마지막 릴리스예요. 예정된 Docker 18.09 CE는 7개월 동안 지원되며, 그다음 릴리스는 Docker 19.03 CE가 될 예정이에요. 릴리스 프로세스에 대한 자세한 내용은 여기에서 확인할 수 있어요.
Builder
- 멀티 스테이지 와일드카드 복사 시 레이어가 누출되던 문제를 수정했어요. moby/moby#37178
- 잘못된 환경 변수 치환 구문의 파싱 오류를 수정했어요. moby/moby#37134
- 베이스 이미지의 아키텍처 정보를 사용하도록 했어요. moby/moby#36816 moby/moby#37197
- BuildKit 기반의 새로운 실험적 빌더 백엔드를 추가했어요. 사용하려면 데몬을 실험 모드로 실행하고 docker CLI에
DOCKER_BUILDKIT=1환경 변수를 설정하면 돼요. moby/moby#37151 docker/cli#1111 - 멀티 스테이지 빌드에서 대문자 타깃 이름 처리를 수정했어요. moby/moby#36960
Client
- spf13/cobra를 v0.0.3으로, pflag를 v1.0.1로 업그레이드했어요. moby/moby#37106
- Kubernetes v1beta2용 새 Stack API를 지원했어요. docker/cli#899
- K8s: 배포 시 스택 오류 감지를 더 견고하게 개선했어요. docker/cli#948
- compose 3.7에서 롤백 설정(rollback config)을 지원했어요. docker/cli#409
- Cobra와 pflag를 업데이트하고 내장
--version기능을 사용하도록 했어요. docker/cli#1069 - 빈 이름으로
docker stack deploy --prune실행 시 모든 서비스가 제거되던 문제를 수정했어요. docker/cli#1088 - [Kubernetes] 스택 서비스 필터를 추가했어요. docker/cli#1023
- 도움말에서 오케스트레이터 플래그를 root, stack, version 명령에만 표시하도록 했어요. docker/cli#1106
- compose 설정 타입에
Extras필드를 추가했어요. docker/cli#1126 - compose 로더에 옵션을 추가했어요. docker/cli#1128
- Kubernetes에서
docker stack ps명령이 항상 노드를 나열하던 문제를 수정했어요. docker/cli#1093 stack rm오류 메시지가 두 번 표시되던 문제를 수정했어요. docker/cli#1093- 커스텀 HTTP 요청으로 클라이언트 API를 확장했어요. moby/moby#37071
- 읽을 수 없는 파일에 대한 오류 메시지를 개선해서
.Dockerignore항목 가능성을 알려주도록 했어요. docker/cli#1053 - 설정 파일에서
kubernetes.allNamespaces값을 'enabled' 또는 'disabled'로 제한했어요. docker/cli#1087 - help 명령에서 docker 클라이언트 초기화 시 오류를 확인하도록 했어요. docker/cli#1119
- Kubernetes 네임스페이스 경험을 개선했어요.
~/.kube/config에 정의된 네임스페이스를 stack 명령에 사용하도록 수정하고,docker stack ls명령에 NAMESPACE 열을 추가했으며,--all-namespaces플래그도 추가했어요. docker/cli#991 - Push와 Save를 외부로 노출(export)했어요. docker/cli#1123
- pull을 공개 함수로 노출했어요. docker/cli#1026
- Kubernetes 명령을 실험 기능에서 제거했어요. docker/cli#1068
service inspect --pretty에 configs/secrets를 추가했어요. docker/cli#1006- Kubernetes에서 서비스 이름으로 필터링할 때 발생하던 문제를 수정했어요. docker/cli#1101
docker version에서 컴포넌트 정보 정렬을 수정했어요. docker/cli#1065- 서비스 업데이트 시 cpu/memory 제한과 예약(reservation) 값이 초기화되던 문제를 수정했어요. docker/cli#1079
- 매니페스트 리스트: 특정 권한을 요청하도록 했어요. docker/cli#1024
- 특정
--namespace가 설정되지 않은 경우--orchestrator=all설정 시--all-namespaces도 함께 설정되도록 했어요. docker/cli#1059 --compress와--stream을 함께 사용할 때 발생하던 패닉을 수정했어요. docker/cli#1105x/net/context를context로 전환했어요. docker/cli#1038docker service create에--init옵션을 추가했어요. docker/cli#479--stream과--quiet플래그를 함께 사용할 때 build 명령에서 잘못된 출력이 표시되던 버그를 수정했어요. docker/cli#1090- 3.7 스키마에
init지원을 추가했어요. docker/cli#1129 docker trust signer제거 기능을 수정했어요. docker/cli#1112docker inspect의 오류 메시지를 수정했어요. docker/cli#1071- 3번째 레벨 객체에서
x-*확장을 허용했어요. docker/cli#1097 - 잘못된 오케스트레이터가 조용히 무시되는 대신 오류를 생성하도록 했어요. docker/cli#1055
docker stack ls명령에 ORCHESTRATOR 열을 추가했어요. docker/cli#973- 서비스의 게시 포트에 host-ip를 사용할 때 경고를 표시하도록 했어요. docker/cli#1017
DOCKER_CLI_EXPERIMENTAL환경 변수를 통해 실험적 CLI 기능을 활성화하는 옵션을 추가했어요. docker/cli#1138- 알려진 컨테이너 이벤트 목록에
exec_die를 추가했어요. docker/cli#1028 - [K8s] 해석되지 않은 Config 파일에서 환경 변수 확장을 수행하도록 했어요. docker/cli#974
- Kubernetes에 배포하기 위해 compose 파일을 파싱할 때 지원되지 않는 각 기능에 대해 stderr에 경고를 출력하도록 했어요. docker/cli#903
- pids 수에 대한 설명을 추가했어요. docker/cli#1045
- prune 시 필터 사용에 대해 사용자에게 경고하도록 했어요. docker/cli#1043
--rollback-*옵션이--update-*옵션을 덮어쓰던 문제를 수정했어요. docker/cli#1052- Attach, Build, Commit, Cp, Create 하위 명령의 fish 완성 스크립트를 업데이트했어요. docker/cli#1005
dockerd --default-address-pool에 대한 bash 완성을 추가했어요. docker/cli#1173exec_die이벤트에 대한 bash 완성을 추가했어요. docker/cli#1173- 모든 docker 명령에서
pass가 호출되지 않도록 docker-credential-helper를 업데이트했어요. docker/cli#1184 - 스웜 외부 CA 회전 문제를 수정했어요. docker/cli#1199
- 버전 출력 정렬을 개선했어요. docker/cli#1207
service create|update --init에 대한 bash 완성을 추가했어요. docker/cli#1210
Deprecation
- 예약된 네임스페이스의 deprecation을 문서화했어요. docker/cli#1040
Logging
- awslogs가 논블로킹 모드를 사용할 수 있게 했어요. moby/moby#36522
- fluentd 로그 드라이버에서 긴 로그 줄의 로깅을 개선했어요. moby/moby#36159
make validate테스트를 통과하도록 CHANGELOG.md 순서를 재조정했어요. moby/moby#37047- Events, Exec, Export, History, Images, Import, Inspect, Load, Login 하위 명령의 fish 완성 스크립트를 업데이트했어요. docker/cli#1061
- RingLogger의 링 버퍼 문서를 업데이트했어요. moby/moby#37084
- 로그 실패/부분 로그에 대한 메트릭을 추가했어요. moby/moby#37034
- 로깅 플러그인 충돌 시 복구 불가능하던 문제를 수정했어요. moby/moby#37028
- 로깅 테스트 타입을 수정했어요. moby/moby#37070
- logs API의 경쟁 조건(race condition)을 수정했어요. moby/moby#37062
- 로그 파일 리더와 로테이션의 일부 문제를 수정했어요. moby/moby#37063
Networking
- docker 네트워크의 기본 주소 풀을 사용자가 지정할 수 있게 했어요. moby/moby#36396 docker/cli#818
- ipam 상태에 대한 로그를 추가했어요. docker/libnetwork#2417
- 오버레이 네트워크 드라이버의 경쟁 조건을 수정했어요. docker/libnetwork#2143
- xtables 잠금 경고에 대기 시간을 추가했어요. docker/libnetwork#2142
- firewalld가 활성화된 경우 xtables 잠금 경고를 필터링하도록 했어요. docker/libnetwork#2135
x/net/context를context로 전환했어요. docker/libnetwork#2140- 분할된 gossip 클러스터를 위한 복구 메커니즘을 추가했어요. docker/libnetwork#2134
- 네트워크 연결 태스크에 대해
docker inspect를 실행하면 이제 전체 태스크 객체가 반환돼요. moby/moby#35246 - 일부 컨테이너/네트워크 정리 작업을 수행했어요. moby/moby#37033
- 오버레이 네트워크의
network inspect를 수정했어요. moby/moby#37045 - Linux 로드 밸런싱의 확장성을 개선했어요. docker/engine#16
- 로그 레벨을 error에서 warning으로 변경했어요. docker/engine#19
Runtime
- Aufs: aufs가 지원되지 않는 이유를 로그로 남기도록 했어요. moby/moby#36995
- Windows에서 실험적 체크포인트 기능을 숨겼어요. docker/cli#1094
- Lcow: 클라이언트가 LCOW 컨테이너의 capabilities와 device cgroup 규칙을 커스터마이즈할 수 있게 했어요. moby/moby#37294
- Windows에서 실행 파일 출력 경로를 실제 실행 파일 출력 위치로 변경했어요. moby/moby#37295
- Windows 휴지통 테스트를 추가하고 hcsshim을 v0.6.11로 업데이트했어요. moby/moby#36994
make run시 어떤 인자든 추가할 수 있게 했어요. moby/moby#37190ContainerTop()(일명docker top)을 최적화했어요. moby/moby#37131- 32비트 머신에서 컴파일 문제를 수정했어요. moby/moby#37292
- API 버전을 v1.38로 업데이트했어요. moby/moby#37141
docker service update --host-add가 기존 host 항목을 업데이트하지 못하던 문제를 수정했어요. docker/cli#1054- ExecIds의 swagger 파일 타입을 수정했어요. moby/moby#36962
- swagger 볼륨 타입 생성을 수정했어요. moby/moby#37060
- volume/service 패키지의 잘못된 assertion을 수정했어요. moby/moby#37211
- 플러그인 실행 중 데몬 재시작 시 발생하던 패닉을 수정했어요. moby/moby#37234
- 'label' 옵션에서 'LABEL' 명령을 구성해 마지막 스테이지에 추가하도록 했어요. moby/moby#37011
- exec 시작과 resize 사이의 경쟁 조건을 수정했어요. moby/moby#37172
TestExecInteractiveStdinClose의 대체 실패 완화 방법을 적용했어요. moby/moby#37143- RawAccess가 마스킹되거나 읽기 전용으로 설정되지 않은 경로 집합을 허용하도록 했어요. moby/moby#36644
- github.com 접두사가 레거시 기능임을 명시적으로 표시했어요. moby/moby#37174
- Golang을 1.10.3으로 업그레이드했어요. docker/cli#1122
- xz 좀비 프로세스를 방지하기 위해 ReadCloser를 닫도록 했어요. moby/moby#34218
Daemon.ContainerStop(): 음수 타임아웃 문제를 수정했어요. moby/moby#36874Daemon.setMounts(): 슬라이스를 제자리에서 복사하도록 했어요. moby/moby#36991- swagger Port 정의의 IP 필드를 설명했어요. moby/moby#36971
- 볼륨 상호작용을 volumes 서비스로 추출했어요. moby/moby#36688
- docker image v1, v1.1, v1.2 스펙의 마크다운 형식을 수정했어요. moby/moby#37051
GetTimestamp파싱을 개선했어요. moby/moby#35402- Jsonmessage: aux 콜백에 메시지를 전달하도록 했어요. moby/moby#37064
- Overlay2: 사용하지 않는
cdMountFrom()헬퍼 함수를 제거했어요. moby/moby#37041 - Overlay: 알 수 없는 스토리지 드라이버 옵션을 조용히 무시하던 문제를 수정했어요. moby/moby#37040
- 사용하지 않는 일부 contrib 항목을 제거했어요. moby/moby#36977
- Restartmanager: 생성된 컨테이너에 재시작 정책을 적용하지 않도록 했어요. moby/moby#36924
- ExecIDs에 item-type을 설정했어요. moby/moby#37121
- Linux 버전 dockerd에서 매직 문자열 대신 go-systemd 상수를 사용하도록 했어요. moby/moby#37136
- stdlib TLS 다이얼러를 사용하도록 했어요. moby/moby#36687
- 예약된 네임스페이스(
com.docker.*,io.docker.*,org.dockerproject.*)를 사용하는 엔진 라벨이 설정된 경우 Docker object labels 문서에 따라 경고하도록 했어요. moby/moby#36921 - 메시지에서 누락된 플러그인 이름을 수정했어요. moby/moby#37052
- CONTRIBUTING.md의 링크 앵커를 수정했어요. moby/moby#37276
- Docker Toolbox 링크를 수정했어요. moby/moby#37240
- 잘못 사용된 skip 조건을 수정했어요. moby/moby#37179
- 일부 경우에 바인드 마운트가 작동하지 않던 문제를 수정했어요. moby/moby#37031
- attach 시 fd 누출을 수정했어요. moby/moby#37184
- fluentd 부분 감지 문제를 수정했어요. moby/moby#37029
- version-history.md의 잘못된 링크를 수정했어요. moby/moby#37049
- Dockerfile에서 D에 대해 vim이 대소문자를 구분하지 않도록 했어요. moby/moby#37235
- 테스트에
t.Name()을 추가해 서비스 이름이 고유하도록 했어요. moby/moby#37166 - backendfs가 d_type 지원 없는 extfs인 경우 추가 메시지를 표시하도록 했어요. moby/moby#37022
- 새 기능의 테스트를 위한 API 버전 확인을 추가했어요. moby/moby#37169
- push와 pull에 대한 이미지 메트릭을 추가했어요. moby/moby#37233
- 서비스에
init지원을 추가했어요. moby/moby#37183 - pkg/term/proxy.go에서 escapeKeys 배열 길이 검증을 추가했어요. moby/moby#36918
- overlay2에서 링크 ID가 비어 있으면 해당 링크를 제거하지 않도록 했어요. moby/moby#36161
Self()를 정의해 OpenBSD에서 빌드를 수정했어요. moby/moby#37301- Windows: Hyper-V 격리 컨테이너의 named pipe 지원을 수정했어요. docker/engine#2 docker/cli#1165
- 매니페스트 리스트가 항상 올바른 크기를 사용하도록 수정했어요. docker/cli#1183
- OCI 미디어 타입을 등록했어요. docker/engine#4
- containerd를 v1.1.1로 업데이트했어요. docker/engine#17
- LCOW: 매니페스트 리스트에서 Linux보다 Windows를 우선하도록 했어요. docker/engine#3
- CVE-2018-10892를 해결하기 위해 containerd를 직접 사용하는 코드 경로에 적용되는 업데이트된
MaskPaths를 추가했어요. docker/engine#15 - CVE-2018-10892를 해결하기 위해 마스킹 경로에
/proc/acpi를 추가했어요. docker/engine#14 - 바인드 마운트 자동 생성 시 경쟁 조건을 수정했어요. docker/engine#11
Swarm Mode
docker stack ls에서--orchestrator=all로 Swarm과 Kubernetes 양쪽의 스택을 모두 나열하도록 했어요. Kubernetes에서docker stack ls에--namespace를 여러 번 사용할 수 있게 했어요. docker/cli#1031- 더 이상 사용되지 않는 grpc 메타데이터 래퍼를 제거하기 위해 SwarmKit을 업그레이드했어요. moby/moby#36905
- Swarm과 Kubernetes 호스트가 일치하지 않을 때
--orchestrator=all사용 시 오류를 발생시키도록 했어요. docker/cli#1035 - Kubernetes가 오케스트레이터로 정의된 경우 깨지던 swarm 명령을 수정했어요.
--orchestrator플래그는 더 이상 전역 플래그가 아니라 stack 명령과 하위 명령에만 적용되는 로컬 플래그예요. docker/cli#1137 docker/cli#1139 - 태스크 리퍼(task reaper) 수정과 추가 메트릭을 포함하도록 swarmkit을 업그레이드했어요. docker/engine#13
- 할당되지 않은 태스크가 있는 서비스가 삭제될 때 누출이 발생하던 문제를 방지했어요. docker/engine#27
- 디스패처의 경쟁 조건 배치(racy batching) 문제를 수정했어요. docker/engine#27