Engine API 버전 기록

Engine API 버전 기록

Docker Engine API의 버전별 변경 사항을 정리한 문서예요. 각 API 버전(v1.56부터 v1.0까지)에서 추가되거나 폐기된 필드, 엔드포인트, 동작 변화를 다뤄요.

출처: 문서

본문

v1.56 API 변경 사항

  • GET /containers/json은 이제 annotation 필터를 지원해요. 기존 label 필터와 비슷하게, 키(annotation=key) 또는 키와 값(annotation="key=value")으로 컨테이너를 필터링해요.
  • POST /containers/create는 이제 Unix 컨테이너의 초기 umask를 설정하는 HostConfig.Umask를 지원해요. 설정하면 데몬이 컨테이너의 엔트포인트, exec 프로세스, 헬스체크에 대한 OCI 프로세스 구성에 그 값을 포함해요. 생략하면 런타임의 기본 동작이 적용돼요.

v1.55 API 변경 사항

  • GET /images/{name}/attestations는 이미지에 첨부된 in-toto 어테스테이션 문(statements)을 반환하는 새 엔드포인트예요. platform 쿼리 파라미터는 이미지 변형을 선택해요(기본값은 데몬의 호스트 플랫폼). 이는 향후 호환성을 위해 반복 가능한 파라미터로 선언됐지만, 현재는 값 하나만 허용해요. type 쿼리 파라미터는 반복해 in-toto 프레디킷 타입 URI로 반환되는 문을 필터링할 수 있어요. 생략하면 모든 문이 반환돼요. statement 쿼리 파라미터(기본값 false)는 그대로의 문 본문 포함 여부를 제어해요. 생략하거나 false면 각 항목은 디스크립터와 프레디킷 타입만 포함하고 문 블롭은 읽지 않아요. 응답은 AttestationStatement 객체의 JSON 배열이에요.
  • POST /containers/{id}/update는 이제 BlkioWeightDevice, BlkioDeviceReadBps, BlkioDeviceWriteBps, BlkioDeviceReadIOps, BlkioDeviceWriteIOps 필드를 통해 디바이스별 blkio 리소스 설정을 지원해요. 이 필드들은 이전에 요청 스키마에 있었지만 데몬이 무시했어요. 필드를 생략하거나 null로 설정하면 현재 디바이스별 규칙을 그대로 두고, 빈 배열로 설정하면 해당 리소스 유형의 현재 디바이스별 규칙을 지워요.

v1.54 API 변경 사항

  • GET /images/json은 이제 identity 쿼리 파라미터를 지원해요. 설정하면 응답에 매니페스트 요약이 포함되고, 각 매니페스트에 신뢰할 수 있는 신원과 출처 정보가 담긴 Identity 필드가 포함될 수 있어요.
  • POST /networks/{id}/connect는 이제 EndpointSettingsMacAddress 필드를 올바르게 적용해요. 이 필드는 API v1.44에서 추가됐지만 이전에는 무시됐어요.

v1.53 API 변경 사항

  • GET /info는 이제 NRI 필드를 포함해요. Node Resource Interface(NRI)가 활성화되면 이 필드가 이를 설명하는 정보를 담아요.
  • GET /events는 콘텐츠 타입 협상 시 application/jsonl도 지원해요.
  • GET /images/{name}/json은 이제 이미지의 신뢰할 수 있는 신원과 출처 정보가 담긴 Identity 필드를 포함해요.
  • 폐기 예정: POST /grpcPOST /session 엔드포인트는 폐기 예정이며 향후 버전에서 제거될 거예요.

v1.52 API 변경 사항

  • GET /images/{name}/get은 이제 여러 platform 쿼리 인자를 받아 멀티 플랫폼 이미지의 어떤 플랫폼을 저장할지 선택할 수 있게 해 줘요.
  • POST /images/load는 이제 여러 platform 쿼리 인자를 받아 멀티 플랫폼 이미지의 어떤 플랫폼을 로드할지 선택할 수 있게 해 줘요.
  • GET /events는 더 이상 폐기 예정인 status, id, from 필드를 포함하지 않아요. 이 필드들은 API v1.22에서 제거됐지만 응답에는 여전히 포함돼 있었어요.
  • GET /networks/{id}는 이제 네트워크에 할당된 서브넷의 IPAM 할당에 대한 통계를 제공하는 Status 필드를 포함해요.
  • 폐기 예정: Engine은 POST /containers/{id}/start 호출 시 빈 PortBindings 목록에 빈 HostIP와 HostPort의 PortBinding을 자동으로 백필(backfill)하고 있었어요. 이 동작은 이제 폐기 예정이며 POST /containers/create가 경고를 반환해요. 향후 API 버전에서 빈 PortBindings 목록은 완전히 제거될 거예요.
  • GET /images/{name}/json은 이제 설정되지 않은 다음 Config 필드를 생략해요: Cmd, Entrypoint, Env, Labels, OnBuild, User, Volumes, WorkingDir. OCI Image Specification 구현과 더 가깝게 정렬하기 위해서예요.
  • GET /images/{name}/json은 값이 비어 있으면 Parent, Comment, DockerVersion, Author 필드를 생략해요. ParentDockerVersion 필드는 레거시 빌더가 설정했으며 BuildKit 사용 시에는 더 이상 설정되지 않아요. Author 필드는 폐기 예정인 MAINTAINER Dockerfile 지시문을 통해 설정되고, Comment 필드는 선택 사항으로 이미지 생성 방식에 따라 설정되지 않을 수 있어요.
  • GET /container/{id}/json은 값이 비어 있으면 Config.OnBuild를 생략해요.
  • GET /containers/{id}/json: NetworkSettings는 더 이상 폐기 예정인 Bridge, HairpinMode, LinkLocalIPv6Address, LinkLocalIPv6PrefixLen, SecondaryIPAddresses, SecondaryIPv6Addresses, EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress, IPPrefixLen, IPv6Gateway, MacAddress 필드를 반환하지 않아요. 이 필드들은 API v1.21(docker v1.9.0)에서 폐기 예정이었지만 하위 호환성 때문에 유지돼 있었어요.
  • POST /containers/{id}/updateGET /containers/{id}/json 엔드포인트에서 KernelMemoryTCP 필드를 제거했어요. API 버전 v1.52 이상에서는 설정된 값이 무시돼요. 이전 API 버전은 이 필드를 계속 받아들이지만, 사용 중인 커널 버전과 OCI 런타임에 따라 효과가 없을 수 있어요.
  • GET /info 엔드포인트에서 KernelMemoryTCP 필드를 제거했어요.
  • GET /events는 콘텐츠 타입 협상을 지원하며 application/x-ndjson(새 줄로 구분된 JSON 객체 스트림) 또는 application/json-seq(RFC7464)을 생성할 수 있어요.
  • POST /containers/create는 더 이상 컨테이너 전체 MAC 주소를 컨테이너의 Config.MacAddress 필드로 구성하는 것을 지원하지 않아요. 컨테이너의 MAC 주소는 이제 네트워크에 연결할 때 엔드포인트 설정으로만 구성할 수 있어요.
  • GET /services는 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요.
  • GET /services/{id}도 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요.
  • POST /services/create는 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 받아요.
  • POST /services/{id}/update도 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 받아요.
  • GET /tasks는 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요.
  • GET /tasks/{id}도 이제 Resource 요구 사항의 일부로 SwapBytesMemorySwappiness 필드를 반환해요.
  • GET /containers/{id}/stats는 이제 플랫폼별 stats 처리를 허용하는 os_type 필드를 반환해요.
  • GET /system/df는 각 시스템 객체 유형에 대한 간략한 시스템 디스크 사용 데이터를 담은 ImagesUsage, ContainersUsage, VolumesUsage, BuildCacheUsage 필드를 반환해요. 이 엔드포인트는 상세 시스템 디스크 사용 정보를 반환하는 ?verbose=1 쿼리를 지원해요.
  • 폐기 예정: GET /system/df 응답 필드 LayersSize, Images, Containers, Volumes, BuildCache는 유형별 사용 필드로 대체되어 제거됐어요. API v1.52는 기존 통합이 새 응답으로 전환할 수 있게 레거시 필드와 현재 필드를 모두 반환해요. verbose 쿼리 파라미터를 사용하면 레거시 필드는 채워지지 않아요. API v1.53부터 레거시 필드는 더 이상 반환되지 않을 거예요.

v1.51 API 변경 사항

  • GET /images/json은 이제 모든 이미지의 Containers 필드 값을 이미지를 사용하는 컨테이너 수로 설정해요. 이 필드는 이전에 항상 -1이었어요.
  • 폐기 예정: GET /containers/{id}/json이 반환하는 NetworkSettings.Bridge 필드는 폐기 예정이며 다음 API 버전에서 제거될 거예요.
  • 폐기 예정: POST /containers/{id}/update의 일부인 KernelMemoryTCP 필드와 GET /containers/{id}/json이 반환하는 이 필드는 폐기 예정이며 다음 API 버전에서 제거될 거예요.
  • 폐기 예정: GET /info의 일부인 KernelMemoryTCP 필드는 폐기 예정이며 다음 API 버전에서 제거될 거예요.
  • 폐기 예정: GET /images/{name}/json 엔드포인트가 반환하는 ParentDockerVersion 필드는 폐기 예정이에요. 이 필드들은 레거시 빌더가 설정하며 BuildKit 사용 시 더 이상 설정되지 않아요. API는 정보 제공 목적으로 설정 시 이 필드들을 계속 반환하지만, 레거시 빌더가 제거되면 생략될 것이므로 의존해서는 안 돼요.
  • 폐기 예정: GET /pluginsGET /images/{name}/json 엔드포인트가 반환하는 Config.DockerVersion 필드는 폐기 예정이에요. 이 필드는 더 이상 설정되지 않으며 비어 있으면 생략돼요.

