Docker Engine 이전 릴리스 노트
Docker Engine 이전 릴리스 노트
Docker Engine의 과거 릴리스 기록을 한 번에 쭉 살펴보는 시간이에요. 오래된 버전일수록 지금은 사라진 기능이나 deprecated 처리된 내용이 많으니, 현재 Docker를 쓰는 입장에서 "아, 이런 것도 있었지" 하고 참고하시면 좋아요. 각 버전별로 주요 변경 사항과 주의할 점을 꼼꼼히 정리해 드릴게요.
출처: 공식문서
본문
1.13.1 (2017-02-08)
중요!
Linux 배포판에서
devicemapper가 기본 스토리지 드라이버였던 경우, 이제는 커널이 지원한다면overlay2또는overlay가 기본으로 사용돼요. devicemapper를 계속 쓰려면--storage-driver데몬 옵션이나daemon.json설정 파일에서"storage-driver"를 직접 지정해 주면 됩니다.
중요!
Docker 1.13에서는 관리형 플러그인 API가 Docker 1.12의 실험 버전과 비교해서 변경됐어요. Docker 1.12에서 설치한 플러그인은 1.13으로 업그레이드하기 전에 반드시 제거해야 해요.
docker plugin rm명령으로 플러그인을 제거할 수 있습니다.만약 기존 플러그인을 제거하지 않고 이미 1.13으로 업그레이드했다면, Docker 데몬 시작 시 이런 메시지가 보일 수 있어요:
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv이 문제를 해결하려면 다음 단계를 따라 플러그인을 수동으로 모두 제거하세요:
/var/lib/docker/plugins/에서plugins.json을 제거합니다.- Docker를 재시작하고 데몬이 에러 없이 시작되는지 확인합니다.
- 플러그인을 다시 설치합니다.
Contrib
Remote API (v1.26) & Client
- compose 파일을 사용한
docker stack deploy에서 시크릿(secrets)을 지원해요 #30144
Runtime
docker system df의 크기 계산 문제 수정 #30378- Swarm 인증서가 만료됐을 때
docker inspect에서 발생하던 에러 수정 #29246 - v1 플러그인에서 activate 에러 발생 시 데드락이 걸리던 문제 수정 #30408
- SELinux 회귀(regression) 문제 수정 #30649
Plugins
Windows
1.13.0 (2017-01-18)
중요!
Linux 배포판에서
devicemapper가 기본 스토리지 드라이버였던 경우, 이제는 커널이 지원한다면overlay2또는overlay가 기본으로 사용돼요. devicemapper를 계속 쓰려면--storage-driver데몬 옵션이나daemon.json설정 파일에서"storage-driver"를 직접 지정해 주면 됩니다.
중요!
Docker 1.13에서는 관리형 플러그인 API가 Docker 1.12의 실험 버전과 비교해서 변경됐어요. Docker 1.12에서 설치한 플러그인은 1.13으로 업그레이드하기 전에 반드시 제거해야 해요.
docker plugin rm명령으로 플러그인을 제거할 수 있습니다.만약 기존 플러그인을 제거하지 않고 이미 1.13으로 업그레이드했다면, Docker 데몬 시작 시 이런 메시지가 보일 수 있어요:
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv이 문제를 해결하려면 다음 단계를 따라 플러그인을 수동으로 모두 제거하세요:
/var/lib/docker/plugins/에서plugins.json을 제거합니다.- Docker를 재시작하고 데몬이 에러 없이 시작되는지 확인합니다.
- 플러그인을 다시 설치합니다.
Builder
- 빌드 시 캐시 소스로 사용할 이미지를 지정하는 기능이 추가됐어요. 이 이미지들은 로컬에 부모 체인이 없어도 되고 다른 레지스트리에서 가져올 수도 있어요 #26839
- (실험적) 빌드 성공 후 이미지 레이어를 FROM 이미지로 스쿼시(squash)하는 옵션 추가 #22641
- 이스케이프 문자 다음에 빈 줄이 올 때 dockerfile 파서가 잘못 동작하던 문제 수정 #24725
docker build에 단계 번호 표시 추가 #24978- 이미지 빌드 중 빌드 컨텍스트 압축 지원 #25837
docker build에--network옵션 추가 #27702docker build와docker run의--label플래그 동작이 일관되지 않던 문제 수정 #26027- overlay 스토리지 드라이버 사용 시 이미지 레이어 불일치 문제 수정 #27209
- 사용하지 않는 build-arg를 이제 허용해요. 에러 대신 경고를 표시하고 빌드는 계속 진행됩니다 #27412
- Windows에서 빌더 캐시 문제 수정 #27805
- Windows 빌더에서
USER명령 허용 #28415 - Windows에서 환경 변수 대소문자 구분 처리 #28725
Contrib
- Ubuntu 16.04 Xenial PPC64LE용 docker deb 빌드 지원 #23438
- Ubuntu 16.04 Xenial s390x용 docker deb 빌드 지원 #26104
- Ubuntu 16.10 Yakkety Yak PPC64LE용 docker deb 빌드 지원 #28046
- VMWare Photon OS용 RPM 빌더 추가 #24116
- tgz에 셸 완성(completion) 스크립트 추가 #27735
- 중국 미러를 사용할 수 있도록 설치 스크립트 업데이트 #27005
- Ubuntu 16.10 Yakkety Yak용 DEB 빌더 추가 #27993
- Fedora 25용 RPM 빌더 추가 #28222
- aarch64용
make deb지원 추가 #27625
Distribution
- notary 의존성을 0.4.2로 업데이트 (전체 변경 로그는 여기) #27074
- Windows에서 컴파일 지원 docker/notary#970
- 클라이언트 인증 오류 메시지 개선 docker/notary#972
~/.docker/trust/private디렉터리 어디에 있든 키를 찾을 수 있게 지원. 더 이상root_keys나tuf_keys하위 디렉터리만 찾지 않아요 docker/notary#981- 이전에는 업데이트 중 어떤 에러가 나도 클라이언트가 캐시로 폴백했는데, 이제는 네트워크 에러나 서버를 사용할 수 없거나 TUF 데이터가 없는 경우에만 캐시로 폴백해요. 잘못된 TUF 데이터(예: 잘못된 root rotation)가 있으면 업데이트가 실패합니다 docker/notary#982
- root 검증과 yubikey 디버그 로깅 개선 docker/notary#858 docker/notary#891
- root 또는 delegations 인증서가 곧 만료되면 경고 표시 docker/notary#802
- 역할 메타데이터가 곧 만료되면 경고 표시 docker/notary#786
- passphrase 검색 시도 횟수와 터미널 감지 문제 수정 docker/notary#906
- 서로 다른 사용자가 인증된 레지스트리에 같은 레이어를 푸시할 때 불필요한 blob 업로드 방지 #26564
- 레지스트리 자격 증명의 외부 저장 허용 #26354
Logging
- 모든 로깅 드라이버에서 기본 로깅 태그 값을 표준화 #22911
- 긴 로그 라인 처리 시 성능과 메모리 사용 개선 #22982
- Windows에서 syslog 드라이버 활성화 #25736
- Logentries 드라이버 추가 #27471
- AWS 로그 드라이버가 태그를 지원하도록 업데이트 #27707
- fluentd용 Unix 소켓 지원 #26088
- Windows에서 fluentd 로깅 드라이버 활성화 #28189
- journald 필드 이름으로 사용될 때 docker 라벨을 정리(sanitize)하도록 처리 #23725
docker logs --tail이 예상보다 적은 줄을 반환하던 문제 수정 #28203- Splunk 로깅 드라이버: 성능 및 안정성 개선 #26207
- Splunk 로깅 드라이버: 포맷 설정 가능, 연결 검증 건너뛰기 옵션 #25786
Networking
--attachable네트워크 지원 추가. swarm-mode overlay 네트워크에서docker run이 동작할 수 있게 해줘요 #25962docker service create의--publish옵션으로 서비스에서 host port PublishMode 지원 #27917 및 #28943- Windows Server 2016 overlay 네트워크 드라이버 지원 (예정된 ws2016 업데이트 필요) #28182
- 기본
FORWARD정책을DROP으로 변경 #28257 - Windows의 사전 정의된 네트워크에 정적 IP 주소 지정 지원 #22208
docker run의--publish플래그가 IPv6 주소와 동작하지 않던 문제 수정 #27860- 네트워크 inspect 시 게이트웨이가 마스크와 함께 표시되던 문제 수정 #25564
- 브리지에 여러 주소가 있을 때
--fixed-cidr이 올바른 주소를 갖지 못하던 문제 수정 #26659 docker network inspect에 생성 타임스탬프 추가 #26130- swarm overlay 네트워크의
docker network inspect에서 피어 노드 표시 #28078 - 서비스 VIP 주소에 대한 ping 활성화 #28019
Plugins
- 플러그인을 experimental에서 정식 기능으로 이동 #28226
docker plugin remove에--force옵션 추가 #25096- 인증(authorization) 플러그인 동적 리로드 지원 #22770
docker plugin ls에 설명(description) 추가 #25556docker plugin inspect에-f/--format옵션 추가 #25990docker plugin create명령 추가 #28164- 인증 플러그인에 요청의 TLS 피어 인증서 전송 #27383
- swarm-mode에서 글로벌 스코프 네트워크 및 ipam 플러그인 지원 #27287
docker plugin install을/privileges와/pull두 API 호출로 분리 #28963
Remote API (v1.25) & Client
- Compose 파일에서
docker stack deploy지원 #27998 - (실험적) checkpoint 및 restore 구현 #22049
docker info에--format플래그 추가 #23808docker volume create에서--name제거 #23830docker stack ls추가 #23886- 새로운
is-taskps 필터 추가 #24411 docker service create에--env-file플래그 추가 #24844docker stats에--format옵션 추가 #24987- swarm 노드에서
docker node ps가 기본적으로self를 가리키도록 변경 #25214 docker service create에--group옵션 추가 #25317- service/node/stack ps 출력에
--no-trunc옵션 추가 #25337 - go 클라이언트가 attach 과정의 일부로 컨테이너 로그를 요청할 수 있도록
ContainerAttachOptions에 Logs 추가 #26718 - 클라이언트가 더 오래된 서버와 통신할 수 있게 허용 #27745
- 컨테이너 제거가 진행 중임을 클라이언트 측에서 사용자에게 알림 #26074
- /info 엔드포인트에
Isolation추가 #26255 - /info 엔드포인트에
userns추가 #27840 - services 엔드포인트에서 한 번에 두 개 이상의 모드를 요청할 수 없도록 제한 #26643
- /containers/create API에서 마운트를 더 세밀하고 안전하게 지정할 수 있는 기능 추가 #22373
network ls와volume ls에--format플래그 추가 #23475- 최상위
docker inspect명령이 모든 종류의 리소스를 검사할 수 있게 허용 #23614 docker run과docker create의 CPU 리소스 제어를 위한--cpus플래그 추가,HostConfig에NanoCPUs추가 #27958docker run또는docker create에서--entrypoint를 해제(unset)할 수 있게 허용 #23718- 일관성을 위해
docker image와docker container명령을 추가해 CLI 명령 재구성 #26025 service ls출력에서COMMAND열 제거 #28029docker events에--format옵션 추가 #26268docker node ps에서 여러 노드 지정 허용 #26299docker images출력에서 소수점 이하 자릿수를 2자리로 제한 #26303docker run에--dns-option추가 #28186- 컨테이너 commit 이벤트에 Image ID 추가 #28128
docker info에 외부 바이너리 버전 추가 #27955docker info출력에Manager Addresses정보 추가 #28042docker images에 새로운 reference 필터 추가 #27872
Runtime
- 실험 기능을 별도 빌드로 제공하는 대신 활성화할 수 있도록
--experimental데몬 플래그 추가 #27223 - 데몬 종료 전 컨테이너를 정상적으로 중지하는 기본 시간(초)을 지정하는
--shutdown-timeout데몬 플래그 추가 #23036 - 개별 컨테이너의 중지 시간(초)을 지정하는
--stop-timeout추가 #22566 $PATH에서 하드코딩된docker-proxy대신 userland proxy를 직접 구성할 수 있는--userland-proxy-path데몬 플래그 추가 #26882dockerd와docker run에 좀비 프로세스를 수거하는 init 프로세스 tini를 PID 1로 사용하는--init불리언 플래그 추가 #26061 #28037docker-init바이너리 경로를 구성할 수 있는--init-path데몬 플래그 추가 #26941- 설정에서 insecure registry의 라이브 리로드 지원 #22337
- Windows 데몬에서 storage-opt size 지원 #23391
docker run --rm을 클라이언트에서 데몬으로 이동해 신뢰성 개선 #20848- 커널에서
CONFIG_RT_GROUP_SCHED가 활성화된 경우 컨테이너가 실시간 스레드를 실행할 수 있게 하는--cpu-rt-period및--cpu-rt-runtime플래그 지원 #23430 - 병렬 stop, pause, unpause 허용 #24761 / #26778
- overlay2용 XFS 쿼터 구현 #24771
service tasks --filter의 부분/전체 필터 문제 수정 #24850- 엔진이 user namespace 안에서 실행될 수 있게 허용 #25672
- devicemapper graphdriver 사용 시 device 지연 제거와 resume 사이의 경쟁 조건 수정 #23497
- Windows에서
docker stats지원 #25737 --userns=host일 때--pid=host와--net=host사용 허용 #25771- (실험적) 기본
container,image,daemon작업에 대한 메트릭(Prometheus) 출력 추가 #25820 NetworkDisabled=true일 때docker stats에서 발생하던 문제 수정 #25905- Windows에서
docker top지원 #25891 - exec된 프로세스의 pid 기록 #27470
getent를 통한 사용자/그룹 조회 지원 #27599- 시스템 리소스 관리를 위한
df와prune하위 명령을 가진 새docker system명령과docker {container,image,volume,network} prune하위 명령 추가 #26108 #27525 / #27525 - devicemapper에서 ENOSPC 발생 시 xfs max_retries를 0으로 설정해 컨테이너를 중지하거나 종료할 수 없던 문제 수정 #26212
- CentOS의 devicemapper에서
docker cp가 컨테이너 볼륨 디렉터리로 복사하지 못하던 문제 수정 #28047 - overlay(2) graphdriver 정식 채택(promote) #27932
- 기본 seccomp 프로필을 재정의하는 seccomp 프로필 경로를 지정하는
--seccomp-profile데몬 플래그 추가 #26276 - 데몬에
--default-ulimit가 설정된 경우docker inspect의 ulimit 문제 수정 #26405 - 오래된 커널에서 빌드 중 overlay 문제에 대한 해결책 추가 #28138
docker exec -t에TERM환경 변수 추가 #26461docker kill시 컨테이너의--stop-signal설정을 따르도록 수정 #26464
Swarm Mode
- 시크릿 관리 추가 #27794
- 서비스 옵션 템플릿화(hostname, mounts, 환경 변수) 지원 #28025
docker service inspect --pretty출력에 엔드포인트 모드 표시 #26906- 태스크 이름에서 서비스 ID를 줄여
docker service ps출력을 더 보기 좋게 개선 #28088 docker node ps가 기본적으로 현재 노드를 가리키도록 변경 #25214- service create에
--dns,--dns-opt,--dns-search옵션 추가 #27567 docker service update에--force옵션 추가 #27596docker service create와docker service update에--health-*및--no-healthcheck플래그 추가 #27369docker service ps에-q옵션 추가 #27654docker service ls에 글로벌 서비스 수 표시 #27710docker service update에서--name플래그 제거. 이 플래그는docker service create에서만 동작하므로 update 명령에서 제거됐어요 #26988- 일시적인 네트워킹 문제로 워커 노드가 복구되지 못하던 문제 수정 #26646
- 헬스 인지 로드 밸런싱 및 DNS 레코드 지원 #27279
docker service create에--hostname옵션 추가 #27857docker service create에--host옵션,docker service update에--host-add,--host-rm옵션 추가 #28031docker service create/update에--tty플래그 추가 #28076- 매니저가 바라보는 노드 IP 주소를 자동 감지, 저장, 노출 #27910
- 매니저 키와 raft 데이터의 저장 시 암호화 #27967
docker service update에--update-max-failure-ratio,--update-monitor,--rollback플래그 추가 #26421- 컨테이너 안에서 실행된
docker swarm init의 주소 자동 발견 문제 수정 #26457 - (실험적) 서비스 로그를 보기 위한
docker service logs명령 추가 #28089 docker service create와update에서 이미지를 digest로 고정(pin) #28173docker node rm --force와docker swarm leave --force에 짧은(-f) 플래그 추가 #28196- Raft 스냅샷 커스터마이즈 옵션(
--max-snapshots,--snapshot-interval) 추가 #27997 - digest로 고정된 이미지는 다시 pull하지 않음 #28265
- Windows용 Swarm-mode 지원 #27838
- 서비스에서 hostname 업데이트 허용 #28771
- v2 플러그인 지원 #29433
- 서비스용 콘텐츠 트러스트 추가 #29469
Volume
- 볼륨에 라벨 지원 추가 #21270
- 라벨로 볼륨 필터링 지원 #25628
- 이미 삭제된 볼륨의 데이터를 강제로 제거하는
docker volume rm의--force플래그 추가 #23436 docker volume inspect가 볼륨 생성 시 사용된 모든 옵션을 표시하도록 개선 #26671- 로컬 NFS 볼륨의 호스트명 해석 지원 #27329
Security
Deprecation
docker daemon명령을 deprecated로 표시. 데몬은 별도 바이너리(dockerd)로 이동했으니 그걸 사용하세요 #26834- 버전이 없는 API 엔드포인트 deprecated #28208
- Ubuntu 15.10 (Wily Werewolf) 지원 플랫폼에서 제거. Ubuntu 15.10은 EOL이라 더 이상 업데이트가 없어요 #27042
- Fedora 22 지원 플랫폼에서 제거. Fedora 22는 EOL이에요 #27432
- Fedora 23 지원 플랫폼에서 제거. Fedora 23은 EOL이에요 #29455
docker pull의repo:shortid문법 deprecated #27207- overlay 및 overlay2 스토리지 드라이버에서
d_type없는 backing filesystem deprecated #27433 - Dockerfile의
MAINTAINERdeprecated #25466 /images/json엔드포인트의filter파라미터 deprecated #27872- 중복 엔진 라벨 설정 deprecated #24533
NetworkSettings의 "top-level" 네트워크 정보 deprecated #28437
1.12.6 (2017-01-10)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
참고!
Docker 1.12.5부터
--ipv6옵션을 지정할 때 IPv6 서브넷이 제공되거나 IPAM 드라이버가 제공할 수 있는지 올바르게 검증해요.
--fixed-cidr-v6옵션 없이--ipv6옵션을 사용 중이라면 Docker 데몬이 다음 메시지와 함께 시작을 거부할 거예요:Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to parse pool request for address space "LocalDefault" pool " subpool ": could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network이 에러를 해결하려면
--ipv6플래그를 제거하거나(Docker 1.12.3 이하와 동일한 동작 유지),--fixed-cidr-v6플래그 값으로 IPv6 서브넷을 제공하세요.비슷하게, 기본 IPAM 드라이버로 네트워크를 만들 때 IPv6
--subnet없이--ipv6플래그를 지정하면 네트워크 생성이 다음 메시지와 함께 실패해요:Error response from daemon: failed to parse pool request for address space "LocalDefault" pool "" subpool "": could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network이 경우에도
--ipv6플래그를 제거하거나--subnet플래그 값으로 IPv6 서브넷을 제공하면 됩니다.IPv6 서브넷 자동 할당을 지원하는 외부 IPAM 드라이버를 사용하면 네트워크 생성이 성공할 거예요.
Runtime
- runC 권한 상승 취약점(CVE-2016-9962) 수정
1.12.5 (2016-12-15)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
참고!
Docker 1.12.5부터
--ipv6옵션을 지정할 때 IPv6 서브넷이 제공되거나 IPAM 드라이버가 제공할 수 있는지 올바르게 검증해요.
--fixed-cidr-v6옵션 없이--ipv6옵션을 사용 중이라면 Docker 데몬이 다음 메시지와 함께 시작을 거부할 거예요:Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to parse pool request for address space "LocalDefault" pool " subpool ": could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network이 에러를 해결하려면
--ipv6플래그를 제거하거나(Docker 1.12.3 이하와 동일한 동작 유지),--fixed-cidr-v6플래그 값으로 IPv6 서브넷을 제공하세요.비슷하게, 기본 IPAM 드라이버로 네트워크를 만들 때 IPv6
--subnet없이--ipv6플래그를 지정하면 네트워크 생성이 다음 메시지와 함께 실패해요:Error response from daemon: failed to parse pool request for address space "LocalDefault" pool "" subpool "": could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network이 경우에도
--ipv6플래그를 제거하거나--subnet플래그 값으로 IPv6 서브넷을 제공하면 됩니다.IPv6 서브넷 자동 할당을 지원하는 외부 IPAM 드라이버를 사용하면 네트워크 생성이 성공할 거예요.
Runtime
- stdin close 이벤트 전송 시 경쟁 조건 수정 #29424
Networking
- 이전 Docker 버전에서
--ipv6로 생성하고 IPv6--subnet이 없는 네트워크에 대해docker network ls에서 panic이 발생하던 문제 수정 #29416
Contrib
- Darwin에서 컴파일 문제 수정 #29370
1.12.4 (2016-12-12)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
Runtime
- 볼륨 메타데이터가 제거되지 않던 문제 수정 #29083
- 컨테이너 락을 잡고 있는 것을 방지하기 위해 스트림을 비동기적으로 닫도록 수정 #29050
- 새로 생성된 컨테이너 볼륨의 selinux 라벨 수정 #29050
- hostname 검증 제거 #28990
- IO 경쟁으로 인한 데드락 수정 #29095 #29141
- 컨테이너가 재시작 중이면 빈 stats 반환 #29150
- 볼륨 스토어 락킹 수정 #29151
- API에서 일관된 상태 코드 보장 #29150
- overlay2에서 잘못된 불투명 디렉터리 권한 수정 #29093
- 플러그인 콘텐츠 감지 및
docker pull시 에러 출력 #29297
Swarm Mode
- Swarmkit 업데이트 #29047
- orchestrator/global: 업데이트 시 데드락 수정 docker/swarmkit#1760
- 리더 전환 시 기존 네트워크의 vxlan id 보존 docker/swarmkit#1773
- "default"가 아닌 이름의 swarm spec 거부 #29152
Networking
- libnetwork 업데이트 #29004 #29146
- 내장 DNS에서 panic 수정 docker/libnetwork#1561
- 글로벌 스코프 네트워크에서
--link-local-ip전달 시 unmarshalling panic 수정 docker/libnetwork#1564 - 네트워크 플러그인이 nil StaticRoutes를 반환할 때 panic 수정 docker/libnetwork#1563
osl.(*networkNamespace).DeleteNeighbor에서 panic 수정 docker/libnetwork#1555- swarm 네트워킹의 동시 map 읽기/쓰기 panic 수정 docker/libnetwork#1570
- 컨테이너 안에서 Docker를 실행할 때 암호화 네트워크 허용 docker/libnetwork#1502
- IPv6 풀 자동 할당을 차단하지 않도록 수정 docker/libnetwork#1538
- netlink 호출에 타임아웃 설정 docker/libnetwork#1557
- 네트워킹 로컬 스토어 타임아웃을 1분으로 증가 docker/libkv#140
libnetwork.(*sandbox).execFunc에서 panic 수정 docker/libnetwork#1556- 내부 네트워크에서 icc=false 적용 docker/libnetwork#1525
Logging
- syslog 로그 드라이버 업데이트 #29150
Contrib
- fedora 설치 전 "dnf upgrade" 실행 #29150
- RPM 패키지에 build-date 복원 #29150
- 배포판 코드명을 구분하기 위해 deb 패키지 파일명에 배포판 포함 #27829
1.12.3 (2016-10-26)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나 Docker 서비스 시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
Runtime
- 컨테이너의 ambient capability 사용 문제 수정 (CVE-2016-8867) #27610
- Windows용 libcontainerd에서 데드락 방지 #27136
- CopyFileWithTar의 에러 보고 수정 #27075
- 컨테이너 재시작 시 헬스 상태를 starting으로 리셋 #27387
- 스토리지 디렉터리에서 공유 마운트 전파(shared mount propagation)를 올바르게 처리 #27609
- docker exec 수정 #27610
- containerd의 이벤트 로그와의 하위 호환성 수정 #27693
Swarm Mode
- restart-policy 변환 문제 수정 #27062
- Swarmkit 업데이트 #27554
- 이미 재시작된 태스크를 다시 재시작하지 않도록 수정 docker/swarmkit#1305
- 서로 다른 프로토콜을 사용할 때 중복 게시 포트 허용 docker/swarmkit#1632
- 서비스에서 무작위로 할당된 여러 게시 포트 허용 docker/swarmkit#1657
- 초기화 시 할당이 발생할 때 panic 수정 docker/swarmkit#1651
Networking
- libnetwork 업데이트 #27559
- sandbox를 문자열로 직렬화할 때 경쟁 조건 수정 docker/libnetwork#1495
- 삭제 중 경쟁 조건 수정 docker/libnetwork#1503
- bridge 드라이버에서 연결성 철회 시 엔드포인트 포트 정보 리셋 docker/libnetwork#1504
- 네트워킹 코드에서 데드락 수정 docker/libnetwork#1507
- 로드 밸런서 상태에서 경쟁 조건 수정 docker/libnetwork#1512
Logging
- fluent-logger-golang을 v1.2.1로 업데이트 #27474
Contrib
1.12.2 (2016-10-11)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
Runtime
docker ps필터링 중 경쟁 조건으로 인한 panic 수정 #26049- aufs 스토리지 드라이버 사용 시 "Unable to remove filesystem" 에러를 방지하는 재시도 로직 구현 #26536
dm.use_deferred_removal이 활성화된 경우 devicemapper가 device 심볼릭 링크를 제거하지 않도록 방지 #24740- 잘못된 옵션으로 명령을 실행할 때 CLI가 올바른 종료 코드를 반환하지 않던 문제 수정 #26777
- 헬스 체크에서 stdout/stderr 처리 버그로 인한 panic 수정 #26507
- exec의 자식 프로세스 처리 수정 #26874
- HEALTHCHECK CMD의 exec 형식 수정 #26208
Networking
- armv5에서 데몬 시작 panic 수정 #24315
- libnetwork 벤더링 #26879 #26953
- 에이전트 조인 실패 시 조기 반환 방지 docker/libnetwork#1473
- 서비스 게시 포트 정리 문제 수정 docker/libnetwork#1432 docker/libnetwork#1433
- 일시적인 gossip 실패에서 올바르게 복구 docker/libnetwork#1446
- 노드 이름 충돌을 피하기 위해 gossip 클러스터에 알려진 노드 이름 구분 docker/libnetwork#1451
- gossip용 사용자 제공 listen 주소 존중 docker/libnetwork#1460
- 같은 호스트의 서비스 간 게시 포트를 통한 연결 허용 docker/libnetwork#1398
- ingress sandbox 이름을 무작위 ID에서
ingress_sbox로 변경 docker/libnetwork#1449 - ingress 네트워크에서 서비스 디스커버리 비활성화 docker/libnetwork#1489
Swarm Mode
- 노드가 클러스터에 조인할 때 노드 주소의 원격 감지 수정 #26211
- SwarmKit 벤더링 #26765
- 상태 업데이트 실패 후 세션 바운스 docker/swarmkit#1539
- 가능한 raft 데드락 수정 docker/swarmkit#1537
- 엔드포인트 없이 서비스가 업데이트될 때 panic 및 엔드포인트 누수 수정 docker/swarmkit#1481
service create또는service update에서 같은 포트를 두 번 게시하면 에러 발생 docker/swarmkit#1495- 서비스 변경 사항이 감지되지 않아 서비스가 업데이트되지 않던 문제 수정 docker/swarmkit#1497
- ingress 네트워크에서 서비스 생성 금지 docker/swarmkit#1600
Contrib
- debian sysv-init 스크립트가
docker daemon대신dockerd를 사용하도록 업데이트 #25869 - MacOS Sierra에서 docker 클라이언트 실행 시 안정성 개선 #26875
- debian stretch 설치 문제 수정 #27184
Windows
- ConEmu에서 docker 클라이언트 실행 시 화살표 탐색이 동작하지 않던 문제 수정 #25578
1.12.1 (2016-08-18)
중요!
Docker 1.12부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
Client
node inspect --pretty에Joined at정보 추가 #25512service inspect에서 크래시 수정 #25454service update --env-add가 의도대로 동작하지 않던 문제 수정 #25427service update --publish-add가 의도대로 동작하지 않던 문제 수정 #25428service update --network-add와service update --network-rm플래그 제거. 이 기능은 1.12에서 아직 구현되지 않았는데 1.12.0 클라이언트에 실수로 추가됐기 때문이에요 #25646
Contrib
- Debian Jessie, Ubuntu Trusty, Raspbian Jessie용 공식 ARM 설치 #24815 #25591
- 배포판/버전별 selinux 정책 추가. Fedora 24와 Oracle Linux에서 설치 실패를 일으키던 문제 수정 #25334 #25593
Networking
- Swarm Mode의 Docker overlay 드라이버에서 호스트명으로 컨테이너에 접근할 수 없던 문제 수정 #25603 #25648
- 게시 포트가 있는 서비스에서 무작위 네트워크 문제 수정 #25603
- 스케일 다운 후 업 시 서비스 간 통신이 불안정하던 문제 수정 #25603
- 노드의 모든 태스크를 제거했다가 다시 추가하면 다른 서비스와의 연결이 끊기던 문제 수정 #25603
- 시작에 실패한 태스크가 경쟁 조건을 일으켜 실제 에러를 가리는
network xxx not found에러를 발생시키던 문제 수정 #25550 - RFC 2782 형식이 아닌 SRV 레코드를 사용하는 외부 서비스에 대한 SRV 레코드 검증 완화 #25739
Plugins (experimental)
- 데몬 이벤트가 플러그인 라이프사이클 이벤트를 수신하도록 변경 #24760
- 플러그인 활성화 전에 플러그인 상태 확인 #25033
plugin rm시 파일시스템에서 플러그인 루트 제거 #25187- 플러그인이 두 개 이상 설치될 때 데드락 방지 #25384
Runtime
Security
- 호스트의 정보 누출을 방지하기 위해 마스킹된 경로 목록에
/proc/timer_list추가 #25630 - systemd가
--cap-add DAC_READ_SEARCH를 추가하거나 seccomp 필터링을 비활성화하지 않고도--cap-add SYS_ADMIN만으로 실행될 수 있게 허용 #25567
Swarm
- 쿼럼 손실 후 새 리더 선출에 swarm이 갇힐 수 있던 문제 수정 #25055
- 리더 장애 조치 후 원치 않는 컨테이너 재스케줄링 수정 #25017
- swarm 루트 CA 키를 P256 곡선으로 변경 swarmkit#1376
- swarm에서 노드 강제 제거 허용 #25159
- 노드가 swarm을 떠날 때 연결 누수 수정 swarmkit/#1277
- 더 많은 클럭 스큐를 허용하기 위해 swarm 인증서를 1시간 소급 swarmkit/#1243
- 스케줄 불가능한 태스크가 많을 때 높은 CPU 사용 방지 swarmkit/#1287
- 글로벌 태스크가 시작되지 않던 문제 수정 swarmkit/#1295
- raft 로그 가비지 컬렉션 swarmkit/#1327
Volume
- 데몬 재시작 후 로컬 볼륨 옵션 유지 #25316
- 볼륨 마운트 해제 시 마운트 ID가 반환되지 않던 문제 수정 #25333
- 볼륨 마운트가 실수로 바인드 마운트를 생성할 수 있던 문제 수정 #25309
docker service create --mount type=bind,...가 소스 경로를 생성하는 대신 올바르게 검증하도록 수정 #25494
1.12.0 (2016-07-28)
중요!
Docker 1.12.0부터 rpm 기반 설치(RHEL, Fedora, CentOS, Oracle Linux 7 포함)용 systemd unit 파일이 업데이트됐어요. 이전 Docker 버전에서 업그레이드할 때 다음 상황이면 unit 파일의 업데이트 버전이 자동으로 설치되지 않거나
docker service시작에 실패할 수 있어요:
- systemd unit 파일(
/usr/lib/systemd/system/docker.service)에 로컬 변경 사항이 있거나- systemd drop-in 파일이 있고
ExecStart지시문에-H fd://가 포함된 경우
docker service를 시작하면 이런 에러가 발생해요:Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.또는
no sockets found via socket activation: make sure the service was started by systemd.해결 방법:
- 현재 unit 파일을 백업하고 Docker 1.12에 포함된 버전으로 교체하세요.
/usr/lib/systemd/system/docker.service파일에Requires=docker.socket지시문이 있으면 제거하세요.ExecStart지시문에서-H fd://를 제거하세요 (메인 unit 파일과 drop-in 파일 모두).변경 후
sudo systemctl daemon-reload와sudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.
중요!
Docker 1.12부터 Linux
docker설치는dockerd와docker-proxy라는 두 개의 추가 바이너리를 갖게 돼요. Docker 설치 스크립트가 있다면 그에 맞게 업데이트하세요.
Builder
- 사용자 정의 헬스 체크를 지원하는 새로운
HEALTHCHECKDockerfile 명령 #23218 - Dockerfile에서 셸 형식 명령에 사용할 기본 셸을 지정하는 새로운
SHELLDockerfile 명령 #22489 - Dockerfile에서 파일 경로의 플랫폼별 파싱을 지원하는
#escape=Dockerfile 지시문 추가 #22268 .dockerignore에서 주석 지원 #23111- Dockerfile에서 UTF-8 지원 #23372
Dockerfile과.dockerignore에 UTF-8 BOM 바이트가 있으면 건너뜀 #23234- Windows: Linux와 일치하도록
ARG지원 #22508 - 브리지 네트워크가 비활성화된 데몬으로 빌드할 때 에러 메시지 수정 #22932
Contrib
Distribution
- 네트워크 연결이 다중 다운로드/업로드를 지원하지 않는 상황에 유용한
--max-concurrent-downloads및--max-concurrent-uploads데몬 플래그 추가 #22445 - 레지스트리 작업이
ALL_PROXY환경 변수를 존중하도록 변경 #22316 docker load시 사용자에게 더 많은 정보 제공 #23377- push/pull한 이미지의 레지스트리 digest 메타데이터를 항상 저장 #23996
Logging
- Syslog 로깅 드라이버가 DGRAM 소켓 지원 #21613
- 로그 태그도 표시하는
docker logs의--details옵션 추가 #21889 - syslog 로거가 env와 labels에 접근할 수 있게 지원 #21724
- syslog 타임스탬프에서 마이크로초 해상도를 허용하는
rfc5424microsyslog-format 옵션 추가 #21844 - 컨테이너 생성 시 데몬 로그 옵션 상속 #21153
- 로그 메시지 태그에서
docker/접두사 제거하고{{.DaemonName}}으로 대체. 사용자가 접두사를 변경할 수 있게 됐어요 #22384
Networking
- IPVS를 사용한 내장 Virtual-IP 기반 내부 및 ingress 로드 밸런싱 #23361
- ingress overlay 네트워크를 사용한 Routing Mesh #23361
- 암호화된 컨트롤 플레인과 데이터 플레인을 사용한 보안 멀티호스트 overlay 네트워킹 #23361
- MacVlan 드라이버가 experimental에서 정식으로 전환 #23524
network ls에driver필터 추가 #22319docker ps --filter에network필터 추가 #23300- 컨테이너의 link-local 주소를 지정하는
create,run,network connect의--link-local-ip플래그 추가 #23415 - 네트워크 라벨 필터 지원 #21495
- Swarm-Mode의 Overlay 네트워킹에서 외부 KV-Store 의존성 제거 #23361
- 기본 네트워크 별칭으로 컨테이너의 short-id 추가 #21901
run옵션--dns와--net=host가 더 이상 상호 배타적이지 않음 #22408- 생성된 이름으로 컨테이너 이름을 바꿀 때 DNS 문제 수정 #22716
- inspect 출력의 불일치를 해결하기 위해
network inspect -f {{.Id}}와network inspect -f {{.ID}}모두 허용 #23226
Plugins (experimental)
install,enable,disable,rm,inspect,set하위 명령으로 플러그인을 관리하는 새로운plugin명령 #23446
Remote API (v1.24) & Client
- 바이너리를
docker(클라이언트)와dockerd(데몬) 두 개로 분리 #20639 docker images --filter에before와since필터 추가 #22908docker search에--limit옵션 추가 #23107docker search에--filter옵션 추가 #22369docker info출력에 보안 옵션 추가 #21172 #23520docker info출력에 insecure registry 추가 #20410- Docker 인증에 TLS 사용자 정보 확장 #21556
- devicemapper:
docker info를 통해 Minimum Thin Pool Free Space 노출 #21945 - 에러 발생 시 API가 JSON 객체를 반환하도록 변경해 일관성 확보 #22880
docker run -i --restart가 종료 시 멈추지 않도록 방지 #22777- hostname 검증의 API/CLI 불일치 수정 #21641
stats에서 크기 형식이 HumanSize에서 BytesSize로 바뀐 불일치 수정 #21773- authz: 요청이 거부되면 forbidden 종료 코드(403) 반환 #22448
- Windows: tty 관련 표시 문제 수정 #23878
Runtime
- userland proxy를 별도 바이너리(
docker-proxy)로 분리 #23312 - 데몬 종료 시 컨테이너를 계속 실행하고 시작 시 제어권을 다시 얻는
--live-restore데몬 플래그 추가 #23213 - OCI 호환 런타임 추가(
--add-runtime데몬 플래그) 및create와run에서--runtime으로 선택하는 기능 #22983 - Linux 4.0+에서 다중 하위 디렉터리를 지원하는 새로운
overlay2graphdriver #22126 - 새로운 load/save 이미지 이벤트 #22137
- systemd를 통한 데몬 설정 리로드 지원 #22446
- btrfs 디스크 쿼터 지원 #19651
- zfs 디스크 쿼터 지원 #21946
docker run --pid=container:<id>지원 #22481- 선택된 capabilities에 맞춰 기본 seccomp 프로필 정렬 #22554
- 데몬이 설정을 리로드할 때
daemon reload이벤트 추가 #22590 - pprof 프로파일러에 실행 추적을 바이너리 형태로 보여주는
trace기능 추가 #22715 detach이벤트 추가 #22898--sysctl로 sysctl 설정 지원 #19265- devicemapper에서
size를 설정할 수 있는create와run의--storage-opt플래그 추가 #19367 - 데몬이 컨테이너보다 먼저 종료될 가능성을 낮추는 기본값
-500의--oom-score-adjust데몬 플래그 추가 #24516 run,build,create,update에서--cpu-shares의-c짧은 별칭 deprecate 해제 #22621- eCryptfs 마운트에서 aufs와 overlay graphdriver 사용 방지 #23121
- tmpfs 마운트 순서 문제 수정 #22329
- 생성된 컨테이너가 더 이상
docker ps -a -f exited=0에 나열되지 않음 #21947 - 컨테이너가 "Removal In Progress" 상태에 갇히던 문제 수정 #22423
- run/create에서 명령을 지정하지 않을 때 400 대신 HTTP 500을 반환하던 버그 수정 #22762
- detach 키의 접두사와 일치하는 입력이 보존되지 않던
--detach-keys버그 수정 #22943 --privileged모드 사용 시 SELinux 라벨링 비활성화 #22993- 컨테이너에 볼륨 마운트된 경우
/etc/hosts,/etc/resolv.conf,/etc/hostname이 더 이상 SELinux 재라벨링되지 않음 #22993 - 마운트 옵션 관련
--tmpfs동작의 불일치 수정 #22438 - 데몬이 시작 시 멈추던 문제 수정 #23148
- 일부 경우 journald 재시작이 docker를 크래시시키는 것을 방지하기 위해 SIGPIPE 이벤트 무시 #22460
- 에러 발생 시 stats 목록에서 컨테이너가 제거되지 않도록 수정 #20835
- 데몬 재시작 시
on-failure재시작 정책 수정 #20853 - 컨테이너가 다른 컨테이너의 네트워크를 사용할 때
stats문제 수정 #21904
Swarm Mode
init,join,join-token,leave,update하위 명령으로 swarm을 관리하는 새로운swarm명령 #23361 #24823create,inspect,update,rm,ps하위 명령으로 swarm-wide 서비스를 관리하는 새로운service명령 #23361 #25140accept,promote,demote,inspect,update,ps,ls,rm하위 명령으로 노드를 관리하는 새로운node명령 #23361 #25140- (실험적) 멀티서비스 애플리케이션을 관리하고 배포하는 새로운
stack및deploy명령 #23522 #25140
Volume
- 로컬 및 글로벌 볼륨 스코프 지원(네트워크 스코프와 유사) #22077
- 볼륨 드라이버가
Status필드를 제공할 수 있게 허용 #21006 - 볼륨에 name/driver 필터 지원 #21361
- Mount/Unmount 작업이 불투명 ID를 받아 볼륨 드라이버가 두 호출자를 구분할 수 있게 지원 #21015
- 모서리 케이스에서 볼륨을 제거할 수 없던 문제 수정 #22103
- Windows: Linux와 일치하도록 host-path 자동 생성 활성화 #22094
Deprecation
- 환경 변수
DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE와DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE가 각각DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE와DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE로 이름 변경 #22574 - 더 일반적인
tag옵션을 위해 deprecated된syslog-tag,gelf-tag,fluentd-tag로그 옵션 제거 #22620 - API 컨테이너 시작 시 HostConfig를 전달하는 deprecated 기능 제거 #22570
- docker tag의 deprecated된
-f/--force플래그 제거 #23090 - deprecated된
/containers/<id|name>/copy엔드포인트 제거 #22149 - deprecated된
docker ps플래그--since와--before제거 #22138 docker import의 기존 3-인자 형식 deprecated #23273
1.11.2 (2016-05-31)
Networking
- 비정상 종료 중 overlay 네트워크의 오래된 엔드포인트 문제 수정 (#23015)
docker inspect/ps/port에서 잘못된 포트가 보고될 수 있던 문제 수정 (#22997)
Runtime
docker build실행 시 잠재적 panic 수정 (#23032)--user파라미터 해석 수정 (#22998)- 컨테이너 통계가 올바르게 보고되지 않던 버그 수정 (#22955)
- 데몬 재시작 후 컨테이너를 재시작할 수 없던 문제 수정 (#22947)
- Ubuntu 16.04에서 32비트 바이너리 실행 시 문제 수정 (#22922)
- 이미지 삭제와 컨테이너 attach 시 가능한 데드락 수정 (#22918)
- 컨테이너화된 클러스터 스토어에 의존하는 컨테이너가 데몬 재시작 후 시작에 실패하던 문제 수정 (#22561)
- devicemapper 사용 시 CentOS에서
docker ps가 멈추던 문제 수정 (#22168, #23067) - devicemapper 사용 시
docker exec로 컨테이너에 들어갈 수 없던 버그 수정 (#22168, #23067)
1.11.1 (2016-04-26)
Distribution
- schema2 manifest 미디어 타입을
application/vnd.docker.container.image.v1+json으로 수정 (#21949)
Documentation
- 1.11.0에서 도입된 변경 사항에 대한 누락된 API 문서 추가 (#22048)
Builder
docker build에 인자로 전달된 라벨을 처리된Dockerfile끝에 암시적LABEL명령으로 추가 (#22184)
Networking
- DNS 쿼리 전달 시 발생하던 panic 수정 (#22261)
- 사용자 정의 네트워크 사용 시 OS 스레드가 잘못된 네트워크 네임스페이스에 들어갈 수 있던 문제 수정 (#22261)
Runtime
- 설정 파일을 통한 라벨 설정 리로드가 안 되던 버그 수정 (#22299)
- 컨테이너가
/var/run을 마운트하면 다른 컨테이너가 제거되지 못하던 회귀 문제 수정 (#22256) memory-swap과memory값을 함께 업데이트할 수 없던 문제 수정 (#22255)- 1.11.0에서
/auth엔드포인트가serveraddress를 제공하지 않을 때 초기화하지 않던 회귀 문제 수정 (#22254) - 예약된 재시작을 취소할 때 컨테이너 임시 파일 정리 누락 수정 (#22237)
- 재시작 정책이 지정되지 않았을 때 무서운 에러 메시지 제거 (#21993)
- json spec으로 플러그인이 활성화될 때 발생하던 panic 수정 (#22191)
- 컨테이너가 최소 10초 이상 실행된 경우 재시작 백오프 로직이 지연을 올바르게 리셋하도록 수정 (#22125)
- 컨테이너 재시작이 취소될 때 에러 메시지 제거 (#22123)
docker exec후 docker가 올바르게 정리하지 않던 문제 수정 (#22121)- 동시
docker stats명령 처리 시 발생할 수 있는 panic 수정 (#22120) - 존재하지 않는 호스트 디렉터리 자동 생성의 deprecation 되돌림 (#22065)
- 데몬 종료 시 오해를 부르는 rpc 에러 숨김 (#22058)
1.11.0 (2016-04-13)
중요!
Docker 1.11부터 Linux Docker 설치는 4개의 바이너리(
docker, docker-containerd, docker-containerd-shim, docker-runc)로 구성돼요.docker가 단일 정적 바이너리라고 가정하는 스크립트가 있다면 업데이트하세요. 데몬과의 상호작용은 동일하며 다른 바이너리의 사용은 투명하게 처리됩니다. Windows Docker 설치는docker.exe단일 바이너리로 유지돼요.
Builder
WORKDIR명령 처리 시 Docker가 올바른 uid/gid를 사용하지 않던 버그 수정 (#21033)- userns로 복사 작업 시 올바른 uid/gid를 사용하지 않던 버그 수정 (#20782, #21162)
Client
- 보안 옵션의
:구분자 사용이 deprecated.=를 사용해야 해요 (#21232) - 클라이언트 사용자 에이전트가 이제
pull,build,push,login,search작업에서 레지스트리로 전달됨 (#21306, #21373) - API를 통해 Domainname과 Hostname을 별도로 설정할 수 있게 허용 (#20200)
- Docker info가 커널 버전이나 운영체제를 감지할 수 없으면 사용자에게 경고 표시 (#21128)
docker stats --no-stream출력이 모두 0으로 나올 수 있던 문제 수정 (#20803)- 실행 중인
docker stats명령에 새로 시작된 일부 컨테이너가 나타나지 않던 버그 수정 (#20792) - linux-cgo 터미널에서 포스트 프로세싱 비활성화 (#20587)
- RFC1123을 준수하지 않는
--hostname값은 거부 (#20566) - Docker가 SOCKS 프록시 사용법을 학습 (#20366, #18373)
- Docker가 외부 자격 증명 스토어 지원 (#20107)
docker ps가 컨테이너 내부에 마운트된 볼륨 목록 표시 지원 (#20017)docker info가 Docker의 루트 디렉터리 위치도 보고 (#19986)- 빈 사용자 이름으로 로그인 금지 (공백은 제거됨) (#19806)
- Docker 이벤트 속성이 키별로 정렬됨 (#19761)
docker ps가 중지된 컨테이너의 내보낸 포트를 더 이상 표시하지 않음 (#19483)- save/export 명령 실패 시 Docker가 스스로 정리 (#17849)
- Docker load가 진행 바를 표시하도록 개선 (#17329, #20078)
Distribution
- 레이어가 0개인 이미지를 pull할 때 발생하던 panic 수정 (#21222)
- 잘못 구성된 토큰 서비스를 가진 레지스트리로 push 중 에러 발생 시 panic 수정 (#21212)
- 신뢰된 push 시 모든 1차 위임 역할이 서명되도록 변경 (#21046)
- 레지스트리용 OAuth 지원 추가 (#20970)
docker login이 docker/distribution의 구현을 사용해 토큰 처리 (#20832)docker login이 더 이상 이메일을 묻지 않음 (#20565)- 기본 인증 자격 증명이 없으면 Docker가 레지스트리 V1으로 폴백 (#20241)
- 네트워크 에러/타임아웃 후 레이어 다운로드를 중단된 지점에서 재개 시도 (#19840)
- 교차 저장소 push 시 생성된 manifest mediaType 수정 (#19509)
- Content Trust가 활성화된 상태에서 이미지를 pull할 때 docker가 추가 push 자격 증명을 요청하던 문제 수정 (#20382)
Logging
- journald 로그 드라이버의 경쟁 조건 수정 (#21311)
- Docker syslog 드라이버가 로그를 emit할 때 RFC-5424 형식 사용 (#20121)
- Docker GELF 로그 드라이버가
gelf-compression-type과gelf-compression-level옵션으로 압축 알고리즘과 수준 지정 가능 (#19831) - Docker 데몬이
--raw-logs옵션으로 색상 없는 로그 출력 가능 (#19794) - Windows 플랫폼에서
etwlogs라는 ETW(Event Tracing in Windows) 로깅 드라이버 포함 (#19689) - Journald 로그 드라이버가 태그 처리 지원 (#19564)
- fluentd 로그 드라이버가
fluentd-address,fluentd-buffer-limit,fluentd-retry-wait,fluentd-max-retries,fluentd-async-connect옵션 지원 (#19439) - Docker가 새로운
gcplogs로깅 드라이버로 Google Cloud에 로그 전송 가능 (#18766)
Misc
docker save로 연결된 이미지를 함께 저장하면 이후docker load가 부모/자식 관계를 올바르게 복원 (#21385)- OpenBSD용 Docker CLI 빌드 지원 추가 (#21325)
- 네트워크, 볼륨, 이미지 생성 시 라벨 적용 가능 (#21270)
dockremap이 시스템 사용자로 생성됨 (#21266)- 여러 응답 본문 누수 수정 (#21258)
- systemd로 서비스로 실행될 때 Docker가 프로세스 cgroups를 올바르게 관리 (#20633)
docker info가 cgroup KernelMemory 값을 보고하거나 지원되지 않으면 경고 표시 (#20863)docker info가 사용 중인 cgroup 드라이버도 보고 (#20388)- PowerShell에서 Docker 완성 지원 (#19894)
dockerinit제거 (#19490, #19851)- arm64에서 Docker 빌드 지원 추가 (#19013)
- 네이티브 Windows Docker 설치에서 docker.exe 빌드 실험적 지원 (#18348)
Networking
- 노드가 클러스터에서 강제 제거될 때 panic 수정 (#21671)
- Swarm 클러스터에서 컨테이너 시작 시 "error creating vxlan interface" 수정 (#21671)
docker network inspect가 활성 컨테이너가 없어도 모든 엔드포인트 보고 (#21160)- MacVlan 및 IPVlan 네트워크 드라이버 실험적 지원 추가 (#21122)
docker network ls출력이 네트워크 이름순으로 정렬 (#20383)- 예약된
default이름으로 네트워크를 생성할 수 있던 버그 수정 (#19431) docker network inspect가 네트워크의 내부 여부 반환 (#19357)- 네트워크 생성 시 명시적 옵션으로 IPv6 제어 (
docker network create --ipv6).docker network inspect에EnableIPv6필드로 표시 (#17513) - 내장 DNS 서버에서 AAAA 레코드(IPv6 서비스 디스커버리) 지원 (#21396)
- docker 도메인 IPv6 쿼리를 외부 서버로 전달하지 않도록 수정 (#21396)
- DNS 라운드 로빈을 위해 내장 DNS 서버의 여러 A/AAAA 레코드 (#21019)
- 비정상 데몬 재시작 후 엔드포인트 수 불일치 수정 (#21261)
- 노출 포트와 포트 매핑 옵션의 소유권을 Endpoint에서 Sandbox로 이동 (#21019)
- 호스트가 ipv6.disable=1로 구성된 경우 docker 리로드가 안 되던 버그 수정 (#21019)
- 내장 nil IPAM 드라이버 추가 (#21019)
- iptables.Exists() 로직 버그 수정 #21019
- overlay 네트워크 사용 시 Veth 인터페이스 누수 수정 (#21019)
- 종료 중 네트워크 삭제 후 docker 리로드가 안 되던 버그 수정 (#20214)
- firewalld 리로드 시 iptables 체인이 재생성되도록 보장 (#20419)
- 설정 리로드 중 글로벌 데이터스토어 전달 허용 (#20419)
- 익명 컨테이너의 경우 IP-이름 매핑에 별칭 이름 사용, 즉 DNS PTR 레코드 (#21019)
- /etc/hosts 파일에서 항목 삭제 시 panic 수정 (#21019)
- 전달된 DNS 쿼리를 컨테이너 net 네임스페이스에서 소싱 (#21019)
- 데몬 리로드 시 브리지 네트워크의 내부 모드 설정 유지 (#21780)
- 데몬 리로드 시 IPAM 드라이버 옵션 설정 유지 (#21914)
Plugins
Runtime
- 잘못된 파라미터로 시작된 컨테이너 정리 시 발생할 수 있는 panic 수정 (#21716)
- 이벤트 타이머가 일찍 멈추는 경쟁 조건 수정 (#21692)
- 레이어 스토어의 경쟁 조건 수정. 맵이 손상되고 프로세스가 크래시할 수 있었어요 (#21677)
- 마운트용 호스트 디렉터리 자동 생성의 deprecation 해제. 이 기능은 Docker 1.9에서 deprecated로 표시됐지만 하위 호환성이 너무 크게 깨져서 유지하기로 결정했어요 (#21666)
userns가 활성화된 경우 컨테이너가 NET과 IPC 네임스페이스를 공유할 수 있게 됨 (#21383)docker inspect <image-id>가 rootfs 레이어를 노출 (#21370)- Docker Windows에 최소한의
top구현 추가 (#21354) - 컨테이너가 상태 때문에 시작되지 못할 때 잘못된 exe를 보고하도록 개선 (#21345)
- device mapper 사용 시
udev sync를 사용할 수 없으면 실행 거부 (#21097) - 설정 리로드 시 Docker가 설정 파일을 검증하지 않던 버그 수정 (#21089)
- 초기 시작이 실패할 경우 attach에서 발생하던 멈춤 현상 수정 (#21048)
- 데몬 설정 파일의 레지스트리 서비스 옵션이 제대로 반영되지 않던 문제 수정 (#21045)
- exec와 resize 작업 간 경쟁 조건 수정 (#21022)
- Docker 이벤트 필터링 시 나노초가 올바르게 고려되지 않던 문제 수정 (#21013)
- 64바이트 ID가 전달됐을 때 Docker 명령 처리 수정 (#21002)
- 네트워크 삭제 성공 시 Docker가
204(http.StatusNoContent) 코드 반환 (#20977) - 종료하려는 프로세스가 이미 스스로 종료된 경우 데몬이 무기한 대기하던 버그 수정 (#20967)
- devmapper 드라이버가
dm.min_free_space옵션 지원. 매핑된 장치의 여유 공간이 설정값에 도달하면 새 장치 생성이 금지됨 (#20786) --security-opt=no-new-privileges플래그로 컨테이너 내 프로세스가 새 권한을 얻는 것을 방지 (#20727)--device옵션으로 컨테이너를 시작할 때 심볼릭 링크를 올바르게 해석 (#20684)- Docker가 이제 containerd와 runc에 의존해 컨테이너를 생성 (#20662)
- 주어진 설정 파일에 있는 값만 변경하도록 Docker 설정 리로드 수정 (#20604)
--net=host일 때--hostname플래그로 컨테이너 호스트명 설정 허용 (#20177)--privileged와 새--userns=host플래그를 모두 지정하면--userns-remap으로 실행 중에도 권한 있는 컨테이너 실행 허용 (#20111)- 크래시 후 재시작 시 Docker가 이전 컨테이너를 올바르게 정리하지 않던 문제 수정 (#19679)
- 설정 파일에서 인식할 수 없는 설정 키가 있으면 Docker가 에러 출력 (#19517)
- 데몬 시작 시 컨테이너 안에서 실행되는 플러그인에 의존하는 컨테이너 로딩 수정 (#19500)
docker update가 컨테이너 재시작 정책 변경 지원 (#19116)docker inspect가 컨테이너 상태를 사람이 읽을 수 있는 방식(created,restarting,running,paused,exited,dead중 하나)으로 포함하는 새State필드 반환 (#18966)pids-limit플래그로 컨테이너 내 활성 pids(프로세스) 수 제한 지원. 참고: 커널 설정에CGROUP_PIDS=y가 필요해요 (#18697)docker load에 로드 출력을 억제하는--quiet옵션 추가 (#20078)- IPv6 피어의 이웃 발견 버그 수정 (#20842)
- 잘못된 옵션으로 컨테이너를 시작한 경우 정리 중 panic 수정 (#21802)
- 터미널이 닫히면 컨테이너를 중지할 수 없던 상황 수정 (#21840)
Security
pcp_pmcd_tselinux 타입의 객체에/var/lib/docker(/.*)?관리 접근 권한 부여 (#21370)restart_syscall,copy_file_range,mlock2가 기본 seccomp 프로필의 허용 호출 목록에 추가 (#21117, #21262)send,recv,x32가 기본 seccomp 프로필의 허용 syscall 및 arch 목록에 추가 (#19432)- Docker Content Trust가 서버에 스냅샷 서명을 요청 (#21046)
- Content Trust 서명용 YubiKey 사용 지원이 experimental에서 정식으로 이동 (#21591)
Volumes
docker volume ls출력이 볼륨 이름순으로 정렬 (#20389)- 로컬 볼륨이 unix
mount도구와 유사한 옵션을 받을 수 있게 지원 (#20262) - 한 글자 디렉터리 이름을 볼륨 소스로 사용할 수 없던 문제 수정 (#21106)
docker run -v가 새nocopy플래그 지원. 런타임이 컨테이너 경로 콘텐츠를 볼륨으로 복사하지 않도록 지시(기본 동작) (#21223)
1.10.3 (2016-03-10)
Runtime
- "Unrecognized input header" 에러로 Docker 클라이언트가 종료되던 문제 수정 #20706
- Exec이
AttachStdin과Detach를 모두 설정한 채 시작되면 Docker가 종료되던 문제 수정 #20647
Distribution
- 같은 레이어를 공유하는 여러 이미지를 같은 저장소에 병렬로 push할 때 크래시 수정 #20831
- 잘못 구성된 토큰 서비스를 사용하는 레지스트리로 이미지 push 시 panic 수정 #21030
Plugin system
- SELinux가 활성화된 경우 볼륨 플러그인이 시작되지 못하던 문제 수정 #20834
- 볼륨 플러그인이 Get 요청에 null 응답을 반환하면 Docker가 종료되지 않도록 방지 #20682
- 플러그인에 에러가 있을 때 플러그인 시스템이 파일 디스크립터를 누수하던 문제 수정 #20680
Security
- docker build 중 linux32 에뮬레이션 실패 수정 #20672
기본 seccomp 프로필에서
personalitysyscall이 차단됐기 때문이었어요. - Oracle XE 10g가 컨테이너에서 시작되지 않던 문제 수정 #20981
기본 seccomp 프로필에서
ipcsyscall이 차단됐기 때문이었어요. - Linux From Scratch에서 user namespaces가 동작하지 않던 문제 수정 #20685
- userns가 활성화되고
subuid또는subgid파일에 주석이 있으면 데몬이 시작되지 못하던 문제 수정 #20725
1.10.2 (2016-02-22)
Runtime
- systemd 설정 리로드 시 systemd가 컨테이너의 cgroups를 삭제하지 않도록 방지 #20518
/dev/mqueue마운트 시--read-only를 무시해 SELinux 문제 수정 #20333- userns 사용 시
docker cp중 chown 권한 수정 #20446 - 모든 불리언이
true로 기본 설정되던 설정 로딩 문제 수정 #20471 docker logs -f에서 가끔 발생하던 panic 수정 #20522
Distribution
- 삭제 실패 시 레이어 참조를 유지해 심각하게 일관되지 않은 상태 방지 #20513
- 마이그레이션 취소 시 모서리 케이스 처리 개선 #20372
- 압축 데이터의 docker import 수정 #20367
- 마이그레이션 중 tar-split 파일 손상 수정. 이후 docker push와 docker save 실패를 유발했어요 #20458
Networking
- 내장 DNS에 잘못된 데이터가 전송되면 데몬이 크래시하던 문제 수정 #20510
Volumes
- 같은 이름의 여러 볼륨 참조 문제 수정 #20381
Security
- 잠재적 캐시 손상 및 위임 충돌 문제 수정 #20523
1.10.1 (2016-02-11)
Runtime
- 마이그레이션 하드 실패 시 데몬을 중지하지 않도록 수정 #20156
- 콘텐츠 주소 지정 이미지로의 마이그레이션 관련 여러 문제 수정 #20058
- user namespaces 사용 시 ZFS 권한 버그 수정 #20045
- 호스트의 /dev/mqueue를 모든 컨테이너로 누출하지 않고 컨테이너별로 유지 #19876 #20133
docker ps --filter before=...가-a플래그 없이 중지된 컨테이너를 표시하지 않도록 수정 #20135
Security
- 인증 플러그인과 함께 docker events가 제대로 동작하지 못하던 문제 수정 #20002
Distribution
Networking
- firewalld가 있는 환경에서 사용자 정의 네트워크의 내장 DNS 수정 #20060
- 종료 중 네트워크 제거 시 Docker를 사용 불가능하게 만들던 문제 수정 #20181 #20235
- 내장 DNS가 압축된 결과를 반환할 수 있게 개선 #20181
userland-proxy=false의 포트 매핑 문제 수정 #20181
Logging
- tcp+tls 프로토콜이 거부되던 버그 수정 #20109
Volumes
- 이전 버전 볼륨 드라이버가 볼륨 옵션을 받지 못하던 문제 수정 #19983
Misc
- Docker systemd 서비스에서 TasksMax 제거 #20167
1.10.0 (2016-02-04)
중요!
Docker 1.10은 이미지와 레이어에 새로운 콘텐츠 주소 지정 스토리지를 사용해요.
docker를 처음 실행할 때 마이그레이션이 수행되며, 이미지 수에 따라 상당한 시간이 걸릴 수 있어요. 자세한 내용은 위키 페이지를 참고하세요: https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration 다운타임을 줄이기 위해 업데이트 전에 마이그레이션을 수행할 수 있는 멋진 마이그레이션 유틸리티도 출시했어요. Engine 1.10 migrator는 Docker Hub에서 찾을 수 있어요: https://hub.docker.com/r/docker/v1.10-migrator/
Runtime
- 실행 중인 컨테이너의 리소스 제약을 업데이트할 수 있는 새
docker update명령 #15078 - 컨테이너에 tmpfs 마운트를 생성하는
docker run의--tmpfs플래그 추가 #13587 docker images명령에--format플래그 추가 #17692- 파일에 데몬 설정을 저장하고
SIGHUP신호로 핫 리로드 허용 #18587 - docker events에 더 많은 메타데이터와 이벤트 유형 포함하도록 업데이트 #18888 이 변경은 API에서는 하위 호환되지만 CLI에서는 그렇지 않아요.
docker run에--blkio-weight-device플래그 추가 #13959docker run에--device-read-bps와--device-write-bps플래그 추가 #14466docker run에--device-read-iops와--device-write-iops플래그 추가 #15879docker run에--oom-score-adj플래그 추가 #16277attach,run,start,exec명령에 컨테이너에서 분리되는 기본 키 시퀀스를 재정의하는--detach-keys플래그 추가 #15666/dev/shm크기를 설정하는run,create,build의--shm-size플래그 추가 #16168docker info에 실행 중, 중지, 일시 중지된 컨테이너 수 표시 #19249docker info에OSType과Architecture표시 #17478- 모든 컨테이너의 cgroup 부모를 설정하는
daemon의--cgroup-parent플래그 추가 #19062 - docker cp에 심볼릭 링크를 따라가는
-L플래그 추가 #16613 docker ps에 새status=dead필터 #17908- 런타임 에러와 애플리케이션 에러를 구분하도록
docker run종료 코드 변경 #14012 docker events --since와--until이 나노초와 시간대를 지원하도록 개선 #17495stats에 실행 중과 중지된 컨테이너를 모두 포함하는--all/-a플래그 추가 #16742- 기본 cgroup-driver를
cgroupfs로 변경 #17704 build -t로 이미지에 태그를 지정할 때 "tag" 이벤트 발생 #17115- 데몬 시작 시 연결된 컨테이너의 시작 순서를 위한 최선의 노력 [#18208](https://github.com/docker/d
더 알아보기 (Learn more)
관련 내용은 Docker 공식 문서에서 확인할 수 있어요.