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

이 문제를 해결하려면 다음 단계를 따라 플러그인을 수동으로 모두 제거하세요:

  1. /var/lib/docker/plugins/에서 plugins.json을 제거합니다.
  2. Docker를 재시작하고 데몬이 에러 없이 시작되는지 확인합니다.
  3. 플러그인을 다시 설치합니다.

Contrib

  • tini의 커스텀 빌드가 더 이상 필요 없어졌어요 #28454
  • Go 1.7.5로 업그레이드 #30489

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

  • Swarm 모드에서 글로벌 스코프 네트워크 플러그인(v2) 지원 #30332
  • docker plugin upgrade 명령 추가 #29414

Windows

  • Windows에서 기존 플러그인과의 작은 회귀 문제 수정 #30150
  • Windows 경고 메시지 수정 #30730

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

이 문제를 해결하려면 다음 단계를 따라 플러그인을 수동으로 모두 제거하세요:

  1. /var/lib/docker/plugins/에서 plugins.json을 제거합니다.
  2. Docker를 재시작하고 데몬이 에러 없이 시작되는지 확인합니다.
  3. 플러그인을 다시 설치합니다.

Builder

  • 빌드 시 캐시 소스로 사용할 이미지를 지정하는 기능이 추가됐어요. 이 이미지들은 로컬에 부모 체인이 없어도 되고 다른 레지스트리에서 가져올 수도 있어요 #26839
  • (실험적) 빌드 성공 후 이미지 레이어를 FROM 이미지로 스쿼시(squash)하는 옵션 추가 #22641
  • 이스케이프 문자 다음에 빈 줄이 올 때 dockerfile 파서가 잘못 동작하던 문제 수정 #24725
  • docker build에 단계 번호 표시 추가 #24978
  • 이미지 빌드 중 빌드 컨텍스트 압축 지원 #25837
  • docker build--network 옵션 추가 #27702
  • docker builddocker 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_keystuf_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이 동작할 수 있게 해줘요 #25962
  • docker 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) 추가 #25556
  • docker plugin inspect-f/--format 옵션 추가 #25990
  • docker 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 플래그 추가 #23808
  • docker volume create에서 --name 제거 #23830
  • docker stack ls 추가 #23886
  • 새로운 is-task ps 필터 추가 #24411
  • docker service create--env-file 플래그 추가 #24844
  • docker 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 lsvolume ls--format 플래그 추가 #23475
  • 최상위 docker inspect 명령이 모든 종류의 리소스를 검사할 수 있게 허용 #23614
  • docker rundocker create의 CPU 리소스 제어를 위한 --cpus 플래그 추가, HostConfigNanoCPUs 추가 #27958
  • docker run 또는 docker create에서 --entrypoint를 해제(unset)할 수 있게 허용 #23718
  • 일관성을 위해 docker imagedocker container 명령을 추가해 CLI 명령 재구성 #26025
  • service ls 출력에서 COMMAND 열 제거 #28029
  • docker events--format 옵션 추가 #26268
  • docker node ps에서 여러 노드 지정 허용 #26299
  • docker images 출력에서 소수점 이하 자릿수를 2자리로 제한 #26303
  • docker run--dns-option 추가 #28186
  • 컨테이너 commit 이벤트에 Image ID 추가 #28128
  • docker info에 외부 바이너리 버전 추가 #27955
  • docker info 출력에 Manager Addresses 정보 추가 #28042
  • docker images에 새로운 reference 필터 추가 #27872