v1.50 API 변경 사항

  • GET /info는 이제 DiscoveredDevices 필드를 포함해요. 이는 디바이스 드라이버가 발견한 각 디바이스에 대한 세부 정보를 제공하는 DeviceInfo 객체의 배열이에요. 현재 CDI 디바이스 드라이버만 지원돼요.
  • DELETE /images/{name}은 이제 platforms 쿼리 파라미터를 지원해요. JSON으로 인코딩된 OCI Platform 객체 배열을 받아 삭제할 특정 플랫폼을 선택할 수 있어요.
  • 폐기 예정: GET /info 응답의 BridgeNfIptablesBridgeNfIp6tables 필드는 API v1.48에서 폐기 예정이었고, API v1.50에서 생략됐어요.
  • 폐기 예정: GET /images/{name}/json은 더 이상 다음 Config 필드를 반환하지 않아요: Hostname, Domainname, AttachStdin, AttachStdout, AttachStderr, Tty, OpenStdin, StdinOnce, Image, NetworkDisabled(설정된 경우 외에는 이미 생략), MacAddress(설정된 경우 외에는 이미 생략), StopTimeout(설정된 경우 외에는 이미 생략). 이 추가 필드들은 구현 세부 사항 때문에 응답에 포함됐지만 이미지의 구성의 일부는 아니었어요. 이 필드들은 API v1.46에서 폐기 예정으로 표시됐고 이제 생략돼요. 이전 버전의 API는 이 필드를 계속 반환하지만 항상 비어 있어요.

v1.49 API 변경 사항

  • GET /images/{name}/json은 이제 검사할 멀티 플랫폼 이미지의 플랫폼을 지정할 수 있게 해 주는 platform 파라미터(JSON 인코딩 OCI Platform 타입)를 지원해요. 이 옵션은 manifests 옵션과 상호 배타적이에요.
  • GET /info는 이제 데몬의 방화벽 구성에 대한 정보를 담은 FirewallBackend를 반환해요.
  • 폐기 예정: GET /info 응답의 RegistryConfig 구조체에 있는 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 필드는 API v1.49에서 생략돼요.
  • 폐기 예정: GET /info 엔드포인트의 ContainerdCommit.Expected, RuncCommit.Expected, InitCommit.Expected 필드는 API v1.48에서 폐기 예정이었고, API v1.49에서 생략돼요.

v1.48 API 변경 사항

  • 폐기 예정: POST /images/create, POST /images/{name}/push, POST /build처럼 JSON 진행 응답을 반환하는 엔드포인트의 스트리밍 응답에 있는 "error"와 "progress" 필드는 폐기 예정이에요. 이 필드들은 각각 API v1.4(docker v0.6.0)와 API v1.8(docker v0.7.1)에서 폐기 예정으로 표시됐지만 여전히 반환되고 있어요. 향후 API 버전에서 비워지거나 생략될 거예요. 사용자는 errorDetailprogressDetail 필드의 정보를 대신 사용해야 해요.
  • 폐기 예정: "allow-nondistributable-artifacts" 데몬 구성은 폐기 예정이며 기본으로 활성화돼요. GET /info 응답의 RegistryConfig 구조체에 있는 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 필드는 이제 항상 null이 되고 API v1.49에서 생략될 거예요.
  • 폐기 예정: GET /info 응답의 BridgeNfIptablesBridgeNfIp6tables 필드는 이제 항상 false가 되고 API v1.49에서 생략될 거예요. netfilter 모듈은 이제 데몬 시작 시가 아니라 온디맨드로 로드되므로 이 필드들은 더 이상 필요 없어요.
  • 폐기 예정: POST /build/prunekeep-storage 쿼리 파라미터는 reserved-space로 이름이 바뀌었어요. keep-storage 지원은 API v1.52에서 제거될 거예요.
  • GET /images/{name}/history는 이제 히스토리를 표시할 플랫폼을 지정할 수 있게 해 주는 platform 파라미터(JSON 인코딩 OCI Platform 타입)를 지원해요.
  • POST /images/{name}/loadGET /images/{name}/get은 이제 로드/저장할 플랫폼을 지정할 수 있게 해 주는 platform 파라미터(JSON 인코딩 OCI Platform 타입)를 지원해요. 이 파라미터를 전달하지 않으면 전체 멀티 플랫폼 이미지가 로드/저장돼요.
  • POST /containers/create는 이제 Mounts를 통해 정의된 볼륨과 함께 컨테이너 전체 Config.VolumeDriver 옵션을 설정할 때 응답에 경고를 포함해요. VolumeDriver 옵션은 해당 볼륨에 효과가 없기 때문이에요. 이 경고는 이전에 CLI가 생성했지만, 이제 데몬으로 옮겨져 다른 클라이언트도 이 경고를 받을 수 있어요.
  • POST /containers/create는 이제 컨테이너 안에 이미지를 마운트하는 image 타입의 Mount를 지원해요.
  • 폐기 예정: GET /info 엔드포인트의 ContainerdCommit.Expected, RuncCommit.Expected, InitCommit.Expected 필드는 폐기 예정이며 API v1.49에서 생략될 거예요.
  • eth0에 대한 HostConfigSysctls(최상위 --sysctl 설정)는 v1.46의 변경 사항에 설명된 것처럼 더 이상 DriverOpts로 마이그레이션되지 않아요.
  • GET /images/jsonGET /images/{name}/json 응답은 이제 이미지 타깃의 OCI 디스크립터를 담은 Descriptor 필드를 포함해요. 이 새 필드는 데몬이 멀티 플랫폼 이미지 저장소를 제공하는 경우에만 채워져요. 경고: 이는 실험적이며 하위 호환성 없이 언제든 변경될 수 있어요.
  • GET /images/{name}/json 응답은 이제 이미지 인덱스에 포함된 하위 매니페스트에 대한 정보를 담은 Manifests 필드를 반환할 거예요. 플랫폼별 매니페스트와 빌드 어테스테이션 같은 것이 포함돼요. 이 새 필드는 요청이 manifests 쿼리 파라미터를 true로 설정한 경우에만 채워져요. 이는 GET /images/json 엔드포인트와 동일하게 동작해요. 경고: 이는 실험적이며 하위 호환성 없이 언제든 변경될 수 있어요.
  • GET /containers/{name}/json은 이제 컨테이너를 만드는 데 사용된 이미지의 플랫폼별 이미지 매니페스트의 OCI 디스크립터를 담은 ImageManifestDescriptor 필드를 반환해요. 이 필드는 데몬이 멀티 플랫폼 이미지 저장소를 제공하는 경우에만 채워져요.
  • POST /networks/create는 이제 EnableIPv4 필드를 가져요. false로 설정하면 네트워크의 IPv4 IPAM이 비활성화돼요. 데몬에 실험 기능이 활성화된 경우에만 false로 설정할 수 있어요.
  • GET /networks/{id}는 이제 네트워크에 IPv4 IPAM이 활성화됐는지 보여주는 EnableIPv4 필드를 반환해요.
  • POST /networks/{id}/connectPOST /containers/create는 이제 EndpointsConfigGwPriority 필드를 받아요. 이 값은 컨테이너의 기본 게이트웨이를 제공하는 네트워크 엔드포인트를 결정하는 데 사용돼요. 우선순위가 가장 높은 엔드포인트가 선택돼요. 여러 엔드포인트가 같은 우선순위면 네트워크 이름으로 사전순 정렬되어 가장 먼저 오는 것이 선택돼요.
  • GET /containers/json은 이제 각 네트워크 엔드포인트에 대한 NetworkSettingsGwPriority 필드를 반환해요.
  • API 디버그 엔드포인트(GET /debug/vars, GET /debug/pprof/, GET /debug/pprof/cmdline, GET /debug/pprof/profile, GET /debug/pprof/symbol, GET /debug/pprof/trace, GET /debug/pprof/{name})는 이제 버전이 붙은 API 경로(/v/)를 통해서도 접근할 수 있어요.
  • POST /build/prunekeep-storagereserved-space로 이름을 바꾸고 추가 프룬 파라미터 max-used-spacemin-free-space를 지원해요.
  • GET /containers/json은 이제 /containers/{name}/json의 같은 필드와 일치하는 ImageManifestDescriptor 필드를 반환해요. 이 필드는 데몬이 멀티 플랫폼 이미지 저장소를 제공하는 경우에만 채워져요.

v1.47 API 변경 사항

  • GET /images/json 응답은 이제 이미지 인덱스에 포함된 하위 매니페스트에 대한 정보를 담은 Manifests 필드를 포함해요. 플랫폼별 매니페스트와 빌드 어테스테이션 같은 것이 포함돼요. 이 새 필드는 요청이 manifests 쿼리 파라미터를 true로 설정한 경우에만 채워져요. 경고: 이는 실험적이며 하위 호환성 없이 언제든 변경될 수 있어요.
  • GET /info는 데몬이 시작될 때 bridge-nf-call-iptables 또는 bridge-nf-call-ip6tables가 비활성화된 경우 더 이상 경고를 포함하지 않아요. br_netfilter 모듈은 이제 필요할 때 로드되도록 시도되어 그 경고가 부정확해졌어요. 이 변경은 버전이 붙지 않으며, 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.

v1.46 API 변경 사항

  • GET /info는 이제 데몬이 컨테이너와 플러그인을 실행하는 데 사용하는 containerd API 소켓 위치와 containerd 네임스페이스에 대한 정보를 담은 Containerd 필드를 포함해요.
  • POST /containers/createNetworkingConfig.EndpointsConfig.DriverOpts 필드와 POST /networks/{id}/connectEndpointsConfig.DriverOpts 필드는 이제 인터페이스별 sysctls를 설정하기 위한 com.docker.network.endpoint.sysctls 라벨을 지원해요. 값은 sysctl 할당의 쉼표로 구분된 목록이며, 인터페이스 이름은 "IFNAME"이어야 해요. 예를 들어 net.ipv4.config.eth0.log_martians=1을 설정하려면 net.ipv4.config.IFNAME.log_martians=1을 사용해요. API v1.46까지의 버전에서 eth0에 대한 최상위 --sysctl 설정은 가능할 때 DriverOpts로 마이그레이션돼요. 이 자동 마이그레이션은 향후 릴리스에서 제거될 거예요.
  • GET /containers/json은 이제 컨테이너의 어노테이션을 반환해요.
  • POST /images/{name}/push는 이제 멀티 플랫폼 이미지에서 특정 플랫폼 매니페스트를 선택할 수 있게 해 주는 platform 파라미터(JSON 인코딩 OCI Platform 타입)를 지원해요.
  • POST /containers/create는 이제 tmpfs 마운트의 옵션을 설정하기 위해 HostConfig.Mounts.TmpfsOptions의 일부로 Options를 받아요.
  • POST /services/create는 이제 tmpfs 마운트의 옵션을 설정하기 위해 ContainerSpec.Mounts.TmpfsOptions의 일부로 Options를 받아요.
  • GET /events는 이제 태그됐든 안 됐든 새 이미지가 빌드될 때 발생하는 이미지 create 이벤트를 지원해요.

GET /images/{name}/json 응답에서 폐기 예정인 Config 필드

이 엔드포인트가 반환하는 Config 필드("이미지 검사"에 사용됨)는 이미지 구성의 일부가 아니고 Docker Image Spec과 OCI Image Spec에도 없는 추가 필드를 반환해요.

이 추가 필드들은 응답에 사용되는 api/types.ImageInspec 타입이 container.Config 타입을 사용하기 때문에 발생하는 구현 세부 사항으로 인해 응답에 포함돼요.

container.Config 타입은 이미지 구성의 상위 집합이며, 이미지의 Config는 이미지에서 만든 컨테이너의 템플릿으로 사용되지만 추가 필드는 런타임에(컨테이너 생성 시 전달된 옵션에서) 설정되고 이미지 Config에서 가져오지 않아요.

이 필드들은 설정되지 않으며(항상 타입의 기본값을 반환) 비어 있을 때 응답에서 생략되지 않아요. 이 필드들은 이미지 구성 응답의 일부로 의도되지 않았기 때문에 폐기 예정이며 API에서 제거될 거예요.

현재 API 응답에 포함되지만 기본 이미지의 Config의 일부가 아니며 폐기 예정인 필드는 다음과 같아요.

  • Hostname, Domainname, AttachStdin, AttachStdout, AttachStderr, Tty, OpenStdin, StdinOnce, Image, NetworkDisabled(설정된 경우 외에는 이미 생략), MacAddress(설정된 경우 외에는 이미 생략), StopTimeout(설정된 경우 외에는 이미 생략)
  • POST /services/createPOST /services/{id}/update는 이제 OomScoreAdj를 지원해요.

v1.45 API 변경 사항

  • POST /containers/create는 이제 명명된 볼륨의 하위 경로를 마운트할 수 있는 VolumeOptions.Subpath를 지원해요.
  • POST /images/searchis-automated 필드에 항상 false 값을 가정할 거예요. 결과적으로 is-automated=true 검색은 결과가 없고, is-automated=false는 아무 동작도 하지 않아요.
  • GET /images/{name}/json은 더 이상 ContainerContainerConfig 필드를 포함하지 않아요. 이미지 구성을 접근하려면 Config 필드를 대신 사용해요.
  • GET /containers/{name:.*}/json 호출에서 반환되는 Aliases 필드는 더 이상 짧은 컨테이너 ID를 포함하지 않고 POST /containers/create 엔드포인트에 원래 제출된 값을 정확히 반영해요. 짧은 컨테이너 ID가 필요할 때는 새로 도입된 DNSNames를 대신 사용해야 해요.

v1.44 API 변경 사항

  • GET /images/json은 이제 until 필터를 받아요. 타임스탬프를 받아 그 이전에 만들어진 모든 이미지를 나열해요. ``은 Unix 타임스탬프, 날짜 형식 타임스탬프, 또는 데몬 머신 시간 기준으로 계산된 Go 기간 문자열(예: 10m, 1h30m)일 수 있어요. 이 변경은 버전이 붙지 않으며, 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /images/{name}/json, GET /images/json, GET /system/df 응답의 VirtualSize 필드는 이제 생략돼요. 같은 정보를 담고 있는 Size 필드를 대신 사용해요.
  • 폐기 예정: GET /images/search 응답의 is_automated 필드는 폐기 예정이며, Docker Hub가 검색 API에서 is_automated 필드를 폐기하고 있으므로 향후 항상 false로 설정될 거예요. 이 폐기는 버전이 붙지 않으며 모든 API 버전에 적용돼요.
  • 폐기 예정: GET /images/search 엔드포인트의 is-automated 필터. is_automated 필드는 Docker Hub의 검색 API가 폐기했어요. 결과적으로 is-automated=true 검색은 결과가 없어요. 이 폐기는 버전이 붙지 않으며 모든 API 버전에 적용돼요.
  • 읽기 전용 바인드 마운트는 이제 기능을 지원하는 런타임과 함께 kernel >= 5.12에서 재귀적으로 읽기 전용으로 만들어져요. POST /containers/create, GET /containers/{id}/json, GET /containers/json은 이제 동작을 커스터마이즈하는 BindOptions.ReadOnlyNonRecursiveBindOptions.ReadOnlyForceRecursive를 지원해요.
  • POST /containers/create는 이제 시작 기간 동안 헬스체크 간격을 설정하는 HealthConfig.StartInterval을 받아요.
  • GET /info는 이제 구성된 CDI 사양 디렉터리를 나타내는 CDISpecDirs 필드를 포함해요. 적용된 설정을 사용하려면 데몬에 실험이 활성화되어 있어야 하고, 실험적이지 않은 데몬에는 항상 빈 목록이 반환돼요.
  • POST /networks/create는 이제 IPAMConfig에 잘못된 값이 있으면 400을 반환해요. 이 변경은 버전이 붙지 않으며 v1.44를 지원하는 데몬의 모든 API 버전에 적용돼요.
  • POST /networks/create는 중복된 이름으로 생성 시 체계적으로 실패해요. 따라서 CheckDuplicate 필드는 이제 폐기 예정이에요. 이 변경은 버전이 붙지 않으며 v1.44를 지원하는 데몬의 모든 API 버전에 적용돼요.
  • POST /containers/create는 이제 NetworkingConfig.EndpointSettings에 여러 EndpointSettings를 받아요.
  • POST /containers/createPOST /networks/{id}/connect는 이제 POST /containers/{id}/start에서만 반환되던 검증 오류를 잡아내요. 이 엔드포인트들은 첫 번째 오류만 반환하는 대신 찾은 모든 검증 오류를 반환해요. 이 변경은 버전이 붙지 않으며 모든 API 버전에 적용돼요.
  • POST /services/createPOST /services/{id}/update는 이제 ContainerSpec.Privileges 객체에서 SeccompAppArmor 필드를 받아요. 이로써 Swarm 서비스에서 Seccomp와 AppArmor를 일부 구성할 수 있어요.
  • POST /containers/createNetworkSettings.EndpointSettingsPOST /networks/{id}/connectEndpointConfig에 엔드포인트별 새 MacAddress 필드가 추가됐어요. POST /containers/createConfig에 있는 컨테이너 전체 MacAddress 필드는 이제 폐기 예정이에요.
  • POST /services/createPOST /services/{id}/update 요청의 Networks 필드는 이제 폐기 예정이에요. TaskTemplate.Networks 필드를 대신 사용해야 해요.
  • GET /images/{name}/json 응답의 ContainerContainerConfig 필드는 폐기 예정이며 API v1.45에서 더 이상 포함되지 않을 거예요.
  • GET /info는 이제 Runtimesstatus 속성을 포함해요.
  • GET /containers/{name:.*}/json에 특정 네트워크에서 컨테이너가 가지는 비-정규화된 DNS 이름 전부를 담은 DNSNames라는 새 필드가 추가됐어요.
  • v1.44 이하 버전에서 GET /containers/{name:.*}/json 호출이 반환하는 Aliases 필드는 짧은 컨테이너 ID를 포함해요. 이는 다음 API 버전 v1.45에서 변경될 거예요. 해당 버전부터 이 특정 값은 Aliases 필드에서 제거되어 POST /containers/create 엔드포인트에 원래 제출된 값을 정확히 반영할 거예요. 새로 도입된 DNSNames를 대신 사용해야 해요.
  • GET /containers/{id}/json 호출 시 NetworkSettings에서 사용할 수 있는 HairpinMode, LinkLocalIPv6Address, LinkLocalIPv6PrefixLen, SecondaryIPAddresses, SecondaryIPv6Addresses 필드는 폐기 예정이며 향후 릴리스에서 제거될 거예요. NetworkSettings.Networks의 기본 네트워크를 대신 찾아보세요.
  • GET /images/{id}/json은 이미지 구성에 Created 필드가 없으면 Created 필드를 생략해요(이전에는 0001-01-01T00:00:00Z였어요).

v1.43 API 변경 사항

  • POST /containers/create는 이제 HostConfig의 일부로 Annotations를 받아요. 컨테이너에 임의의 메타데이터를 첨부하는 데 사용할 수 있으며, 컨테이너 시작 시 런타임에도 전달돼요.
  • GET /images/json은 더 이상 태그되지 않은 이미지의 RepoTagsRepoDigests에 하드코딩된 :@를 포함하지 않아요. 이런 경우 빈 배열이 생성돼요.
  • GET /images/{name}/json, GET /images/json, GET /system/df 응답의 VirtualSize 필드는 폐기 예정이며 API v1.44에서 더 이상 포함되지 않을 거예요. 같은 정보를 담고 있는 Size 필드를 대신 사용해요.
  • GET /info는 이 옵션이 전역으로 활성화되면 SecurityOptions 문자열 목록에 no-new-privileges를 포함해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.