Runtime

  • 실험 기능을 별도 빌드로 제공하는 대신 활성화할 수 있도록 --experimental 데몬 플래그 추가 #27223
  • 데몬 종료 전 컨테이너를 정상적으로 중지하는 기본 시간(초)을 지정하는 --shutdown-timeout 데몬 플래그 추가 #23036
  • 개별 컨테이너의 중지 시간(초)을 지정하는 --stop-timeout 추가 #22566
  • $PATH에서 하드코딩된 docker-proxy 대신 userland proxy를 직접 구성할 수 있는 --userland-proxy-path 데몬 플래그 추가 #26882
  • dockerddocker run에 좀비 프로세스를 수거하는 init 프로세스 tini를 PID 1로 사용하는 --init 불리언 플래그 추가 #26061 #28037
  • docker-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
  • 시스템 리소스 관리를 위한 dfprune 하위 명령을 가진 새 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 -tTERM 환경 변수 추가 #26461
  • docker 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 옵션 추가 #27596
  • docker service createdocker service update--health-*--no-healthcheck 플래그 추가 #27369
  • docker service ps-q 옵션 추가 #27654
  • docker service ls에 글로벌 서비스 수 표시 #27710
  • docker service update에서 --name 플래그 제거. 이 플래그는 docker service create에서만 동작하므로 update 명령에서 제거됐어요 #26988
  • 일시적인 네트워킹 문제로 워커 노드가 복구되지 못하던 문제 수정 #26646
  • 헬스 인지 로드 밸런싱 및 DNS 레코드 지원 #27279
  • docker service create--hostname 옵션 추가 #27857
  • docker service create--host 옵션, docker service update--host-add, --host-rm 옵션 추가 #28031
  • docker 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 createupdate에서 이미지를 digest로 고정(pin) #28173
  • docker node rm --forcedocker 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

  • 컨테이너에서 공유되는 볼륨의 selinux 라벨링 문제 수정 #23024
  • apparmor로 /sys/firmware/** 접근 금지 #26618

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 pullrepo:shortid 문법 deprecated #27207
  • overlay 및 overlay2 스토리지 드라이버에서 d_type 없는 backing filesystem deprecated #27433
  • Dockerfile의 MAINTAINER deprecated #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-reloadsudo 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-reloadsudo 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-reloadsudo 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

Networking

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-reloadsudo 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

Networking

Logging

  • fluent-logger-golang을 v1.2.1로 업데이트 #27474

Contrib

  • armhf ubuntu-trusty용 buildtags 업데이트 #27327
  • armhf용 runc buildtags에 AppArmor 추가 #27421

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-reloadsudo 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

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-reloadsudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.

Client

  • node inspect --prettyJoined at 정보 추가 #25512
  • service inspect에서 크래시 수정 #25454
  • service update --env-add가 의도대로 동작하지 않던 문제 수정 #25427
  • service update --publish-add가 의도대로 동작하지 않던 문제 수정 #25428
  • service update --network-addservice 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

  • 데몬 로그에서 조인 토큰 마스킹 #25346
  • docker ps --filter 사용 시 생성 시간순 정렬이 깨지던 문제 수정 #25387
  • 여러 크래시 수정 #25053

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-reloadsudo systemctl restart docker를 실행해 변경 사항을 반영하고 데몬을 (재)시작하세요.

중요!

Docker 1.12부터 Linux docker 설치는 dockerddocker-proxy라는 두 개의 추가 바이너리를 갖게 돼요. Docker 설치 스크립트가 있다면 그에 맞게 업데이트하세요.

Builder

  • 사용자 정의 헬스 체크를 지원하는 새로운 HEALTHCHECK Dockerfile 명령 #23218
  • Dockerfile에서 셸 형식 명령에 사용할 기본 셸을 지정하는 새로운 SHELL Dockerfile 명령 #22489
  • Dockerfile에서 파일 경로의 플랫폼별 파싱을 지원하는 #escape= Dockerfile 지시문 추가 #22268
  • .dockerignore에서 주석 지원 #23111
  • Dockerfile에서 UTF-8 지원 #23372
  • Dockerfile.dockerignore에 UTF-8 BOM 바이트가 있으면 건너뜀 #23234
  • Windows: Linux와 일치하도록 ARG 지원 #22508
  • 브리지 네트워크가 비활성화된 데몬으로 빌드할 때 에러 메시지 수정 #22932

Contrib

  • CentOS 7과 Oracle Linux 7에서 seccomp 활성화 #22344
  • 공유 마운트 전파를 허용하도록 systemd unit에서 MountFlags 제거 #22806

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 타임스탬프에서 마이크로초 해상도를 허용하는 rfc5424micro syslog-format 옵션 추가 #21844
  • 컨테이너 생성 시 데몬 로그 옵션 상속 #21153
  • 로그 메시지 태그에서 docker/ 접두사 제거하고 {{.DaemonName}}으로 대체. 사용자가 접두사를 변경할 수 있게 됐어요 #22384

Networking

  • IPVS를 사용한 내장 Virtual-IP 기반 내부 및 ingress 로드 밸런싱 #23361
  • ingress overlay 네트워크를 사용한 Routing Mesh #23361
  • 암호화된 컨트롤 플레인과 데이터 플레인을 사용한 보안 멀티호스트 overlay 네트워킹 #23361
  • MacVlan 드라이버가 experimental에서 정식으로 전환 #23524
  • network lsdriver 필터 추가 #22319
  • docker ps --filternetwork 필터 추가 #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 --filterbeforesince 필터 추가 #22908
  • docker search--limit 옵션 추가 #23107
  • docker search--filter 옵션 추가 #22369
  • docker info 출력에 보안 옵션 추가 #21172 #23520
  • docker 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 데몬 플래그) 및 createrun에서 --runtime으로 선택하는 기능 #22983
  • Linux 4.0+에서 다중 하위 디렉터리를 지원하는 새로운 overlay2 graphdriver #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를 설정할 수 있는 createrun--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 #24823
  • create, inspect, update, rm, ps 하위 명령으로 swarm-wide 서비스를 관리하는 새로운 service 명령 #23361 #25140
  • accept, promote, demote, inspect, update, ps, ls, rm 하위 명령으로 노드를 관리하는 새로운 node 명령 #23361 #25140
  • (실험적) 멀티서비스 애플리케이션을 관리하고 배포하는 새로운 stackdeploy 명령 #23522 #25140

Volume

  • 로컬 및 글로벌 볼륨 스코프 지원(네트워크 스코프와 유사) #22077
  • 볼륨 드라이버가 Status 필드를 제공할 수 있게 허용 #21006
  • 볼륨에 name/driver 필터 지원 #21361
  • Mount/Unmount 작업이 불투명 ID를 받아 볼륨 드라이버가 두 호출자를 구분할 수 있게 지원 #21015
  • 모서리 케이스에서 볼륨을 제거할 수 없던 문제 수정 #22103
  • Windows: Linux와 일치하도록 host-path 자동 생성 활성화 #22094

Deprecation

  • 환경 변수 DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASEDOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE가 각각 DOCKER_CONTENT_TRUST_ROOT_PASSPHRASEDOCKER_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-swapmemory 값을 함께 업데이트할 수 없던 문제 수정 (#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 logindocker/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-typegelf-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 inspectEnableIPv6 필드로 표시 (#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

  • 플러그인을 열거할 때마다 발생하던 파일 디스크립터 누수 수정 (#20686)
  • Authz 플러그인이 대량의 데이터를 다룰 때 페이로드 본문을 손상시키던 문제 수정 (#20602)

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가 이제 containerdrunc에 의존해 컨테이너를 생성 (#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_t selinux 타입의 객체에 /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이 AttachStdinDetach를 모두 설정한 채 시작되면 Docker가 종료되던 문제 수정 #20647

Distribution

  • 같은 레이어를 공유하는 여러 이미지를 같은 저장소에 병렬로 push할 때 크래시 수정 #20831
  • 잘못 구성된 토큰 서비스를 사용하는 레지스트리로 이미지 push 시 panic 수정 #21030

Plugin system

  • SELinux가 활성화된 경우 볼륨 플러그인이 시작되지 못하던 문제 수정 #20834
  • 볼륨 플러그인이 Get 요청에 null 응답을 반환하면 Docker가 종료되지 않도록 방지 #20682
  • 플러그인에 에러가 있을 때 플러그인 시스템이 파일 디스크립터를 누수하던 문제 수정 #20680

Security

  • docker build 중 linux32 에뮬레이션 실패 수정 #20672 기본 seccomp 프로필에서 personality syscall이 차단됐기 때문이었어요.
  • Oracle XE 10g가 컨테이너에서 시작되지 않던 문제 수정 #20981 기본 seccomp 프로필에서 ipc syscall이 차단됐기 때문이었어요.
  • 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

  • 추가 검증 및 레지스트리에 잘못된 데이터를 업로드하지 않도록 방지 #20164
  • 이미지 참조 호스트명의 대문자 허용 회귀 문제 수정 #20175

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 플래그 추가 #13959
  • docker run--device-read-bps--device-write-bps 플래그 추가 #14466
  • docker run--device-read-iops--device-write-iops 플래그 추가 #15879
  • docker run--oom-score-adj 플래그 추가 #16277
  • attach, run, start, exec 명령에 컨테이너에서 분리되는 기본 키 시퀀스를 재정의하는 --detach-keys 플래그 추가 #15666
  • /dev/shm 크기를 설정하는 run, create, build--shm-size 플래그 추가 #16168
  • docker info에 실행 중, 중지, 일시 중지된 컨테이너 수 표시 #19249
  • docker infoOSTypeArchitecture 표시 #17478
  • 모든 컨테이너의 cgroup 부모를 설정하는 daemon--cgroup-parent 플래그 추가 #19062
  • docker cp에 심볼릭 링크를 따라가는 -L 플래그 추가 #16613
  • docker ps에 새 status=dead 필터 #17908
  • 런타임 에러와 애플리케이션 에러를 구분하도록 docker run 종료 코드 변경 #14012
  • docker events --since--until이 나노초와 시간대를 지원하도록 개선 #17495
  • stats에 실행 중과 중지된 컨테이너를 모두 포함하는 --all/-a 플래그 추가 #16742
  • 기본 cgroup-driver를 cgroupfs로 변경 #17704
  • build -t로 이미지에 태그를 지정할 때 "tag" 이벤트 발생 #17115
  • 데몬 시작 시 연결된 컨테이너의 시작 순서를 위한 최선의 노력 [#18208](https://github.com/docker/d

더 알아보기 (Learn more)

관련 내용은 Docker 공식 문서에서 확인할 수 있어요.