v1.42 API 변경 사항

  • GET /system/df 엔드포인트에서 BuilderSize 필드를 제거했어요. 이 필드는 실험 기능의 일부로 API 1.31에서 도입됐고 API 1.40부터 더 이상 사용되지 않았어요. 빌더 구성 요소가 사용하는 저장 공간을 추적하려면 BuildCache 필드를 사용해요.
  • POST /containers/{id}/stopPOST /containers/{id}/restart는 이제 컨테이너의 기본 중지 신호를 재정의할 수 있는 signal 쿼리 파라미터를 받아요.
  • GET /images/json은 이제 shared-size 쿼리 파라미터를 받아요. true로 설정하면 반환되는 이미지에 시스템의 다른 이미지와 공유하는 디스크 크기를 제공하는 SharedSize가 포함돼요.
  • GET /system/df는 이제 type 쿼리 파라미터를 받아요. 설정하면 지정된 객체 유형에 대한 데이터만 계산해 반환해요. 파라미터를 여러 번 지정해 여러 객체 유형을 선택할 수 있어요. 지원되는 값은 container, image, volume, build-cache예요.
  • GET /system/df는 이제 동시에 사용될 수 있어요. 이전 요청이 아직 처리되는 동안 요청하면 완료 시 이미 실행 중인 계산의 결과를 받아요. 이전에는 이런 상황에서 오류(a disk usage operation is already running)가 반환됐어요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • POST /images/createfromSrc 옵션으로 아카이브에서 이미지를 가져올 때 platform 쿼리 파라미터를 통해 전달되는 운영 체제와 아키텍처를 모두 지원해요. 이전에는 운영 체제만 사용됐고 아키텍처는 무시됐어요. platform 옵션을 설정하지 않으면 호스트의 운영 체제와 아키텍처가 기본으로 사용돼요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • POST /containers/{id}/wait 엔드포인트는 이제 잘못된 condition이 제공되면(API 1.30 이상) 400 상태 코드를 반환해요.
  • POST /containers/createPOST /containers/{id}/update 엔드포인트에서 KernelMemory 필드를 제거했어요. API 버전 v1.42 이상에서는 설정된 값이 무시돼요. 이전 API 버전은 이 필드를 계속 받아들이지만 커널 버전과 OCI 런타임에 따라 효과가 없을 수 있어요.
  • GET /containers/{id}/jsonKernelMemoryKernelMemoryTCP가 설정되지 않았으면 생략해요.
  • GET /info는 호스트나 호스트 구성(cgroups v2 사용 시)이 지원하지 않으면 KernelMemoryKernelMemoryTCP를 생략해요.
  • GET /_pingHEAD /_ping은 이제 기본적으로 Builder-Version을 반환해요. 이 헤더는 사용할 기본 빌더를 포함하며 데몬이 광고하는 권장 사항이에요. 어떤 빌더를 사용할지는 클라이언트가 결정해요. Linux에서 기본값은 버전 "2"(BuildKit)이지만 데몬을 버전 "1"(클래식 빌더)을 권장하도록 구성할 수 있어요. Windows는 아직 네이티브 Windows 이미지에 BuildKit을 지원하지 않으며 기본으로 "1"(클래식 빌더)을 사용해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /_pingHEAD /_ping은 이제 Swarm 헤더를 반환해요. 추가 엔드포인트를 호출하지 않고도 데몬에 Swarm이 활성화되어 있는지 클라이언트가 감지할 수 있게 해 줘요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요. 클라이언트는 이 헤더를 "선택 사항"으로 간주하고 헤더가 없으면 다른 엔드포인트를 사용해 이 정보를 얻어야 해요. Swarm 헤더는 다음 값 중 하나를 담을 수 있어요: "inactive", "pending", "error", "locked", "active/worker", "active/manager".
  • Windows 컨테이너용 POST /containers/create는 이제 HostConfig.Resources.Devices.PathOnHost에서 새 문법을 받아요. 기존 class/ 문법 외에도 ://가 이제 인식돼요. 특정 `` 값에 대한 지원은 기본 구현과 Windows 버전에 따라 달라요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /containers/{id}/attach, GET /exec/{id}/start, GET /containers/{id}/logs, GET /services/{id}/logs, GET /tasks/{id}/logs는 이제 멀티플렉싱된 stdout/stderr 스트림이 클라이언트로 보내지면 application/vnd.docker.multiplexed-stream, 그렇지 않으면 application/vnd.docker.raw-stream으로 Content-Type 헤더를 설정해요.
  • POST /volumes/create는 이제 클러스터 볼륨(CNI)을 만들기 위한 새 ClusterVolumeSpec을 받아요. 이 옵션은 데몬이 Swarm 매니저인 경우에만 사용할 수 있어요. 생성 시 볼륨 응답은 이제 생성된 볼륨에 대한 정보를 담은 ClusterVolume 필드도 가질 수 있어요.
  • GET /system/df가 반환하는 BuildCache.Parent 필드는 폐기 예정이며 이제 생략돼요. v1.42 이전 API 버전은 이 필드를 계속 포함해요.
  • GET /system/df는 이제 "build-cache" 레코드의 부모 ID 목록을 담은 새 Parents 필드를 포함해요.
  • GET /volumes/{name}, GET /volumes, GET /system/df가 반환하는 볼륨 정보는 이제 볼륨이 클러스터 볼륨이면 ClusterVolume을 포함할 수 있어요(데몬이 Swarm 매니저여야 함).
  • ClusterVolume 필드가 추가됐어요.
  • 클러스터 볼륨(CNI) 업데이트를 위한 새 PUT /volumes/{name} 엔드포인트가 추가됐어요. 클러스터 볼륨은 데몬이 Swarm 매니저인 경우에만 지원돼요.
  • GET /containers/{name}/attach/ws 엔드포인트는 이제 구성된 스트림에만 연결하도록 stdin, stdout, stderr 쿼리 파라미터를 받아요. 참고: 이 파라미터들은 더 이전 API 버전에서 문서화됐지만 실제로는 지원되지 않았어요. v1.42 이전 API 버전은 이 파라미터들을 계속 무시하고 모든 스트림에 연결하는 것을 기본으로 해요. pre-v1.42 동작을 유지하려면 세 쿼리 파라미터를 모두 설정하세요(?stdin=1,stdout=1,stderr=1).
  • Linux에서 POST /containers/create는 이제 HostConfig.ConsoleSize 속성을 존중해요. 컨테이너는 원하는 터미널 크기로 즉시 생성되며 클라이언트가 스스로 원하는 크기를 설정할 필요가 없어요.
  • POST /containers/create는 호스트 경로가 없으면 생성되도록 CreateMountpoint를 설정할 수 있게 해 줘요. Binds와 동등한 기능을 제공해요.
  • POST /containers/create는 BindOptions/VolumeOptions/TmpfsOptions가 일치하지 않는 마운트 타입으로 설정되면 요청을 거부해요.
  • POST /containers/{id}/exec는 이제 선택적 ConsoleSize 파라미터를 받아요. 실행된 프로세스가 생성될 때 콘솔 크기를 즉시 설정할 수 있게 해 줘요.
  • POST /volumes/prune은 이제 기본적으로 "익명" 볼륨(이름이 부여되지 않은 볼륨)만 프룬해요. 새 필터 파라미터 all을 truth-y 값(true, 1)으로 설정하면 이전 동작을 얻을 수 있어요.

v1.41 API 변경 사항

  • GET /events는 이제 리소스 프룬 완료 후 prune 이벤트를 반환해요. 프룬 이벤트는 container, network, volume, image, builder에 대해 반환되며 회수된 공간(바이트)을 나타내는 reclaimed 속성을 가져요.
  • GET /info는 이제 cgroup 버전을 담은 CgroupVersion 필드를 반환해요.
  • GET /info는 이제 로컬 네트워크용 커스텀 기본 주소 풀 목록을 담은 DefaultAddressPools 필드를 반환해요. daemon.json 파일이나 --default-address-pool dockerd 옵션으로 지정할 수 있어요.
  • POST /services/createPOST /services/{id}/update는 이제 BindOptions.NonRecursive를 지원해요.
  • GET /infoClusterStoreClusterAdvertise 필드는 폐기 예정이며 빈 값을 포함하면 이제 생략돼요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • Docker 1.13에서 filters 옵션으로 대체되며 폐기 예정이었던 filter(단수) 쿼리 파라미터는 GET /images/json 엔드포인트에서 제거됐어요. 이 파라미터는 API 버전 1.40 이하를 사용할 때는 계속 사용할 수 있어요.
  • GET /services는 이제 ContainerSpec의 일부로 CapAddCapDrop을 반환해요.
  • GET /services/{id}도 이제 ContainerSpec의 일부로 CapAddCapDrop을 반환해요.
  • POST /services/create는 이제 ContainerSpec의 일부로 CapAddCapDrop을 받아요.
  • POST /services/{id}/update도 이제 ContainerSpec의 일부로 CapAddCapDrop을 받아요.
  • GET /tasks는 이제 ContainerSpec의 일부로 CapAddCapDrop을 반환해요.
  • GET /tasks/{id}도 이제 ContainerSpec의 일부로 CapAddCapDrop을 반환해요.
  • GET /services는 이제 TaskTemplate.Resources.LimitsPids를 반환해요.
  • GET /services/{id}도 이제 TaskTemplate.Resources.LimitsPids를 반환해요.
  • POST /services/create는 이제 TaskTemplate.Resources.LimitsPids를 받아요.
  • POST /services/{id}/update는 이제 최대 PID 수를 제한하기 위해 TaskTemplate.Resources.LimitsPids를 받아요.
  • GET /tasks는 이제 TaskTemplate.Resources.LimitsPids를 반환해요.
  • GET /tasks/{id}도 이제 TaskTemplate.Resources.LimitsPids를 반환해요.
  • POST /containers/create는 이제 os[/arch[/variant]] 형식의 platform 쿼리 파라미터를 받아요. 설정하면 데몬이 요청된 이미지가 주어진 OS와 아키텍처로 로컬 이미지 캐시에 있는지 확인하고, 없으면 404 상태를 반환해요. 옵션이 설정되지 않으면 호스트의 네이티브 OS와 아키텍처가 이미지 캐시에서 이미지를 찾는 데 사용돼요. 플랫폼이 전달되지 않고 주어진 이미지가 로컬 이미지 캐시에 존재하지만 OS나 아키텍처가 일치하지 않으면 사용 가능한 이미지로 컨테이너가 생성되고 응답의 Warnings 필드에 경고가 추가돼요. 예:
    WARNING: The requested image's platform (linux/arm64/v8) does not
             match the detected host platform (linux/amd64) and no
             specific platform was requested
    
  • Linux에서 POST /containers/create는 이제 HostConfig.CgroupnsMode 속성을 받아요. host로 설정하면 데몬의 cgroup 네임스페이스에 컨테이너를 만들고, private로 설정하면 자체 비공개 cgroup 네임스페이스에 만듭니다. 데몬별 기본값은 host이며 CgroupNamespaceMode 데몬 구성 파라미터로 변경할 수 있어요.
  • GET /info는 이제 운영 체제 버전을 담은 OSVersion 필드를 반환해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /info는 값이 설정되지 않은 SystemStatus 필드를 더 이상 반환하지 않아요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /services는 이제 status 쿼리 파라미터를 받아요. true로 설정하면 반환되는 서비스에 서비스의 Desired, Running, Completed 작업 수를 제공하는 ServiceStatus가 포함돼요.
  • GET /services는 이제 ServiceSpecModeReplicatedJob 또는 GlobalJob을 포함할 수 있어요.
  • GET /services/{id}도 이제 ServiceSpecModeReplicatedJob 또는 GlobalJob을 포함할 수 있어요.
  • POST /services/create는 이제 ServiceSpecModeReplicatedJob 또는 GlobalJob을 받아요.
  • POST /services/{id}/updateServiceSpec.ModeReplicatedJob 객체의 필드 업데이트를 받아요. 단, 서비스 모드는 여전히 변경할 수 없어요.
  • GET /services는 이제 ReplicatedJob 또는 GlobalJob 모드의 서비스에 JobStatus를 포함해요.
  • GET /services/{id}ReplicatedJob 또는 GlobalJob 모드의 서비스에 JobStatus를 포함해요.
  • GET /tasks는 이제 작업 모드 서비스에서 생성된 작업에 JobIteration을 포함해요.
  • GET /tasks/{id}도 작업 모드 서비스에서 생성된 경우 작업에 JobIteration을 포함해요.
  • GET /containers/{id}/stats는 이제 쿼리 파라미터(one-shot)를 받아요. stream=false와 함께 사용하면 1초 동안 2개의 CPU 통계를 얻기 위해 두 번의 수집 주기를 기다리는 대신 단일 통계 세트를 가져와요.
  • HostConfig.ResourcesKernelMemory 필드는 이제 폐기 예정이에요.
  • InfoKernelMemory 필드는 이제 폐기 예정이에요.
  • GET /services는 이제 ContainerSpec의 일부로 Ulimits를 반환해요.
  • GET /services/{id}도 이제 ContainerSpec의 일부로 Ulimits를 반환해요.
  • POST /services/create는 이제 ContainerSpec의 일부로 Ulimits를 받아요.
  • POST /services/{id}/update도 이제 ContainerSpec의 일부로 Ulimits를 받아요.

v1.40 API 변경 사항

  • /_ping 엔드포인트는 이제 GET 또는 HEAD 요청으로 모두 접근할 수 있어요. HEAD 요청으로 접근하면 모든 헤더가 반환되지만 본문은 비어 있어요(Content-Length: 0). 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요. 클라이언트는 HEAD를 시도하고 HEAD 요청이 실패하면 GET으로 대체하는 것을 권장해요.
  • GET /_pingHEAD /_ping은 이제 결과가 캐시되지 않도록 Cache-ControlPragma 헤더를 설정해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /services는 이제 ContainerSpec의 일부로 Sysctls를 반환해요.
  • GET /services/{id}도 이제 ContainerSpec의 일부로 Sysctls를 반환해요.
  • POST /services/create는 이제 ContainerSpec의 일부로 Sysctls를 받아요.
  • POST /services/{id}/update도 이제 ContainerSpec의 일부로 Sysctls를 받아요.
  • POST /services/create는 이제 ContainerSpec.Privileges.CredentialSpec의 일부로 Config를 받아요.
  • POST /services/{id}/update도 이제 ContainerSpec.Privileges.CredentialSpec의 일부로 Config를 받아요.
  • POST /services/create는 이제 ContainerSpec.Configs의 옵션으로 Runtime을 포함해요.
  • POST /services/{id}/update도 이제 ContainerSpec.Configs의 옵션으로 Runtime을 포함해요.
  • GET /tasks는 이제 ContainerSpec의 일부로 Sysctls를 반환해요.
  • GET /tasks/{id}도 이제 ContainerSpec의 일부로 Sysctls를 반환해요.
  • GET /networks는 이제 dangling 필터 유형을 지원해요. true(또는 1)로 설정하면 컨테이너가 사용하지 않는 모든 네트워크를 반환하고, false(또는 0)로 설정하면 하나 이상의 컨테이너가 사용하는 네트워크만 반환해요.
  • GET /nodes는 이제 node.label 필터 유형을 지원해요. 라벨 필터 형식은 node.label=/node.label==(지정된 라벨이 있는 것을 반환) 또는 node.label!=/node.label!==(지정된 라벨이 없는 것을 반환)이에요.
  • POST /containers/create는 이제 Fluentd 로깅 드라이버 사용 시 HostConfig.LogConfig.Config에서 fluentd-async 옵션을 받아요. 이 옵션은 기능은 유지되지만 향후 릴리스에서 제거될 fluentd-async-connect 옵션을 대체해요. 사용자는 앞으로 fluentd-async 옵션을 사용하는 것이 좋아요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • POST /containers/create는 이제 Fluentd 로깅 드라이버 사용 시 HostConfig.LogConfig.Config에서 fluentd-request-ack 옵션을 받아요. 활성화하면 Fluentd 로깅 드라이버가 고유 ID로 chunk 옵션을 보내요. 서버는 승인으로 응답해요. 이 옵션은 메시지 전송의 신뢰성을 개선해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • POST /containers/create, GET /containers/{id}/json, GET /containers/json은 이제 BindOptions.NonRecursive를 지원해요.
  • POST /swarm/init은 이제 데이터 경로 포트 번호를 설정하는 DataPathPort 속성을 받아요.
  • GET /info는 이제 swarm에서 현재 사용 중인 DataPathPort에 대한 정보를 반환해요.
  • GET /info는 이제 호스트 커널에 PID 제한 지원이 활성화되어 있는지 나타내는 PidsLimit 부울을 반환해요.
  • GET /info는 데몬이 루트리스(rootless) 모드로 실행되면 이제 SecurityOptionsname=rootless를 포함해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • GET /info는 데몬이 루트리스 모드로 실행되면 이제 CgroupDrivernone을 반환해요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.
  • POST /containers/create는 이제 HostConfig의 일부로 DeviceRequests를 받아요. Nvidia GPU를 설정하는 데 사용할 수 있어요.
  • GET /swarm 엔드포인트는 이제 DataPathPort 정보를 반환해요.
  • POST /containers/create는 이제 커널 TCP 버퍼 메모리의 하드 리밋을 설정하는 KernelMemoryTCP 필드를 받아요.
  • GET /service는 이제 Placement의 일부로 MaxReplicas를 반환해요.
  • GET /service/{id}도 이제 Placement의 일부로 MaxReplicas를 반환해요.
  • POST /service/createPOST /services/(id or name)/update는 이제 서비스 Placement의 일부로 MaxReplicas 필드를 받아 서비스의 노드별 최대 레플리카를 지정할 수 있게 해 줘요.
  • Linux에서 POST /containers/createIpcMode가 명시적으로 지정되지 않으면 이제 기본적으로 HostConfig.IpcMode=private로 컨테이너를 만들어요. 데몬별 기본값은 DefaultIpcMode 데몬 구성 파라미터로 shareable로 다시 변경할 수 있어요.
  • POST /containers/{id}/update는 이제 컨테이너의 PID 한도를 조정하는 PidsLimit 필드를 받아요. 무제한은 0 또는 -1로 설정해요. 현재 값을 변경하지 않으려면 null로 둬요.
  • POST /build는 이제 BuildKit 모드 사용 시 빌드 출력을 구성하는 outputs 키를 받아요.

V1.39 API 변경 사항

  • GET /info는 데몬이 이 정보를 얻지 못하면 KernelVersionOperatingSystem에 `` 대신 빈 문자열을 반환해요.
  • GET /info는 데몬에 라이선스가 적용된 경우 제품 라이선스 정보를 반환해요.
  • GET /info는 이제 누락된 기능이나 데몬 구성 관련 문제에 대한 경고와 정보 메시지를 담은 Warnings 필드를 반환해요.
  • POST /swarm/init은 이제 글로벌 스코프 기본 주소 풀을 설정하는 DefaultAddrPool 속성을 받아요.
  • POST /swarm/init은 이제 각 네트워크의 서브넷 마스크 길이를 제공해 글로벌 스코프 네트워크를 설정하는 SubnetSize 속성을 받아요.
  • POST /session(V1.31에서 추가됨)은 더 이상 실험적이지 않아요. 이 엔드포인트는 클라이언트와 데몬 사이에 대화형 장기 실행 프로토콜을 실행하는 데 사용할 수 있어요.

V1.38 API 변경 사항

  • GET /tasksGET /tasks/{id}는 이제 "attachable" swarm 스코프 네트워크에 연결된 비서비스 컨테이너의 ContainerID를 담은 NetworkAttachmentSpec 필드를 반환해요.

v1.37 API 변경 사항

  • POST /containers/createPOST /services/create는 이제 SCTP 포트 노출을 지원해요.
  • POST /configs/createPOST /configs/{id}/create는 이제 Templating 드라이버를 받아요.
  • GET /configsGET /configs/{id}는 이제 config의 Templating 드라이버를 반환해요.
  • POST /secrets/createPOST /secrets/{id}/create는 이제 Templating 드라이버를 받아요.
  • GET /secretsGET /secrets/{id}는 이제 secret의 Templating 드라이버를 반환해요.

v1.36 API 변경 사항

  • GET /events는 이제 exec 프로세스가 종료될 때 exec_die 이벤트를 반환해요.

v1.35 API 변경 사항

  • POST /services/createPOST /services/(id)/update는 이제 서비스를 실행하는 컨테이너의 격리 기술(default, process, hyperv)을 설정하는 컨테이너 스펙의 Isolation 필드를 받아요. 이 구성은 Windows 컨테이너에만 사용돼요.
  • GET /containers/(name)/logs는 이제 추가 쿼리 파라미터 until을 지원해요. 이는 지정된 타임스탬프 이전에 발생한 로그 줄을 반환해요.
  • POST /containers/{id}/exec는 이제 컨테이너의 작업 디렉터리와 독립적으로 exec 프로세스의 작업 디렉터리를 설정하는 WorkingDir 속성을 받아요.
  • GET /version은 이제 Moby를 기반으로 한 제품이 플랫폼에 대한 정보를 반환하는 데 사용할 수 있는 Platform.Name 필드를 반환해요.
  • GET /version은 이제 사용된 구성 요소에 대한 정보를 반환하는 데 사용할 수 있는 Components 필드를 반환해요. Engine 자체에 대한 정보는 이제 "Component" 버전으로 포함되며, 최상위 Version, GitCommit, APIVersion, MinAPIVersion, GoVersion, Os, Arch, BuildTime, KernelVersion, Experimental 필드의 모든 정보를 담고 있어요. 앞으로 Components 섹션의 정보가 최상위 대응 항목보다 우선해요.

v1.34 API 변경 사항

  • POST /containers/(name)/wait?condition=removed는 이제 컨테이너 제거 실패 시에도 반환해요. 실패를 나타내기 위해 응답 JSON에 Error라는 이름의 구조체 포인터가 추가됐어요. Errornull이면 컨테이너 제거가 성공했고, 그렇지 않으면 Error.Message 필드에서 컨테이너 제거가 실패한 이유를 나타내는 오류 메시지를 확인할 수 있어요.

v1.33 API 변경 사항

  • GET /events는 이제 config, node, secret, service의 4가지 종류의 이벤트를 더 필터링할 수 있어요.

v1.32 API 변경 사항

  • POST /images/create는 이제 os[/arch[/variant]] 형식의 platform 파라미터를 받아요.
  • POST /containers/create는 이제 HostConfig.IpcMode 속성에 대한 추가 값을 받아요. 새 값은 private, shareable, none이에요.
  • DELETE /networks/{id or name}은 다른 네트워크의 name과 같은 name이 그 id를 가릴 수 있던 문제를 수정했어요. 이름이 같은 네트워크와 id가 같은 네트워크가 모두 존재하면 이제 id가 같은 네트워크가 삭제돼요. 이 변경은 버전이 붙지 않으며 데몬에 이 패치가 있으면 모든 API 버전에 영향을 줘요.

v1.31 API 변경 사항

  • DELETE /secrets/(name)은 secret이 존재하지 않으면 500 대신 404 상태 코드를 반환해요.
  • POST /secrets/create는 이미 존재하는 secret을 만들 때 500 대신 409 상태 코드를 반환해요.
  • POST /secrets/create는 이제 외부 secrets 저장소에 secrets를 저장하기 위한 Name과 드라이버별 Options를 전달할 수 있는 Driver 구조체를 받아요. 기본(내부) secrets 저장소를 사용하면 Driver 속성을 생략할 수 있어요.
  • GET /secrets/(id)GET /secrets는 이제 secret을 저장하는 데 사용되는 외부 secrets 저장소의 Name과 드라이버별 Options를 담은 Driver 구조체를 반환해요. 외부 저장소를 사용하지 않으면 Driver 속성은 생략돼요.
  • POST /secrets/(name)/update는 라벨이 아닌 secret 내용을 업데이트할 때 500 대신 400 상태 코드를 반환해요.
  • POST /nodes/(name)/update는 마지막 노드를 강등(demote)하는 데 실패하면 500 대신 400 상태 코드를 반환해요.
  • GET /networks/(id or name)은 이제 스코프(local, swarm, global)로 네트워크를 필터링하는 선택적 쿼리 파라미터 scope를 받아요.
  • POST /session은 클라이언트와 데몬 사이에 대화형 장기 실행 프로토콜을 실행하는 데 사용할 수 있는 새 엔드포인트예요. 이 엔드포인트는 실험적이며 데몬이 실험 기능으로 시작된 경우에만 사용할 수 있어요.
  • GET /images/(name)/get은 이제 엔진에 로컬이고 이미지 구성의 일부가 아닌 이미지 메타데이터를 담은 ImageMetadata 필드를 포함해요.
  • POST /services/createTaskTemplate.Runtimeplugin으로 설정된 경우 PluginSpec을 받아요.
  • GET /events는 이제 사용자가 config를 생성, 업데이트, 제거할 때 발생하는 config 이벤트 create, update, remove를 지원해요.
  • GET /volumes/GET /volumes/{name}은 이제 볼륨이 생성된 날짜/시간을 담은 CreatedAt 필드를 반환해요. 볼륨의 생성 날짜/시간을 알 수 없으면 이 필드는 생략돼요. 스코프가 "global"인 볼륨의 경우 이 필드는 볼륨의 로컬 인스턴스 생성 날짜/시간을 나타내며, 다른 노드의 같은 볼륨 인스턴스와 다를 수 있어요.
  • GET /system/df는 이제 Volumes에 대한 CreatedAt 필드를 반환해요. 이 필드에 대한 설명은 /volumes/ 엔드포인트를 참조하세요.

v1.30 API 변경 사항

  • GET /info는 이제 지원되는 로깅 드라이버(플러그인 포함) 목록을 반환해요.
  • GET /infoGET /swarm은 이제 노드가 swarm에 있으면 클러스터 전체 swarm CA 정보(클러스터 루트 CA 인증서와 클러스터 TLS 리프 인증서 발급자의 subject와 공개 키)를 반환해요. 또한 spec의 일부로 제공된 원하는 CA 서명 인증서도 표시해요.
  • POST /build/는 이제 (무음이 아닐 때) 생성된 각 이미지에 대해 페이로드 types.BuildResult가 있는 JSON 출력 스트림에 Aux 메시지를 생성해요. 마지막 그런 메시지는 빌드에서 생성된 이미지를 참조해요.
  • GET /nodesGET /nodes/{id}는 이제 노드가 swarm의 일부이면 swarm TLS 정보(신뢰하는 루트 CA와 발급자의 subject 및 공개 키)에 대한 추가 정보를 반환해요.
  • GET /distribution/(name)/json은 이미지 이름에 대해 페이로드 types.DistributionInspect가 있는 JSON 출력 스트림을 반환하는 새 엔드포인트예요. 레지스트리에 직접 접속해 가져온 다이제스트와 지원 플랫폼이 있는 디스크립터를 포함해요.
  • POST /swarm/update는 이제 swarm spec의 CA 구성의 일부로 3개의 추가 파라미터를 받아요. swarm의 원하는 CA 인증서, swarm의 원하는 CA 키(외부 인증서를 사용하지 않는 경우), 그리고 swarm이 새 CA 인증서/키 쌍을 생성하고 순환하도록 강제하는 선택적 파라미터예요.
  • POST /service/createPOST /services/(id or name)/update는 이제 서비스 Placement의 일부로 Platforms 필드를 받아 서비스가 지원하는 플랫폼을 지정할 수 있게 해 줘요.
  • POST /containers/(name)/wait는 이제 기다릴 상태 변경 조건을 나타내는 condition 쿼리 파라미터를 받아요. 또한 서버가 클라이언트에 대한 wait 콜백을 등록했음을 알리기 위해 응답 헤더를 즉시 반환해요.
  • POST /swarm/init은 이제 데이터 트래픽에 사용할 IP 주소 또는 네트워크 인터페이스를 설정하는 DataPathAddr 속성을 받아요.
  • POST /swarm/join도 이제 데이터 트래픽에 사용할 IP 주소 또는 네트워크 인터페이스를 설정하는 DataPathAddr 속성을 받아요.
  • GET /events는 이제 사용자가 service, node, secret을 생성, 업데이트, 제거할 때 발생하는 service, node, secret 이벤트를 지원해요.
  • GET /events는 이제 사용자가 swarm 스코프 네트워크를 제거할 때 발생하는 네트워크 제거 이벤트를 지원해요.
  • GET /events는 이제 scope 필터 유형을 지원하며 지원되는 값은 swarm과 local이에요.
  • PUT /containers/(name)/archive는 이제 UID/GID 맵을 대상 파일이나 디렉터리에 복사하는 copyUIDGID 파라미터를 받아요.

v1.29 API 변경 사항

  • DELETE /networks/(name)은 이제 라우팅 메시(routing-mesh)를 제공하는 데 사용되는 ingress 네트워크를 제거할 수 있게 해 줘요.
  • POST /networks/create는 이제 Ingress 부울 필드를 지정해 ingress 네트워크 생성을 지원해요. 현재는 오버레이 네트워크 드라이버를 사용할 때만 지원돼요.
  • GET /networks/(name)은 이제 네트워크가 ingress인지 보여주는 Ingress 필드를 반환해요.
  • GET /networks/는 이제 네트워크 모드(swarm, global, local)로 네트워크를 필터링하는 scope 필터를 지원해요.
  • POST /containers/create, POST /service/createPOST /services/(id or name)/update는 이제 HealthConfig의 일부로 StartPeriod 필드를 받아, 헬스체크가 통과하지 않아도 컨테이너가 비정상으로 간주되지 않아야 하는 기간을 지정할 수 있게 해 줘요.
  • GET /services/(id)는 이제 서비스 검사 출력에 기본값을 병합하는 insertDefaults 쿼리 파라미터를 받아요.
  • POST /containers/prune, POST /images/prune, POST /volumes/prune, POST /networks/prune은 이제 라벨 기반으로 컨테이너, 이미지, 볼륨, 네트워크를 필터링하는 label 필터를 지원해요. 라벨 필터 형식은 label=/label==(지정된 라벨이 있는 것을 제거) 또는 label!=/label!==(지정된 라벨이 없는 것을 제거)이에요.
  • POST /services/create는 이제 ContainerSpec의 일부로 Privileges를 받아요. Privileges에는 현재 CredentialSpecSELinuxContext가 포함돼요.

v1.28 API 변경 사항

  • POST /containers/create는 이제 각 Mount의 일관성 수준을 지정하는 Consistency 필드를 포함하며 가능한 값은 default, consistent, cached, delegated예요.
  • GET /containers/create는 이제 생성된 컨테이너에 커스텀 디바이스 cgroup 규칙을 설정하는 HostConfigDeviceCgroupRules 필드를 받아요.
  • GET /networks/(id or name)의 선택적 쿼리 파라미터 verbose는 이제 지정된 네트워크에서 비로컬 작업을 포함한 모든 작업과 함께 모든 서비스를 나열해요.
  • GET /containers/(id or name)/attach/ws는 이제 API 버전 >= v1.28이면 바이너리 프레임 형식의 WebSocket을 반환하고, 이전에는 텍스트 프레임 형식의 WebSocket을 반환해요.
  • GET /containers/(id or name)/stats는 커널이 >= 4.3이고 pids cgroup이 지원되면 pids_stats를 반환해요.
  • POST /containers/create는 이제 usernamespaces 리매핑을 재정의하고 컨테이너에 privileged 옵션을 사용할 수 있게 해 줘요.
  • POST /containers/create는 이제 명명된 볼륨에 대해 컨테이너 경로에서 볼륨으로의 자동 복사를 비활성화하는 nocopy 지정을 허용해요.
  • POST /auth는 레지스트리가 지원하면 이제 IdentityToken을 반환해요.
  • HostnameDomainname 필드가 모두 지정된 POST /containers/create는 컨테이너의 hostname이 Hostname.Domainname이 아닌 Hostname으로 설정되게 해요.
  • GET /volumes는 이제 더 많은 필터를 지원하며 새로 추가된 필터는 namedriver예요.
  • GET /containers/(id or name)/logs는 이제 컨테이너의 LogOpts에 제공된 환경 변수와 라벨 같은 추가 속성을 로그와 함께 스트리밍하는 details 쿼리 파라미터를 받아요.
  • POST /images/load는 이제 진행 정보를 JSON 스트림으로 반환하고 진행 세부 사항을 억제하는 quiet 쿼리 파라미터를 가져요.

v1.22 API 변경 사항

  • HostConfig.LxcConf 필드가 제거됐고 POST /containers/createGET /containers/(id)/json에서 더 이상 사용할 수 없어요.
  • POST /container/(name)/update는 컨테이너의 리소스를 업데이트해요.
  • GET /containers/json은 Windows에서 isolation 필터를 지원해요.
  • GET /containers/json은 이제 컨테이너의 네트워크 목록을 반환해요.
  • GET /info는 이제 데몬이 실행되는 호스트 아키텍처와 운영 체제 유형에 대한 정보를 제공하는 ArchitectureOSType 필드를 반환해요.
  • GET /networks/(name)은 이제 네트워크에 연결된 각 컨테이너에 대해 Name 필드를 반환해요.
  • GET /version은 이제 API가 반환하는 다른 날짜/시간 값과 일관되도록 BuildTime 필드를 RFC3339Nano 형식으로 반환해요.
  • AuthConfig는 이제 토큰 기반 인증을 위한 registrytoken을 지원해요.
  • POST /containers/create는 이제 HostConfig.KernelMemory에 4M 최소값 제한이 있어요.
  • POST /images/(name)/push로 시작된 푸시와 POST /images/create로 시작된 풀은 API 요청을 하는 HTTP 연결이 푸시/풀 완료 전에 닫히면 취소돼요.
  • POST /containers/create는 이제 디바이스에 대한 읽기/쓰기 속도 제한(초당 바이트 또는 초당 IO)을 설정할 수 있게 해 줘요.
  • GET /networks는 이제 name, id, type로 필터링을 지원해요.
  • POST /containers/create는 이제 컨테이너의 정적 IPv4 및/또는 IPv6 주소를 설정할 수 있게 해 줘요.
  • POST /networks/(id)/connect도 이제 컨테이너의 정적 IPv4 및/또는 IPv6 주소를 설정할 수 있게 해 줘요.
  • GET /info는 이제 실행 중, 중지됨, 일시 중지된 컨테이너 수를 포함해요.
  • POST /networks/create는 이제 Internal 필드를 설정해 네트워크에 대한 외부 접근을 제한하는 것을 지원해요.
  • POST /networks/(id)/disconnect는 이제 컨테이너를 네트워크에서 강제로 연결 해제하는 Force 옵션을 포함해요.
  • GET /containers/(id)/json은 이제 컨테이너의 NetworkID를 반환해요.
  • POST /networks/create는 이제 커스텀 IPAM 플러그인에 옵션을 제공하는 IPAM 구성의 options 필드를 지원해요.
  • GET /networks/{network-id}는 커스텀 IPAM 플러그인 옵션이 있으면 이제 반환해요.
  • GET /networks/는 이제 사용자 정의 네트워크의 서브넷 정보를 반환해요.
  • GET /info는 이제 engine 위에 구축된 애플리케이션에 대한 추가 정보를 반환하는 데 유용한 SystemStatus 필드를 반환할 수 있어요.

v1.21 API 변경 사항

  • GET /volumes는 모든 볼륨 드라이버의 볼륨을 나열해요.
  • POST /volumes/create는 볼륨을 만들어요.
  • GET /volumes/(name)은 볼륨에 대한 저수준 정보를 얻어요.
  • DELETE /volumes/(name)은 지정된 이름의 볼륨을 제거해요.
  • VolumeDriver는 구성을 이식 가능하게 만들기 위해 config에서 HostConfig로 이동했어요.
  • GET /images/(name)/json은 이제 이미지의 RepoTagsRepoDigests에 대한 정보를 반환해요.
  • config 옵션은 이제 컨테이너를 종료하는 데 사용할 신호를 지정하는 StopSignal 필드를 받아요.
  • GET /containers/(id)/stats는 각 인터페이스에 대해 각각 네트워킹 정보를 반환해요.
  • HostConfig 옵션은 이제 컨테이너의 DNS 옵션을 구성하는 DnsOptions 필드를 포함해요.
  • POST /build는 이제 선택적으로 빌드 시 변수의 직렬화된 맵을 받아요.
  • GET /events는 이제 기존 time 필드 외에 timenano 필드를 포함해요.
  • GET /events는 이제 이미지와 컨테이너 라벨로 필터링을 지원해요.
  • GET /info는 이제 엔진 버전 정보를 나열하고 CPUSharesCpuset의 정보를 반환해요.
  • GET /containers/json은 컨테이너가 사용하는 이미지의 ImageID를 반환할 거예요.
  • POST /exec/(name)/start는 컨테이너가 중지되거나 일시 중지되면 HTTP 409를 반환할 거예요.
  • POST /containers/create는 이제 커널 메모리 한도를 지정하기 위해 HostConfig에 KernelMemory를 받아요.
  • GET /containers/(name)/json은 이제 size 파라미터를 받아요. '1'로 설정하면 SizeRwSizeRootFs 필드에 컨테이너 크기 정보를 반환해요.
  • GET /containers/(name)/json은 이제 네트워크별 네트워크 설정을 상세히 나타내는 NetworkSettings.Networks 필드를 반환해요. 이 필드는 NetworkSettings.EndpointID, NetworkSettings.Gateway, NetworkSettings.GlobalIPv6Address, NetworkSettings.GlobalIPv6PrefixLen, NetworkSettings.IPAddress, NetworkSettings.IPPrefixLen, NetworkSettings.IPv6Gateway, NetworkSettings.MacAddress 필드를 대체하며, 이 필드들은 하위 호환성을 위해 여전히 반환되지만 향후 버전에서 제거될 거예요.
  • GET /exec/(id)/json은 이제 네트워크별 네트워크 설정을 상세히 나타내는 NetworkSettings.Networks 필드를 반환해요. 이 필드는 여전히 하위 호환성을 위해 반환되지만 향후 버전에서 제거될 NetworkSettings.Gateway, NetworkSettings.IPAddress, NetworkSettings.IPPrefixLen, NetworkSettings.MacAddress 필드를 대체해요.
  • HostConfig 옵션은 이제 badness 휴리스틱을 조정하는 OomScoreAdj 필드를 포함해요. 이 휴리스틱은 OOM 조건에서 OOM 킬러가 어떤 프로세스를 죽일지 선택해요.

v1.20 API 변경 사항

  • GET /containers/(id)/archive는 컨테이너에서 파일시스템 콘텐츠의 아카이브를 얻어요.
  • PUT /containers/(id)/archive는 컨테이너 파일시스템 안의 기존 디렉터리에 추출될 콘텐츠의 아카이브를 업로드해요.
  • POST /containers/(id)/copy는 컨테이너에서 파일과 디렉터리를 다운로드하는 데 사용할 수 있는 위의 archive 엔드포인트로 대체되어 폐기 예정이에요.
  • hostConfig 옵션은 이제 컨테이너 프로세스가 실행될 추가 그룹 목록을 지정하는 GroupAdd 필드를 받아요.

v1.19 API 변경 사항

  • 데몬이 클라이언트와 버전 불일치를 감지하면(보통 클라이언트가 데몬보다 새로운 경우) 404 대신 HTTP 400을 반환해요.
  • GET /containers/(id)/stats는 이제 단일 통계 세트를 얻고 연결을 끊는 stream bool을 받아요.
  • GET /containers/(id)/logs는 이제 since 타임스탬프 파라미터를 받아요.
  • GET /infoDebug, IPv4Forwarding, MemoryLimit, SwapLimit 필드는 이제 int 대신 boolean으로 반환돼요. 또한 엔드포인트는 이제 새 boolean 필드 CpuCfsPeriod, CpuCfsQuota, OomKillDisable을 반환해요.
  • hostConfig 옵션은 이제 CpuPeriodCpuQuota 필드를 받아요.
  • POST /buildcpuperiodcpuquota 옵션을 받아요.

v1.18 API 변경 사항

  • GET /version은 이제 Os, Arch, KernelVersion을 반환해요.
  • POST /containers/createPOST /containers/(id)/start는 컨테이너에서 사용할 ulimit 설정을 설정할 수 있게 해 줘요.
  • GET /info는 이제 SystemTime, HttpProxy, HttpsProxy, NoProxy를 반환해요.
  • GET /images/json은 이미지 다이제스트 정보를 포함하는 RepoDigests 필드를 추가했어요.
  • POST /build는 이제 빌드를 위해 생성된 모든 컨테이너에 리소스 제약을 설정할 수 있어요.
  • CgroupParent는 특정 cgroup 아래에 컨테이너 cgroup을 설정하기 위해 호스트 구성으로 전달할 수 있어요.
  • POST /build는 HTTP 요청을 닫으면 빌드를 취소해요.
  • POST /containers/(id)/exec는 응답에 Warnings 필드를 포함해요.

v1.17 API 변경 사항

  • 빌드는 LABEL 명령을 지원해요. 이 명령을 사용해 이미지에 메타데이터를 추가해요. 예를 들어 이미지의 내용을 설명하는 데이터를 추가할 수 있어요. LABEL "com.example.vendor"="ACME Incorporated"
  • POST /containers/(id)/attachPOST /exec/(id)/start
  • Docker 클라이언트는 이제 HTTP Upgrade 헤더를 사용해 잠재적 프록시에 연결 하이재킹을 암시해요.
  • POST /containers/create는 컨테이너 생성 시 컨테이너를 설명하는 라벨을 설정해요.
  • GET /containers/json은 컨테이너와 연관된 라벨(Labels)을 반환해요.
  • GET /containers/(id)/json은 컨테이너와 연관된 현재 exec 목록(ExecIDs)을 반환해요. 이 엔드포인트는 이제 컨테이너 라벨(Config.Labels)을 반환해요.
  • POST /containers/(id)/rename은 컨테이너 id를 새 이름으로 변경해요.
  • POST /containers/createPOST /containers/(id)/start 호출자는 호스트 구성에서 ReadonlyRootfs를 전달해 컨테이너의 루트 파일시스템을 읽기 전용으로 마운트할 수 있어요.
  • GET /containers/(id)/stats는 컨테이너의 리소스 사용 통계의 실시간 스트림을 반환해요.
  • GET /images/json은 각 이미지와 연관된 라벨(Labels)을 반환해요.

v1.16 API 변경 사항

  • GET /info는 머신에서 사용 가능한 CPU 수(NCPU), 총 메모리(MemTotal), 실행 중인 Docker 데몬을 설명하는 사용자 친화적인 이름(Name), 데몬을 식별하는 고유 ID(ID), 데몬 라벨 목록(Labels)을 반환해요.
  • POST /containers/create 호출자는 새 컨테이너의 MAC 주소를 명시적으로 설정할 수 있어요.
  • 볼륨은 이제 컨테이너가 생성될 때 초기화돼요.
  • POST /containers/(id)/copy는 볼륨에 포함된 데이터를 복사해요.

v1.15 API 변경 사항

  • POST /containers/create는 이제 컨테이너 생성 시 컨테이너의 HostConfig를 설정할 수 있어요. 이전에는 컨테이너를 시작할 때만 가능했어요.

v1.14 API 변경 사항

  • DELETE /containers/(id)force를 사용하면 컨테이너가 SIGKILL로 즉시 종료돼요.
  • POST /containers/(id)/startHostConfig 옵션은 추가할 기능 목록을 지정하는 CapAdd 필드와 제거할 기능 목록을 지정하는 CapDrop 필드를 받아요.
  • POST /images/createfromImagerepo 파라미터는 repo:tag 형식을 지원해요. 결과적으로 tag 파라미터는 이제 구식이 됐어요. 새 형식과 tag 파라미터를 동시에 사용하면 오류가 반환돼요.

v1.13 API 변경 사항

  • GET /containers/(name)/json 새 기능! HostConfig.Links 필드가 이제 올바르게 채워져요. 새 기능! 데몬이 수신 대기하도록 구성된 모든 소켓을 나열하는 /info 엔드포인트에 Sockets 파라미터가 추가됐어요.
  • POST /containers/(name)/start, POST /containers/(name)/stop 새 기능! 컨테이너의 상태가 변경되지 않으면 startstop이 이제 304를 반환해요.
  • POST /commit 새 기능! 커밋 중에 컨테이너를 일시 중지하는 pause 파라미터(기본값 true)가 추가됐어요.

v1.12 API 변경 사항

  • POST /build는 이제 컨테이너를 항상 제거하는 forcerm 파라미터를 지원해요.
  • GET /containers/(name)/json, GET /images/(name)/json: JSON 키가 이제 CamelCase로 돼요.
  • GET /images/search: Trusted builds가 이제 Automated Builds이며 is_trusted 필드는 is_automated로 이름이 바뀌었어요.
  • POST /images/(name)/insert 엔드포인트가 제거됐어요.

v1.11 API 변경 사항

새로운 점

  • API 서버가 연결을 받을 준비가 됐는지 확인하는 새 GET /_ping 엔드포인트 추가.
  • GET /events는 이제 주어진 타임스탬프 후에 연결을 닫는 until 파라미터를 지원해요.
  • GET /containers/(id)/logs는 이제 컨테이너 로그를 얻는 권장 방법이에요.

v1.10 API 변경 사항

  • DELETE /images/(name)은 이제 여러 저장소에 태그가 있어도 이미지를 강제로 삭제하는 force 파라미터를 제공해요.
  • DELETE /images/(name)은 이제 부모 이미지의 삭제를 방지하는 noprune 파라미터를 제공해요.
  • DELETE /containers/(id)는 이제 실행 중이어도 컨테이너를 강제로 삭제하는 force 파라미터를 제공해요.

v1.9 API 변경 사항

  • POST /build는 이제 베이스 이미지를 풀하기 위한 적절한 레지스트리 인증 자격 증명을 해석하는 데 사용하는 직렬화된 ConfigFile을 받아요. 이전에 AuthConfig 객체를 받는 버전을 구현한 클라이언트는 업데이트해야 해요.

v1.8 API 변경 사항

  • POST /build는 이제 빌드 상태를 JSON 스트림으로 반환해요. 빌드 오류가 발생하면 실패한 명령의 종료 상태를 반환해요.
  • GET /containers/(id)/json은 이제 컨테이너의 호스트 구성을 반환해요.
  • POST /images/create, POST /images/(name)/insert, POST /images/(name)/push는 이제 JSON에 progressDetail 객체를 포함해요. 문자열을 파싱하지 않고도 진행의 현재 값과 총계를 얻을 수 있어요.

v1.7 API 변경 사항

  • GET /images/viz 엔드포인트가 제거됐어요. images --viz 출력은 이제 GET /images/json 엔드포인트를 사용해 클라이언트에서 생성돼요.
  • GET /images/json 응답은 이제 해당 이미지에 적용되는 repo/tags를 나타내는 중첩 속성과 함께 이미지당 단일 항목을 반환해요.

대신 이전에는:

HTTP/1.1 200 OK
Content-Type: application/json

[
  {
    "VirtualSize": 131506275,
    "Size": 131506275,
    "Created": 1365714795,
    "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
    "Tag": "12.04",
    "Repository": "ubuntu"
  },
  {
    "VirtualSize": 131506275,
    "Size": 131506275,
    "Created": 1365714795,
    "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
    "Tag": "latest",
    "Repository": "ubuntu"
  }
]

반환되는 JSON은 이제 다음과 같아요:

HTTP/1.1 200 OK
Content-Type: application/json

[
  {
     "RepoTags": [
       "ubuntu:12.04",
       "ubuntu:latest"
     ],
     "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
     "Created": 1365714795,
     "Size": 131506275,
     "VirtualSize": 131506275
  }
]

v1.6 API 변경 사항

새로운 점

  • POST /containers/(id)/attach는 이제 stderr를 stdout에서 분리할 수 있는 멀티플렉스 응답을 제공해요. 이는 각 전송에 헤더를 접두사로 붙여서 수행돼요. POST /containers/(id)/attach 엔드포인트를 참조하세요. WebSocket attach는 변경되지 않았어요. 이전 API 버전의 attach 호출은 변경되지 않았어요. Stdout과 stderr가 병합돼요.

v1.5 API 변경 사항

  • POST /images/create는 이제 X-Registry-Auth 헤더를 통해 전송된 AuthConfig 객체로 레지스트리 자격 증명을 받아요.
  • POST /images/(name)/push는 이제 요청 본문이 아니라 X-Registry-Auth를 통해 AuthConfig 객체를 전달해야 해요.
  • GET /containers/json은 Ports 항목의 형식을 각각 포트 매핑을 설명하는 PublicPort, PrivatePort, Type을 포함하는 dict 목록으로 변경했어요.

v1.4 API 변경 사항

  • POST /images/create는 이제 저장소를 풀할 때 모든 이미지를 병렬로 다운로드해요.
  • GET /containers/(id)/top은 이제 docker top이 사용하는 ps 인자를 받아요. 예: docker top aux.
  • GET /events는 이제 이미지의 이름을 포함해요.

v1.3 API 변경 사항

  • 컨테이너 안에서 실행 중인 프로세스를 나열하는 GET /containers/(id)/top 엔드포인트 추가.
  • 스트리밍 또는 폴링을 통해 docker의 이벤트를 모니터링하는 GET /events 엔드포인트 추가.
  • GET /containers/json은 이제 컨테이너 크기를 얻는 size=1 옵션을 제공해요.
  • POST /containers//start는 이제 start 호출에 호스트별 구성(예: 바인드 마운트)을 POST 본문으로 받아요.
  • POST /build: 빌드 컨텍스트 업로드를 단순화해요.
    • 4개의 중간 버퍼가 있는 멀티파트 업로드 대신 tarball을 그냥 스트리밍해요.
    • 더 간단하고, 메모리 사용이 적고, 디스크 사용이 적고, 더 빨라요.

경고: POST /build 개선 사항은 역호환이 되지 않아요. Pre 1.3 클라이언트는 POST /build에서 깨질 거예요.

v1.2 API 변경 사항

  • 인증 구성은 이제 클라이언트가 처리하며, 클라이언트는 POST /images/(name)/push에서 authConfig를 본문으로 보내야 해요.
  • GET /auth는 이제 폐기 예정이에요.
  • POST /auth는 이제 구성을 확인만 하고 서버에 저장하지 않아요.
  • POST /images//delete는 이제 이미지에 하위가 있으면 태그만 해제하고, 태그되지 않은 부모가 있으면 모두 제거해요.
  • POST /images//delete는 이제 삭제/태그 해제된 이미지 목록을 담은 JSON 구조를 반환해요.

v1.1 API 변경 사항

POST /images/create, POST /images/(name)/insert, POST /images/(name)/push는 이제 HTML 하이재킹 대신 JSON 스트림을 사용해요. 다음과 같아요.

HTTP/1.1 200 OK
Content-Type: application/json

{"status":"Pushing..."}
{"status":"Pushing", "progress":"1/? (n/a)"}
{"error":"Invalid..."}
...

v1.0 API 변경 사항

초기 버전 (docker v0.3.3)

더 알아보기 (Learn more)