더 이상 사용되지 않는 Docker Engine 기능
더 이상 사용되지 않는 Docker Engine 기능 (Deprecated Docker Engine features)
이 페이지는 Engine에서 deprecated(사용 중단)된 기능의 개요를 제공해요. 패키징 변경과 지원되는 (Linux) 배포판은 포함하지 않아요. Linux 배포판의 지원 종료에 대해 알아보려면 릴리스 노트를 참고하세요.
출처: 문서
본문
기능 사용 중단 정책 (Feature deprecation policy)
Docker가 변경됨에 따라 기존 기능을 제거하거나 더 새로운 기능으로 교체해야 할 때가 있어요. 기존 기능을 제거하기 전에 문서에서 "deprecated"로 표시하고, 명시적으로 달리 지정하지 않는 한 최소한 하나의 안정 릴리스 동안 Docker에 남겨둬요. 그 이후에는 제거될 수 있어요.
사용자는 각 릴리스의 deprecated 기능 목록을 주목하고 그 기능들에서 벗어나 (해당된다면) 대체 기능으로 곧바로 마이그레이션할 계획을 세울 것으로 기대돼요.
Deprecated 엔진 기능 (Deprecated engine features)
다음 표는 deprecated 기능의 현재 상태 개요를 제공해요:
- Deprecated: 기능이 "deprecated"로 표시되었고 더 이상 사용해서는 안 됨. 기능은 향후 릴리스에서 제거, 비활성화되거나 동작이 바뀔 수 있어요. "Deprecated" 열은 기능이 deprecated로 표시된 릴리스를 포함하고, "Remove" 열은 기능이 제거될 잠정 릴리스를 포함해요. "Remove" 열에 릴리스가 없으면 릴리스는 아직 결정되지 않은 거예요.
- Removed: 기능이 제거, 비활성화 또는 숨겨졌음. 자세한 내용은 연결된 섹션을 참고해요. 일부 기능은 "소프트(soft)" deprecated로, 하위 호환성을 위해 그리고 사용자가 대안으로 마이그레이션할 수 있도록 기능을 유지한다는 뜻이에요. 이 경우 경고가 출력될 수 있으며, 사용자는 이 기능에 의존하면 안 돼요.
| Status | Feature | Deprecated | Remove |
|---|---|---|---|
| Deprecated | Support for cgroup v1 | v29.0 | - |
| Deprecated | --pause option on docker commit |
v29.0 | v30.0 |
| Deprecated | Legacy links environment variables | v28.4 | v30.0 |
| Deprecated | Special handling for quoted values for TLS flags | v28.4 | v29.0 |
| Deprecated | Empty/nil fields in image Config from inspect API | v28.3 | v29.0 |
| Deprecated | Configuration for pushing non-distributable artifacts | v28.0 | v29.0 |
| Deprecated | --time option on docker stop and docker restart |
v28.0 | - |
| Removed | Non-standard fields in image inspect | v27.0 | v28.2 |
| Removed | API CORS headers | v27.0 | v28.0 |
| Removed | Graphdriver plugins (experimental) | v27.0 | v28.0 |
| Deprecated | Unauthenticated TCP connections | v26.0 | v28.0 |
| Removed | Container and ContainerConfig fields in Image inspect |
v25.0 | v26.0 |
| Removed | Deprecate legacy API versions | v25.0 | v26.0 |
| Removed | Container short ID in network Aliases field | v25.0 | v26.0 |
| Removed | Mount bind-nonrecursive option |
v25.0 | v29.0 |
| Removed | IsAutomated field, and is-automated filter on docker search |
v25.0 | v28.2 |
| Removed | logentries logging driver | v24.0 | v25.0 |
| Removed | OOM-score adjust for the daemon | v24.0 | v25.0 |
| Removed | BuildKit build information | v23.0 | v24.0 |
| Deprecated | Legacy builder for Linux images | v23.0 | - |
| Deprecated | Legacy builder fallback | v23.0 | - |
| Removed | Btrfs storage driver on CentOS 7 and RHEL 7 | v20.10 | v23.0 |
| Removed | Support for encrypted TLS private keys | v20.10 | v23.0 |
| Removed | Kubernetes stack and context support | v20.10 | v23.0 |
| Removed | Pulling images from non-compliant image registries | v20.10 | v28.2 |
| Removed | Linux containers on Windows (LCOW) | v20.10 | v23.0 |
| Deprecated | BLKIO weight options with cgroups v1 | v20.10 | - |
| Removed | Kernel memory limit | v20.10 | v23.0 |
| Removed | Classic Swarm and overlay networks using external key/value stores | v20.10 | v23.0 |
| Removed | Support for the legacy ~/.dockercfg configuration file for authentication |
v20.10 | v23.0 |
| Deprecated | CLI plugins support | v20.10 | - |
| Deprecated | Dockerfile legacy ENV name value syntax |
v20.10 | - |
| Removed | docker build --stream flag (experimental) |
v20.10 | v20.10 |
| Removed | fluentd-async-connect log opt |
v20.10 | v28.0 |
| Removed | Configuration options for experimental CLI features | v19.03 | v23.0 |
| Removed | Pushing and pulling with image manifest v2 schema 1 | v19.03 | v28.2 |
| Removed | docker engine subcommands |
v19.03 | v20.10 |
| Removed | Top-level docker deploy subcommand (experimental) |
v19.03 | v20.10 |
| Removed | docker stack deploy using "dab" files (experimental) |
v19.03 | v20.10 |
| Removed | Support for the overlay2.override_kernel_check storage option |
v19.03 | v24.0 |
| Removed | AuFS storage driver | v19.03 | v24.0 |
| Removed | Legacy "overlay" storage driver | v18.09 | v24.0 |
| Removed | Device mapper storage driver | v18.09 | v25.0 |
| Removed | Use of reserved namespaces in engine labels | v18.06 | v20.10 |
| Removed | --disable-legacy-registry override daemon option |
v17.12 | v19.03 |
| Removed | Interacting with V1 registries | v17.06 | v17.12 |
| Removed | Asynchronous service create and service update as default |
v17.05 | v17.10 |
| Removed | -g and --graph flags on dockerd |
v17.05 | v23.0 |
| Deprecated | Top-level network properties in NetworkSettings | v1.13 | v17.12 |
| Removed | filter option for /images/json endpoint |
v1.13 | v20.10 |
| Removed | repository:shortid image references |
v1.13 | v17.12 |
| Removed | docker daemon subcommand |
v1.13 | v17.12 |
| Removed | Duplicate keys with conflicting values in engine labels | v1.13 | v17.12 |
| Deprecated | MAINTAINER in Dockerfile |
v1.13 | - |
| Deprecated | API calls without a version | v1.13 | v17.12 |
| Removed | Backing filesystem without d_type support for overlay/overlay2 |
v1.13 | v17.12 |
| Removed | --automated and --stars flags on docker search |
v1.12 | v20.10 |
| Deprecated | -h shorthand for --help |
v1.12 | v17.09 |
| Removed | -e and --email flags on docker login |
v1.11 | v17.06 |
| Deprecated | Separator (:) of --security-opt flag on docker run |
v1.11 | v17.06 |
| Deprecated | Links on the default bridge network | v1.10 | - |
| Deprecated | Ambiguous event fields in API | v1.10 | - |
| Removed | -f flag on docker tag |
v1.10 | v1.12 |
| Removed | HostConfig at API container start | v1.10 | v1.12 |
| Removed | --before and --since flags on docker ps |
v1.10 | v1.12 |
| Removed | Driver-specific log tags | v1.9 | v1.12 |
| Removed | Docker Content Trust ENV passphrase variables name change |
v1.9 | v1.12 |
| Removed | /containers/(id or name)/copy endpoint |
v1.8 | v1.12 |
| Removed | LXC built-in exec driver | v1.8 | v1.10 |
| Removed | Old Command Line Options | v1.8 | v1.10 |
| Removed | --api-enable-cors flag on dockerd |
v1.6 | v17.09 |
| Removed | --run flag on docker commit |
v0.10 | v1.13 |
| Removed | Three arguments form in docker import |
v0.6.7 | v1.12 |
cgroup v1 지원 (Support for cgroup v1)
Deprecated in release: v29.0
cgroup v1 지원은 v29.0 릴리스에서 deprecated되지만 2029년 5월까지 계속 지원될 거예요. 2029년 5월의 최신 릴리스가 반드시 cgroup v1을 지원하지는 않지만, cgroup v1 지원이 있는 유지 관리 브랜치가 최소한 하나는 있을 거예요.
현재 사용 중인 cgroup 버전은 docker info 명령으로 확인할 수 있어요:
$ docker info
<...>
Server:
<...>
Cgroup Version: 2
<...>
docker commit의 --pause 옵션
Deprecated in release: v29.0 Target for removal in release: v30.0
--pause 옵션은 일관되지 않은 상태의 컨테이너를 커밋하는 것을 방지하기 위해 Docker v1.1.0부터 기본으로 활성화되어 있지만, --pause=false 옵션을 설정해 비활성화할 수 있어요. docker CLI v29.0에서 이 플래그는 대신 --no-pause 플래그로 대체돼요.
--pause 옵션은 v29.0 릴리스에서 여전히 동작하며 deprecated 경고를 출력하지만, docker CLI v30에서 제거될 거예요.
레거시 링크 환경 변수 (Legacy links environment variables)
Deprecated in release: v28.4 Disabled by default in release: v29.0 Target for removal in release: v30.0
기본 브리지 네트워크에 연결된 컨테이너는 (CLI에서 --links를 사용하는 등으로) "레거시 링크"를 지정해 그 네트워크에 연결된 다른 컨테이너에 접근할 수 있어요. 링크되는 컨테이너(즉 --links로 생성된 컨테이너)는 링크된 컨테이너의 IP 주소와 포트 매핑을 지정하는 환경 변수를 자동으로 받아요. 하지만 이 환경 변수는 링크된 컨테이너의 이름으로 접두사가 붙어 실용성이 떨어져요.
Docker v29.0부터 이 환경 변수들은 더 이상 기본으로 설정되지 않아요. 여전히 이에 의존하는 사용자는 환경 변수 DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS=1을 설정해 Docker Engine을 시작할 수 있어요.
레거시 링크 환경 변수와 DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS의 지원은 Docker Engine v30.0에서 제거될 거예요.
TLS 플래그의 따옴표 값 특수 처리 (Special handling for quoted values for TLS flags)
Deprecated in release: v28.4 Target for removal in release: v29.0
--tlscacert, --tlscert, --tlskey 커맨드 라인 플래그는 따옴표(" 또는 ')에 포함된 값을 처리하는 데 비표준 동작을 가졌어요. 보통 따옴표는 셸이 처리해요. 예를 들어 다음 예시에서 셸이 값을 docker CLI에 전달하기 전에 따옴표 처리하는 것을 담당해요:
docker --some-option "some-value-in-quotes" ...
하지만 등호(=)를 사용해 값을 전달할 때는 처리가 되지 않아 따옴표를 포함한 값이 처리될 수 있어요:
docker --some-option="some-value-in-quotes" ...
이로 인해 docker-machine config 출력의 일부로 이 형식을 사용했던 "Docker Machine"에 문제가 발생했고, CLI는 이 플래그들에 대한 특별한 비표준 처리를 유지했어요.
Docker Machine은 EOL에 도달했고, 이 특수 처리는 플래그 값 처리를 다른 플래그와 일관되지 않게 만들었으므로 이 동작은 deprecated됐어요. 이 동작에 의존하는 사용자는 위에 설명한 것처럼 플래그와 값 사이에 공백을 사용해 따옴표 값을 지정할 것을 권장해요.
inspect API의 이미지 Config에서 빈/닐 필드 (Empty/nil fields in image Config from inspect API)
Deprecated in release: v28.3 Target for removal in release: v29.0
docker image inspect가 반환하는 Config 필드(그리고 GET /images/{name}/json API 엔드포인트)는 현재 비어 있거나 nil인 경우에도 특정 필드를 포함해요. Docker v29.0부터 다음 필드는 빈 값이나 기본값을 담을 때 API 응답에서 생략될 거예요:
CmdEntrypointEnvLabelsOnBuildUserVolumesWorkingDir
이미지 inspect API를 소비하는 애플리케이션은 이 필드들의 부재를 우아하게 처리하고, 누락된 필드를 기본/빈 값으로 취급하도록 업데이트해야 해요.
Docker v29.0에 해당하는 API 버전에서 이 필드들은 비어 있을 때 생략될 거예요. 하위 호환성을 위해 이전 API 버전을 요청하는 클라이언트를 사용할 때는 계속 포함될 거예요.
비배포 가능 아티팩트 푸시 구성 (Configuration for pushing non-distributable artifacts)
Deprecated in release: v28.0 Target for removal in release: v29.0
비배포 가능 아티팩트(외부 레이어라고도 함)는 docker v1.12에서 도입되었는데, EULA가 레이어가 Microsoft가 호스팅하는 레지스트리 외부에서 배포되는 것을 허용하지 않는 Windows 이미지를 수용하기 위해서였어요. 외부/비배포 가능 레이어 개념은 oci#233에서 OCI distribution 스펙이 채택했어요. 이 제한은 나중에 비공개 레지스트리를 통해 이러한 이미지를 배포할 수 있도록 완화되었고, 이를 위한 구성이 Docker v17.0.6.0에 추가됐어요.
2022년에 Microsoft는 EULA를 업데이트해 이 제한을 제거했고, 이어서 OCI distribution 스펙이 oci#965에서 외부 레이어를 deprecated 처리했어요. 2023년에 Microsoft는 자사 이미지에서 외부 데이터 레이어 사용을 제거해 이 기능을 쓸모없게 만들었어요.
Docker v28.0은 --allow-nondistributable-artifacts 데몬 플래그와 그에 해당하는 daemon.json의 allow-nondistributable-artifacts 필드를 deprecated 처리해요. 두 옵션을 설정해도 더 이상 효과가 없지만, deprecated 인식 제고를 위해 deprecated 경고 로그가 추가돼요. 이 경고는 Docker v29.0에서 오류가 될 계획이에요.
따라서 이러한 옵션을 현재 사용하는 사용자는 Docker v29.0으로 업그레이드할 때 데몬이 시작되지 않도록 구성에서 이 옵션을 제거할 것을 권장해요.
GET /info API 응답의 RegistryConfig에 있는 AllowNondistributableArtifactsCIDRs와 AllowNondistributableArtifactsHostnames 필드도 deprecated됐어요. API 버전 v1.48 이하에서는 필드가 여전히 응답에 포함되지만 항상 null이에요. API 버전 v1.49 이상에서는 필드가 완전히 생략될 거예요.
docker stop과 docker restart의 --time 옵션
Deprecated in release: v28.0
docker stop, docker container stop, docker restart, docker container restart 명령의 --time 옵션은 다른 timeout 옵션 사용과 일관성을 위해 --timeout으로 이름이 바뀌었어요. --time 옵션은 이제 deprecated되고 숨겨졌지만, 하위 호환성을 위해 계속 동작해요. 사용자는 대신 --timeout 옵션을 사용하도록 마이그레이션하는 것이 좋아요.
이미지 inspect의 비표준 필드 (Non-standard fields in image inspect)
Deprecated in release: v27.0 Removed in release: v28.2
docker image inspect에 표시되는 Config 필드(GET /images/{name}/json API 엔드포인트가 반환하는 것)는 이미지 구성의 일부가 아니고 Docker image specification과 OCI image specification의 일부도 아닌 추가 필드를 반환해요.
이 필드들은 결코 설정되지 않고(항상 해당 타입의 기본값을 반환) 비어 있을 때 응답에서 생략되지 않아요. 이 필드들은 이미지 구성 응답의 일부로 의도되지 않았으므로 deprecated되고 다음 릴리스에서 API에서 제거될 거예요.
다음 필드는 기본 이미지의 Config 필드의 일부가 아니며 v28.2에 해당하는 API v1.50 이상에서 API 응답에서 제거됐어요. 더 오래된 API 버전을 사용하는 클라이언트에서는 계속 포함돼요:
HostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(이전 API 버전에서 설정된 경우에만 생략)MacAddress(이전 API 버전에서 설정된 경우에만 생략)StopTimeout(이전 API 버전에서 설정된 경우에만 생략)
Graphdriver 플러그인 (실험적) (Graphdriver plugins (experimental))
Deprecated in: v27.0.** Disabled by default in release: v27.0 Target for removal in release: v28.0
Graphdriver plugins은 이미지와 컨테이너를 저장하기 위한 사용자 지정 스토리지 드라이버로 Docker Engine을 확장할 수 있게 하는 실험적 기능이었어요. 이 기능은 시작 이후로 유지 관리되지 않았어요.
graphdriver 플러그인 지원은 v27.0에서 기본으로 비활성화되었고, v28.0에서 제거됐어요. 이 기능 사용자는 대신 containerd image store와 사용자 지정 snapshotter를 사용하도록 Docker Engine을 구성할 것을 권장해요.
API CORS 헤더 (API CORS headers)
Deprecated in release: v27.0 Disabled by default in release: v27.0 Removed in release: v28.0
Docker 데몬의 api-cors-header 구성 옵션은 안전하지 않아서 deprecated되고 제거 예정이에요. 이 옵션을 잘못 설정하면 데몬이 인증되지 않은 크로스 오리진 요청을 받아들일 수 있는 기회의 창이 남을 수 있어요.
Docker Engine v27.0에서 이 플래그는 여전히 설정할 수 있지만, 환경 변수 DOCKERD_DEPRECATED_CORS_HEADER도 비어 있지 않은 값으로 설정되지 않는 한 효과가 없어요.
이 플래그는 v28.0에서 완전히 제거됐어요.
이것은 브라우저에서 Docker API에 접근하기 위해 이 옵션에 의존하는 인가 플러그인과 기타 프로그램의 주요 변경(breaking change)이에요. 브라우저를 통해 API에 접근해야 한다면 리버스 프록시를 사용하세요.
인증 없는 TCP 연결 (Unauthenticated TCP connections)
Deprecated in release: v26.0 Target for removal in release: v28.0
Docker 데몬이 TCP 주소에서 수신 대기하도록 구성하는 것은 의무적인 TLS 검증을 요구하게 될 거예요. 이 변경은 잠재적으로 안전하지 않은 네트워크를 통한 Docker 데몬에 대한 무단 접근을 방지해 안전한 통신을 보장하는 것을 목표로 해요. 이 의무적 TLS 요구 사항은 tcp://localhost를 제외한 모든 TCP 주소에 적용돼요.
버전 27.0 이상에서 --tls=false 또는 --tlsverify=false CLI 플래그를 지정하면 데몬이 TCP를 통한 원격 연결도 수락하도록 구성된 경우 데몬이 시작하지 못해요. 이는 daemon.json의 동등한 구성 옵션에도 적용돼요.
TCP를 통한 Docker 데몬 원격 접근을 용이하게 하려면 TLS 검증을 구현해야 해요. 이것은 전송 중 데이터를 암호화하고 상호 인증 메커니즘을 제공하여 연결을 보호해요.
원격 데몬 접근이 필요하지 않은 환경에서는 Docker 데몬을 Unix 소켓에 바인드할 것을 권장해요. 원격 접근이 필요하고 TLS 암호화가 실현 불가능한 데몬의 경우 SSH를 대체 솔루션으로 고려할 수 있어요.
Docker 데몬을 위한 TLS(또는 SSH) 구성에 대한 추가 정보, 도움, 단계별 지침은 Docker 데몬 소켓 보호를 참고하세요.
Image inspect의 Container 및 ContainerConfig 필드
Deprecated in release: v25.0 Removed in release: v26.0
docker inspect가 반환하는 Container와 ContainerConfig 필드는 주로 클래식(비-BuildKit) 이미지 빌더의 구현 세부 사항이에요. 이 필드는 이식할 수 없고, BuildKit 기반 빌더를 사용할 때(v23.0부터 기본 활성화) 비어 있어요. 이 필드는 v25.0에서 deprecated되고 v26.0(API 버전 v1.45 이상)부터 생략돼요. 이미지의 이미지 구성이 필요하면 Config 필드에서 얻을 수 있어요.
레거시 API 버전 deprecate (Deprecate legacy API versions)
Deprecated in release: v25.0 Target for removal in release: v26.0
Docker 데몬은 오래된 클라이언트와의 하위 호환성을 위해 버전화된 API를 제공해요. Docker 클라이언트는 API-버전 협상을 수행해 데몬이 지원하는 가장 최근 API 버전을 선택할 수 있어요(필요할 때 더 오래된 API 버전으로 다운그레이드). API 버전 협상은 Docker v1.12.0(API 1.24)에서 도입됐고, 그 이전의 클라이언트는 고정 API 버전을 사용했어요.
v25.0까지의 Docker Engine 버전은 주어진 플랫폼의 안정 릴리스에 포함된 모든 API 버전에 대한 지원을 제공해요. Linux의 Docker 데몬의 경우 가장 이른 지원 API 버전은 1.12(Docker Engine v1.0.0에 해당)이며, Windows의 Docker 데몬의 경우 가장 이른 지원 API 버전은 1.24(Docker Engine v1.12.0에 해당)예요.
레거시 API 버전 지원(현재 Docker Engine 버전에서 오래된 API 버전 제공)은 주로 최근이지만 여전히 지원되는 클라이언트 버전과의 호환성을 제공하기 위한 것으로, 흔한 시나리오예요(Docker 데몬은 최신 릴리스로 업데이트될 수 있지만 모든 클라이언트가 최신이 아닐 수 있고 그 반대도 마찬가지). 그 이전의 API 버전 지원(Docker 데몬의 EOL 버전이 제공하는 API 버전)은 "최선 노력(best effort)" 기준으로 제공돼요.
오래된 API 버전의 사용은 드물고, 레거시 API 버전 지원은 상당한 복잡성을 수반해요(Docker 1.0.0이 10년 전에 출시됨). 이 때문에 레거시 API 버전 지원을 deprecated하기 시작할 거예요.
Docker Engine v25.0은 기본적으로 1.24보다 오래된 API 버전을 비활성화해요(Linux와 Windows 데몬 사이의 최소 지원 API 버전 정렬). 1.24보다 오래된 API 버전을 사용하는 클라이언트로 연결하면 데몬이 오류를 반환해요. 다음 예시는 Docker CLI를 API 버전 1.23으로 구성해 오류를 생성해요:
DOCKER_API_VERSION=1.23 docker version
Error response from daemon: client version 1.23 is too old. Minimum supported API version is 1.24,
upgrade your client to a newer version
1.24 미만의 API 버전에 대한 지원은 Docker Engine v26에서 영구적으로 제거됐으며, 최소 지원 API 버전은 그 이후 릴리스에서 점진적으로 올라갈 거예요.
네트워크 Aliases 필드의 컨테이너 짧은 ID (Container short ID in network Aliases field)
Deprecated in release: v25.0 Removed in release: v26.0
docker inspect가 반환하는 Aliases 필드는 컨테이너가 시작되면 컨테이너 짧은 ID를 포함해요. 이 동작은 v25.0에서 deprecated되지만 다음 릴리스 v26.0까지 유지돼요. 그 버전부터 Aliases 필드는 docker container create 및 docker run의 --network-alias 플래그로 설정된 별칭만 포함할 거예요.
v25.0에서 컨테이너 이름(지정된 경우), 호스트 이름, 네트워크 별칭, 컨테이너 짧은 ID를 포함하는 새 필드 DNSNames가 도입됐으며 Aliases 필드 대신 사용해야 해요.
Mount bind-nonrecursive 옵션
Deprecated in release: v25.0 Removed in release: v29.0
bind-nonrecursive 옵션은 bind-recursive 옵션으로 대체됐어요(cli-4316, cli-4671 참고). 이 옵션은 여전히 수용됐지만 deprecated 경고를 출력했어요:
bind-nonrecursive is deprecated, use bind-recursive=disabled instead
v29.0 릴리스에서 이 경고는 제거되고 오류로 반환돼요. 사용자는 동등한 bind-recursive=disabled 옵션을 사용해야 해요.
IsAutomated 필드와 docker search의 is-automated 필터
Deprecated in release: v25.0 Removed in release: v28.2
Docker Hub의 검색 API에서 is_automated 필드를 deprecated했어요. 결과적으로 이미지 검색의 IsAutomated 필드는 향후 항상 false로 설정될 것이고, "is-automated=true" 검색은 결과가 없을 거예요.
AUTOMATED 열은 v25.0에서 기본 docker search 및 docker image search 출력에서 제거됐고, 해당 IsAutomated 템플릿팅은 v28.2에서 제거됐어요.
Logentries 로깅 드라이버 (Logentries logging driver)
Deprecated in release: v24.0 Removed in release: v25.0
logentries SaaS 서비스는 2022년 11월 15일에 종료되어 이 로깅 드라이버가 기능하지 않게 됐어요. 사용자는 더 이상 이 로깅 드라이버를 사용하면 안 되며, 드라이버는 Docker 25.0에서 제거됐어요. 이 로깅 드라이버를 사용하는 기존 컨테이너는 업그레이드 후 "local" 로깅 드라이버를 사용하도록 마이그레이션돼요.
데몬용 OOM-score 조정 (OOM-score adjust for the daemon)
Deprecated in release: v24.0 Removed in release: v25.0
oom-score-adjust 옵션은 다른 프로세스보다 먼저 OOM-killed되지 않도록 데몬을 보호하기 위해 추가됐어요. 이 옵션은 대부분 편의를 위해 추가된 것인데, 데몬을 systemd 유닛으로 실행하는 것이 아직 흔하지 않았기 때문이에요.
데몬이 자체 한계를 설정하는 것은 모범 사례가 아니며, 데몬을 시작하는 프로세스 매니저가 처리하는 것이 더 낫습니다.
Docker v20.10 이상은 기본적으로 데몬의 OOM 점수를 더 이상 조정하지 않고, 대신 패키지와 함께 제공되는 systemd 유닛으로 OOM 점수(OOMScoreAdjust)를 설정해요.
이 기능에 현재 의존하는 사용자는 데몬을 시작할 때 systemd 또는 다른 수단으로 데몬의 OOM 점수를 조정할 것을 권장해요.
BuildKit 빌드 정보 (BuildKit build information)
Deprecated in release: v23.0 Removed in release: v24.0
Build information 구조는 BuildKit v0.10.0에서 도입됐고, 빌드가 사용한 모든 소스(이미지, Git 저장소)를 정확한 버전과 함께, 그리고 빌드에 전달된 구성을 볼 수 있게 해주는 빌드 메타데이터로 생성돼요. 이 정보는 이미지 구성이 생성되면 그 구성에도 포함돼요.
Linux 이미지용 레거시 빌더 (Legacy builder for Linux images)
Deprecated in release: v23.0
Docker v23.0은 이제 기본적으로 BuildKit을 사용해 Linux 이미지를 빌드하고, docker build에 Buildx CLI 구성 요소를 사용해요. 이 변경으로 docker build는 이제 BuildKit이 제공하는 모든 고급 기능을 노출하며, 이전에는 docker buildx 하위 명령을 통해서만 사용할 수 있었어요.
Buildx 구성 요소는 .deb 또는 .rpm 패키지로 docker CLI를 설치할 때 자동으로 설치되며, 정적 링크 바이너리는 download.docker.com과 Docker Hub의 docker/buildx-bin 이미지 모두에서 제공돼요. Buildx 구성 요소 설치에 대한 자세한 지침은 Buildx 섹션을 참고하세요.
이 릴리스는 Linux 이미지용 클래식("레거시") 빌더의 deprecated 주기의 시작을 표시해요. 클래식 빌더에는(버그 수정을 제외한) 활발한 개발이 없을 거예요. BuildKit 개발은 5년 전에 시작됐고 Docker 18.09부터 "실험적" 단계를 벗어났으며, 이미 Docker Desktop의 기본 빌더예요. BuildKit이 일반 사용에 안정적이라고 확신하지만 동작에 일부 변경이 있을 수 있어요. BuildKit에서 문제가 발생하면 GitHub의 BuildKit 이슈 트래커{:target="blank" rel="noopener" class=" "}에 문제를 보고할 것을 권장해요.
Windows 이미지용 클래식 빌더 BuildKit은 아직 Windows 이미지 빌드 지원을 제공하지 않으며,
docker build는 Windows 데몬에서 네이티브 Windows 이미지를 빌드하기 위해 계속 클래식 빌더를 사용해요.
레거시 빌더 폴백 (Legacy builder fallback)
Deprecated in release: v23.0
Docker v23.0은 이제 기본적으로 BuildKit을 사용해 Linux 이미지를 빌드하며, 이를 위해서는 이미지를 BuildKit으로 빌드하려면 Buildx 구성 요소가 필요해요. Buildx 구성 요소가 없고 BuildKit을 사용할 수 없는 상황이 있을 수 있어요.
BuildKit을 기본 빌더로 전환을 매끄럽게 하기 위해 Docker v23.0은 일부 상황에서 자동 폴백을 가지거나, 사용자가 문제를 해결하도록 돕는 오류를 생성해요.
사용자가 BuildKit 사용을 명시적으로 선택하지 않은 상황(즉, DOCKER_BUILDKIT=1이 설정되지 않은 상황)에서 CLI는 자동으로 클래식 빌더로 폴백하지만 deprecated 경고를 출력해요:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
이 상황은 정적 바이너리로 docker CLI를 설치했고 Buildx 구성 요소가 설치되지 않았거나 올바르게 설치되지 않은 경우 발생할 수 있어요. 이 폴백은 향후 릴리스에서 제거될 것이므로, Buildx 구성 요소를 설치하고 빌드에 BuildKit을 사용하거나 DOCKER_BUILDKIT=0으로 BuildKit 사용을 선택 해제할 것을 권장해요.
BuildKit 사용을 선택했는데(DOCKER_BUILDKIT=1) Buildx 구성 요소가 없으면 대신 오류가 출력되고 docker build 명령이 실패해요:
ERROR: BuildKit is enabled but the buildx component is missing or broken.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
계속 빌드에 BuildKit을 사용하려면 Buildx 구성 요소를 설치할 것을 권장하지만, 사용자는 대안으로 DOCKER_BUILDKIT 환경 변수를 해제해 레거시 빌더로 폴백하거나 DOCKER_BUILDKIT=0으로 BuildKit 사용을 선택 해제할 수 있어요.
클래식 빌더가 deprecated이므로 자동 폴백과 BuildKit 선택 해제 모두 향후 릴리스에서 더 이상 가능하지 않을 거라는 점을 인지하세요.
CentOS 7과 RHEL 7의 Btrfs 스토리지 드라이버
Removed in release: v23.0
CentOS와 RHEL의 btrfs 스토리지 드라이버는 CentOS와 RHEL이 기술 프리뷰로 제공했지만, Red Hat Enterprise Linux 7.4 릴리스 이후 deprecated됐고 CentOS 8과 RHEL 8에서 제거됐어요. CentOS의 btrfs 스토리지 드라이버 사용자는 이제 기본 스토리지 드라이버인 overlay2 같은 다른 스토리지 드라이버로 마이그레이션할 것을 권장해요. Docker 23.0은 사용자가 대안 드라이버로 마이그레이션할 수 있도록 btrfs 스토리지 드라이버를 계속 제공해요. 다음 Docker 릴리스에서는 이 드라이버를 더 이상 제공하지 않을 거예요.
암호화된 TLS 프라이빗 키 지원 (Support for encrypted TLS private keys)
Deprecated in release: v20.10 Removed in release: v23.0
암호화된 TLS 프라이빗 키 사용은 deprecated됐고 제거됐어요. Golang은 RFC 1423에 지정된 레거시 PEM 암호화 지원을 deprecated했는데, 설계상 안전하지 않기 때문이에요(https://go-review.googlesource.com/c/go/+/264159 참고).
이 기능은 제공된 비밀번호와 함께 암호화된 프라이빗 키를 사용할 수 있게 했지만, 암호화가 깨진 것으로 알려져 있고 키가 파일시스템에서 비밀번호 옆에 있으므로 추가 보안을 제공하지 못했어요. 사용자는 프라이빗 키를 복호화해 암호화되지 않은 상태로 저장해 계속 사용할 것을 권장해요.
Kubernetes 스택과 컨텍스트 지원 (Kubernetes stack and context support)
Deprecated in release: v20.10 Removed in release: v23.0
Compose on Kubernetes의 deprecated 이후 stack과 context 명령의 Kubernetes 지원이 CLI에서 제거됐고, 이 기능과 관련된 옵션은 이제 무시되거나 오류를 생성할 수 있어요.
docker context 하위 명령에서 제거된 커맨드 라인 플래그:
--default-stack-orchestrator- swarm이 이제 스택의 유일한(그리고 기본) 오케스트레이터예요.--kubernetes- Kubernetes 엔드포인트는 더 이상docker context에 저장할 수 없어요.--kubeconfig- 컨텍스트를 kubeconfig 파일로 내보내는 것은 더 이상 지원되지 않아요.
docker context inspect 하위 명령이 생성하는 출력은 더 이상 새 컨텍스트에 대한 StackOrchestrator와 Kubernetes 엔드포인트 정보를 포함하지 않아요.
docker stack 하위 명령에서 제거된 커맨드 라인 플래그:
--kubeconfig- 컨텍스트로 kubeconfig 파일을 사용하는 것은 더 이상 지원되지 않아요.--namespace- 스택의 Kubernetes 네임스페이스 구성은 더 이상 지원되지 않아요.--orchestrator- swarm이 이제 스택의 유일한(그리고 기본) 오케스트레이터예요.
DOCKER_STACK_ORCHESTRATOR, DOCKER_ORCHESTRATOR, KUBECONFIG 환경 변수와 ~/.docker/config.json CLI 구성 파일의 stackOrchestrator 옵션은 더 이상 사용되지 않고 무시돼요.
비준수 이미지 레지스트리에서 이미지 가져오기 (Pulling images from non-compliant image registries)
Deprecated in release: v20.10 Removed in release: v28.2
Docker Engine v20.10 이상은 로컬 이미지 캐시의 이미지가 가져오기 전에 업데이트가 필요한지 확인하는 최적화를 포함해 Docker Engine이 불필요한 API 요청을 하지 않도록 해요. 이 최적화는 컨테이너 이미지 레지스트리가 Open Container Initiative Distribution Specification을 준수해야 해요.
대부분의 레지스트리는 스펙을 준수하지만, 일부 레지스트리가 비준수인 것을 발견해 docker pull이 실패했어요.
임시 해결책으로 Docker Engine v20.10은 비준수 레지스트리를 사용할 때 docker pull이 기능하도록 폴백 메커니즘을 추가했어요. 이 상황에서 경고 메시지가 출력돼요:
WARNING Failed to pull manifest by the resolved digest. This registry does not
appear to conform to the distribution registry specification; falling back to
pull by tag. This fallback is DEPRECATED, and will be removed in a future
release.
폴백은 사용자가 이미지를 준수하는 레지스트리로 마이그레이션하거나, 그 레지스트리들이 준수하도록 하기 위해 추가됐어요.
GitHub은 레거시 docker.pkg.github.com 레지스트리를 deprecated했고, GitHub Container Registry(GHCR, ghcr.io)를 위해 2025년 2월 24일에 종료했으며, 이 폴백이 더 이상 필요하지 않게 됐어요.
Windows의 Linux 컨테이너 (LCOW) (실험적) (Linux containers on Windows (LCOW) (experimental))
Deprecated in release: v20.10 Removed in release: v23.0
Windows에서 Linux 컨테이너를 실행하는 실험적 기능(LCOW)은 Docker 17.09에서 기술 프리뷰로 도입됐어요. 도입 이후 많은 개선이 이루어졌지만, 이 기능은 완성도에 도달하지 못했고 WSL2에서 Linux를 네이티브로 실행하는 것을 선호해 개발이 중단됐어요.
Windows 호스트에서 Linux 워크로드를 실행하려는 개발자는 대신 WSL2를 사용한 Docker Desktop을 사용할 것을 권장해요.
cgroups v1의 BLKIO weight 옵션
Deprecated in release: v20.10
해당 기능이 Linux 커널 v5.0 이상에서 제거되었기 때문에, blkio weight(docker run --blkio-weight 및 docker run --blkio-weight-device)를 지정하는 것은 cgroups v1을 사용할 때 deprecated로 표시돼요. cgroups v2를 사용할 때 --blkio-weight 옵션은 io.weight를 사용해 구현돼요.
커널 메모리 제한 (Kernel memory limit)
Deprecated in release: v20.10 Removed in release: v23.0
Linux 커널이 v5.4에서 kmem.limit_in_bytes를 deprecated했기 때문에 커널 메모리 제한(docker run --kernel-memory) 지정은 더 이상 지원되지 않아요. OCI 런타임 스펙은 이제 이 옵션을 "NOT RECOMMENDED"로 표시하며, runc 같은 OCI 런타임은 더 이상 이 옵션을 지원하지 않아요.
Docker API는 더 이상 kernel-memory 필드를 처리하지 않으며, Docker CLI v29.0은 --kernel-memory 옵션을 제거해요.
클러스터 스토어를 사용하는 클래식 Swarm과 overlay 네트워크 (Classic Swarm and overlay networks using cluster store)
Deprecated in release: v20.10 Removed in release: v23.0
독립 실행형("클래식") Swarm이 deprecated됐고, 그에 따라 외부 키/값 스토어를 사용하는 overlay 네트워크의 사용도 deprecated됐어요. 해당 --cluster-advertise, --cluster-store, --cluster-store-opt 데몬 옵션이 제거됐어요.
레거시 ~/.dockercfg 구성 파일 지원 (Support for legacy ~/.dockercfg configuration files)
Deprecated in release: v20.10 Removed in release: v23.0
v1.7.0까지의 Docker CLI는 레지스트리에 인증(docker login)한 후 자격 증명을 저장하기 위해 ~/.dockercfg 파일을 사용했어요. Docker v1.7.0은 이 파일을 ~/.docker/config.json에 있는 새 CLI 구성 파일로 대체했어요. 새 구성 파일을 구현할 때 기존 사용자가 새 파일로 마이그레이션하도록 돕기 위해 옛 파일(및 파일 형식)이 폴백으로 유지됐어요.
옛 파일 형식은 자격 증명의 안전하지 않은 저장(자격 증명이 암호화되지 않은 채 저장)을 부추기고, Docker v1.7.0 이후 어떤 버전의 CLI도 이 파일을 만들지 않았으므로 이 파일과 그 형식에 대한 지원이 제거됐어요.
실험적 CLI 기능 구성 옵션 (Configuration options for experimental CLI features)
Deprecated in release: v19.03 Removed in release: v23.0
DOCKER_CLI_EXPERIMENTAL 환경 변수와 CLI 구성 파일의 해당 experimental 필드가 deprecated됐어요. 실험적 기능은 기본으로 활성화되며, 이러한 구성 옵션은 더 이상 기능하지 않아요.
v23.0부터 Docker CLI는 docker version의 출력에서 클라이언트의 Experimental을 더 이상 출력하지 않으며, 필드가 JSON 형식에서 제거됐어요.
CLI 플러그인 지원 (CLI plugins support)
Deprecated in release: v20.10
CLI 플러그인 API가 이제 deprecated로 표시됐어요.
Dockerfile 레거시 ENV name value 구문
Deprecated in release: v20.10
Dockerfile ENV 명령은 ENV name=value 또는 ENV name value 중 하나를 사용해 값을 설정할 수 있게 해요. 후자(ENV name value) 형식은 모호할 수 있어요. 예를 들어 다음은 세 개의 환경 변수를 설정하려는 의도였을 수 있지만 값 "TWO= THREE=world"를 가진 단일 환경 변수(ONE)를 정의해요:
ENV ONE TWO= THREE=world
이 형식은 또한 Dockerfile의 단일 ENV 줄에서 여러 환경 변수를 설정하는 것을 허용하지 않아요.
ENV name value 구문의 사용은 권장되지 않으며 향후 릴리스에서 제거될 수 있어요. 사용자는 예를 들어 다음과 같이 Dockerfile이 ENV name=value 구문을 사용하도록 업데이트할 것을 권장해요:
ENV ONE="" TWO="" THREE="world"
docker build --stream 플래그 (실험적)
Deprecated in release: v20.10 Removed in release: v20.10
Docker v17.07은 docker build에 실험적 --stream 플래그를 도입했는데, 이는 전체 빌드 컨텍스트를 무조건 보내는 대신 빌드 컨텍스트를 증분으로 데몬에 보낼 수 있게 했어요.
이 기능은 기본적으로 스트리밍을 사용하는 BuildKit의 일부로 재구현됐고, --stream 옵션은 클래식 빌더를 사용할 때 무시되며 대신 deprecated 경고를 출력해요.
이 기능을 사용하려는 사용자는 DOCKER_BUILDKIT=1 환경 변수를 설정하거나 데몬 또는 CLI 구성 파일을 통해 BuildKit을 활성화할 것을 권장해요.
fluentd-async-connect 로그 옵션
Deprecated in release: v20.10 Removed in release: v28.0
fluentd 로깅 드라이버의 --log-opt fluentd-async-connect 옵션은 --log-opt fluentd-async를 위해 deprecated됐어요. 옛 옵션을 사용하면 데몬 로그에 deprecated 메시지가 기록돼요:
fluent#New: AsyncConnect is now deprecated, use Async instead
옛 옵션에 대한 지원이 제거됐으므로 사용자는 앞으로 fluentd-async 옵션을 사용할 것을 권장해요.
이미지 매니페스트 v2 스키마 1로 푸시·풀 (Pushing and pulling with image manifest v2 schema 1)
Deprecated in release: v19.03 Disabled by default in release: v26.0 Removed in release: v28.2
이미지 매니페스트 v2 schema 1 및 "Docker Image v1" 형식은 v2 schema 2 및 OCI image spec 형식을 위해 deprecated됐어요.
이 레거시 형식은 더 이상 사용해서는 안 되며, 사용자는 이미지를 현재 형식으로 업데이트하거나 더 최신 이미지로 업그레이드할 것을 권장해요. Docker v26.0부터 이 이미지들을 가져오는 것은 기본으로 비활성화되었고, 지원은 v28.2에서 제거됐어요. 레거시 이미지를 가져오려 하면 이제 오류가 생성돼요:
$ docker pull ubuntu:10.04
Error response from daemon:
Docker Image Format v1 and Docker Image manifest version 2, schema 1 support has been removed.
Suggest the author of docker.io/library/ubuntu:10.04 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2.
More information at https://docs.docker.com/go/deprecated-image-specs/
docker engine 하위 명령
Deprecated in release: v19.03 Removed in release: v20.10
docker engine activate, docker engine check, docker engine update는 Docker Engine의 이미지 기반 배포판을 사용해 Docker Community 엔진을 Docker Enterprise로 업그레이드하는 대체 설치 방법을 제공했어요.
이 기능은 Linux에서만, 그리고 로컬 노드에서 실행할 때만 사용할 수 있었어요. 이 기능의 한계와 널리 채택되지 않은 점을 고려해 표준 패키지 매니저를 통한 설치를 위해 docker engine 하위 명령이 제거될 거예요.
최상위 docker deploy 하위 명령 (실험적)
Deprecated in release: v19.03 Removed in release: v20.10
최상위 docker deploy 명령("Docker Application Bundle"(.dab) 파일 형식 사용)은 Docker 1.13 / 17.03에 실험적 기능으로 도입됐지만 docker stack deploy 하위 명령을 사용한 Docker Compose 파일 지원으로 대체됐어요.
"dab" 파일을 사용한 docker stack deploy (실험적)
Deprecated in release: v19.03 Removed in release: v20.10
이 기능에 대한 개발이 이루어지지 않고 파일 형식의 활발한 사용도 없기 때문에, DAB 파일 형식과 최상위 docker deploy 명령(19.03에서 기본적으로 숨김)에 대한 지원은 compose 파일을 사용한 docker stack deploy를 위해 제거될 거예요.
overlay2.override_kernel_check 스토리지 옵션 지원
Deprecated in release: v19.03 Removed in release: v24.0
이 데몬 구성 옵션은 커널이 overlay2 스토리지 드라이버에 필요한 여러 lower dir를 가진 OverlayFS를 지원하는지 감지하는 데 사용되는 Linux 커널 버전 확인을 비활성화했어요. Docker v19.03.7부터 감지가 개선되어 커널 _버전_에 더 이상 의존하지 않게 되어 이 옵션이 더 이상 사용되지 않았어요.
AuFS 스토리지 드라이버 (AuFS storage driver)
Deprecated in release: v19.03 Removed in release: v24.0
aufs 스토리지 드라이버는 overlay2를 위해 deprecated됐고 Docker Engine v24.0에서 제거됐어요. aufs 스토리지 드라이버 사용자는 Docker Engine v24.0으로 업그레이드하기 전에 overlay2 같은 다른 스토리지 드라이버로 마이그레이션해야 해요.
aufs 스토리지 드라이버는 원래 3.14 커널과 함께 제공된 Ubuntu 14.04 LTS 같은 OverlayFS 지원이 없는 배포판에서 Docker를 실행할 수 있게 했어요.
이제 Ubuntu 14.04는 더 이상 Docker의 지원 배포판이 아니고, overlay2는 모든 지원 배포판에서 사용 가능하므로(모두 커널 4.x이거나 여러 lowerdir 지원이 백포트됨) aufs 스토리지 드라이버를 계속 유지 관리할 이유가 없어요.
레거시 overlay 스토리지 드라이버 (Legacy overlay storage driver)
Deprecated in release: v18.09 Removed in release: v24.0
overlay 스토리지 드라이버는 overlay2 스토리지 드라이버를 위해 deprecated됐으며, 후자는 overlay의 모든 이점을 한계(과도한 inode 소비) 없이 가져요. 레거시 overlay 스토리지 드라이버는 Docker Engine v24.0에서 제거됐어요. overlay 스토리지 드라이버 사용자는 Docker Engine v24.0으로 업그레이드하기 전에 overlay2 스토리지 드라이버로 마이그레이션해야 해요.
레거시 overlay 스토리지 드라이버는 v4.x보다 오래된 커널에서 overlayFS 기반 파일시스템을 사용할 수 있게 했어요. 이제 모든 지원 배포판이 overlay2를 실행할 수 있으므로(모두 커널 4.x이거나 여러 lowerdir 지원이 백포트됨) overlay 스토리지 드라이버를 계속 유지 관리할 이유가 없어요.
Device mapper 스토리지 드라이버 (Device mapper storage driver)
Deprecated in release: v18.09 Disabled by default in release: v23.0 Removed in release: v25.0
devicemapper 스토리지 드라이버는 overlay2를 위해 deprecated됐고 Docker Engine v25.0에서 제거됐어요. devicemapper 스토리지 드라이버 사용자는 Docker Engine v25.0으로 업그레이드하기 전에 overlay2 같은 다른 스토리지 드라이버로 마이그레이션해야 해요.
devicemapper 스토리지 드라이버는 다른 스토리지 드라이버(overlay2, btrfs 등)를 지원하지 않는 오래된(3.x) 커널에서 Docker를 실행할 수 있게 했어요.
이제 모든 지원 배포판에 overlay2 지원이 추가되었으므로(모두 커널 4.x이거나 여러 lowerdir 지원이 백포트됨) devicemapper 스토리지 드라이버를 계속 유지 관리할 이유가 없어요.
엔진 라벨의 예약 네임스페이스 사용 (Use of reserved namespaces in engine labels)
Deprecated in release: v18.06 Removed in release: v20.10
엔진 라벨의 com.docker.*, io.docker.*, org.dockerproject.* 네임스페이스는 항상 예약된 것으로 문서화됐지만, 강제된 적은 없었어요.
이 네임스페이스의 사용은 이제 사용을 권하지 않도록 엔진 로그에서 경고를 일으키며, v20.10 이상에서는 대신 오류가 날 거예요.
--disable-legacy-registry 재정의 데몬 옵션
Disabled In Release: v17.12 Removed in release: v19.03
--disable-legacy-registry 플래그는 Docker 17.12에서 비활성화됐고 사용하면 오류를 출력해요. 이 오류가 출력되려면 플래그 자체가 여전히 존재하지만 숨겨져 있어요. 이 플래그는 Docker 19.03에서 제거됐어요.
V1 레지스트리와 상호작용 (Interacting with V1 registries)
Disabled by default in release: v17.06 Removed in release: v17.12
버전 1.8.3은 Docker 데몬이 v1 레지스트리에 대한 pull, push, login 작업을 방지하는 플래그(--disable-legacy-registry=false)를 추가했어요. 기본적으로 활성화되어 있지만, 이것은 v1 프로토콜을 deprecated하려는 의도를 알려줘요.
공용 레지스트리에 대한 v1 프로토콜 지원은 1.13에서 제거됐어요. v1을 사용하는 모든 미러 구성은 v2 레지스트리 미러를 사용하도록 업데이트해야 해요.
Docker 17.12부터 V1 레지스트리에 대한 지원이 제거됐고, --disable-legacy-registry 플래그는 더 이상 사용할 수 없으며 설정하면 dockerd가 시작에 실패해요.
기본인 비동기 service create와 service update
Deprecated in release: v17.05 Disabled by default in release:v17.10
Docker 17.05는 docker service create와 docker service update를 동기적으로 동작하게 하는 선택적 --detach=false 옵션을 추가했어요. 이 옵션은 Docker 17.10에서 기본으로 활성화될 것이며, 그 시점에 --detach 플래그를 사용해 이전(비동기) 동작을 사용할 수 있어요.
이 옵션의 기본값은 docker service rollback과 docker service scale에서도 Docker 17.10에서 그에 따라 변경될 거예요.
dockerd의 -g 및 --graph 플래그
Deprecated in release: v17.05 Removed in release: v23.0
dockerd 또는 docker daemon 명령의 -g 또는 --graph 플래그는 영구 데이터와 리소스 구성을 저장할 디렉토리를 나타내는 데 사용됐으며, 더 설명적인 --data-root 플래그로 대체됐어요. 이 플래그들은 v17.05에서 deprecated되고 숨겨졌으며 v23.0에서 제거됐어요.
NetworkSettings의 최상위 네트워크 속성
Deprecated in release:v1.13.0 Target for removal in release: v17.12
컨테이너를 검사할 때 NetworkSettings는 기본("bridge") 네트워크에 대한 최상위 정보인 EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress, IPPrefixLen, IPv6Gateway, MacAddress를 포함해요.
이 속성들은 NetworkSettings.Networks의 네트워크별 속성을 위해 deprecated됐어요. 이 속성들은 Docker 1.9에서 이미 "deprecated"였지만 하위 호환성을 위해 유지됐어요.
자세한 내용은 #17538을 참고하세요.
/images/json 엔드포인트의 filter 옵션
Deprecated in release:v1.13.0 Removed in release: v20.10
이미지 목록을 레퍼런스(이름 또는 name:tag)로 필터링하는 filter 옵션은 이제 reference라는 일반 필터로 구현돼요.
repository:shortid 이미지 레퍼런스
Deprecated in release:v1.13.0 Removed in release: v17.12
이미지를 참조하는 repository:shortid 구문은 거의 사용되지 않고, 태그 레퍼런스와 충돌하며, 다이제스트 레퍼런스와 혼동될 수 있어요.
repository:shortid 표기법으로 이미지를 참조하는 지원은 Docker 17.12에서 제거됐어요.
docker daemon 하위 명령
Deprecated in release:v1.13.0 Removed in release: v17.12
데몬은 별도 바이너리(dockerd)로 이동됐으며, 대신 그것을 사용해야 해요.
엔진 라벨의 충돌하는 값을 가진 중복 키
Deprecated in release:v1.13.0 Removed in release: v17.12
충돌하는 값으로 중복 키를 설정하면 오류가 생성되고 데몬이 시작에 실패해요.
Dockerfile의 MAINTAINER
Deprecated in release:v1.13.0
MAINTAINER는 LABEL의 초기 매우 제한된 형태였으며, 대신 LABEL을 사용해야 해요.
버전 없는 API 호출 (API calls without a version)
Deprecated in release:v1.13.0 Target for removal in release: v17.12
향후 Engine 버전과의 호환성을 보장하려면 모든 API 호출에 API 버전을 제공해야 해요. 예를 들어 URL /containers/json만 요청하는 대신 이제 /v1.25/containers/json을 요청해야 해요.
overlay/overlay2의 d_type 지원 없는 백킹 파일시스템
Deprecated in release:v1.13.0 Removed in release: v17.12
overlay와 overlay2 스토리지 드라이버는 백킹 파일시스템이 d_type을 지원하지 않으면 예상대로 동작하지 않아요. 예를 들어 XFS는 ftype=0 옵션으로 포맷되면 d_type을 지원하지 않아요.
이 구성에 대한 지원은 제거됐고, Docker v23.0 이상은 d_type 지원이 없는 백킹 파일시스템에서 overlay2 또는 overlay 스토리지 드라이버를 사용하려 시도하면 시작에 실패해요.
자세한 내용은 #27358을 참고하세요.
docker search의 --automated 및 --stars 플래그
Deprecated in release:v1.12.0 Removed in release: v20.10
docker search --automated 및 docker search --stars 옵션은 deprecated됐어요. 대신 docker search --filter=is-automated=<true|false> 및 docker search --filter=stars=...을 사용해요.
--help의 -h 단축
Deprecated in release:v1.12.0 Target for removal in release: v17.09
-h 단축은 Linux에서 --help보다 덜 흔하고(docker create의 -h / --hostname과 충돌하는 등), 모든 하위 명령에서 사용할 수 없어요. 이 때문에 -h 단축은 하위 명령의 "usage" 출력에 출력되지 않고 문서화되지도 않았으며, 이제 "deprecated"로 표시됐어요.
docker login의 -e 및 --email 플래그
Deprecated in release:v1.11.0 Removed in release:v17.06
docker login은 제공된 사용자 이름이 존재하지 않으면 더 이상 대상 레지스트리로 계정을 자동 등록하지 않아요. 이 변경으로 email 플래그는 더 이상 필요하지 않으며 deprecated될 거예요.
docker run의 --security-opt 플래그 구분자(:)
Deprecated in release:v1.11.0 Target for removal in release: v17.06
--security-opt 플래그는 키와 값을 나누는 데 콜론 구분자(:)를 더 이상 사용하지 않고, --storage-opt 같은 다른 유사한 플래그와의 일관성을 위해 등호 기호(=)를 사용해요.
기본 브리지 네트워크의 링크 (Links on the default bridge network)
Deprecated in release: v1.10 Target for removal in release: v30.0
--network가 지정되지 않았을 때 docker create 및 docker run의 --link 옵션은 v1.10에서 deprecated됐고 향후 릴리스에서 제거될 거예요. 대신 사용자 정의 네트워크를 사용해야 해요. Docker 29.6은 기본 브리지 네트워크에 이 옵션이 사용될 때 deprecated 경고를 추가했어요.
--link 옵션은 기본이 아닌 네트워크를 사용할 때는 여전히 지원된다는 점을 유의하세요.
API의 모호한 이벤트 필드 (Ambiguous event fields in API)
Deprecated in release:v1.10.0
events API의 ID, Status, From 필드는 더 풍부한 구조를 위해 deprecated됐어요. 새 형식은 events API 문서를 참고하세요.
docker tag의 -f 플래그
Deprecated in release:v1.10.0 Removed in release:v1.12.0
다양한 docker 명령에서 태깅을 일관되게 만들기 위해 docker tag 명령의 -f 플래그가 deprecated됐어요. 한 이미지에서 다른 이미지로 태그를 옮기기 위해 -f를 지정할 필요가 더 이상 없어요. -f 플래그가 없고 지정된 태그가 이미 사용 중이라도 docker가 오류를 생성하지 않을 거예요.
API 컨테이너 시작의 HostConfig
Deprecated in release:v1.10.0 Removed in release:v1.12.0
POST /containers/{name}/start에 HostConfig를 전달하는 것은 컨테이너 생성(POST /containers/create) 시 정의하는 것을 위해 deprecated됐어요.
docker ps의 --before 및 --since 플래그
Deprecated in release:v1.10.0 Removed in release:v1.12.0
docker ps --before 및 docker ps --since 옵션은 deprecated됐어요. 대신 docker ps --filter=before=... 및 docker ps --filter=since=...을 사용해요.
드라이버별 로그 태그 (Driver-specific log tags)
Deprecated in release:v1.9.0 Removed in release:v1.12.0
로그 태그는 이제 다양한 로깅 드라이버에서 표준 방식으로 생성돼요. 이 때문에 드라이버별 로그 태그 옵션 syslog-tag, gelf-tag, fluentd-tag가 일반 tag 옵션을 위해 deprecated됐어요.
$ docker --log-driver=syslog --log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}"
Docker Content Trust ENV passphrase 변수 이름 변경
Deprecated in release:v1.9.0 Removed in release:v1.12.0
1.9부터 Docker Content Trust Offline 키는 Root 키로, Tagging 키는 Repository 키로 이름이 바뀌었어요. 이 이름 변경으로 해당 환경 변수도 변경하고 있어요:
- DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE는 이제 DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
- DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE는 이제 DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
/containers/(id or name)/copy 엔드포인트
Deprecated in release:v1.8.0 Removed in release:v1.12.0
엔드포인트 /containers/(id or name)/copy는 /containers/(id or name)/archive를 위해 deprecated됐어요.
LXC 내장 exec 드라이버
Deprecated in release:v1.8.0 Removed in release:v1.10.0
내장 LXC 실행 드라이버, lxc-conf 플래그, API 필드가 제거됐어요.
옛 커맨드 라인 옵션 (Old Command Line Options)
Deprecated in release:v1.8.0 Removed in release:v1.10.0
-d와 --daemon 플래그는 deprecated됐어요. 대신 별도 dockerd 바이너리를 사용해요.
다음과 같은 특정 커맨드 라인 옵션의 단일 대시(-opt) 변형은 deprecated됐고 이중 대시 옵션(--opt)으로 대체됐어요:
docker attach -nostdindocker attach -sig-proxydocker build -no-cachedocker build -rmdocker commit -authordocker commit -rundocker events -sincedocker history -notruncdocker images -notruncdocker inspect -formatdocker ps -beforeIddocker ps -notruncdocker ps -sinceIddocker rm -linkdocker run -cidfiledocker run -dnsdocker run -entrypointdocker run -exposedocker run -linkdocker run -lxc-confdocker run -ndocker run -privilegeddocker run -volumes-fromdocker search -notruncdocker search -starsdocker search -tdocker search -trusteddocker tag -force
다음 이중 대시 옵션은 deprecated됐고 대체가 없어요:
docker run --cpusetdocker run --networkingdocker ps --since-iddocker ps --before-iddocker search --trusted
Deprecated in release:v1.5.0 Removed in release:v1.12.0
단일 대시(-help)는 제거됐고, 이중 대시 --help를 위해 제거됐어요.
dockerd의 --api-enable-cors 플래그
Deprecated in release:v1.6.0 Removed in release:v17.09
--api-enable-cors 플래그는 v1.6.0부터 deprecated됐어요. 대신 --api-cors-header 플래그를 사용해요.
docker commit의 --run 플래그
Deprecated in release:v0.10.0 Removed in release:v1.13.0
docker commit 명령의 --run 플래그(및 그 짧은 버전 -run)는 Dockerfile 명령을 전달할 수 있는 --changes 플래그를 위해 deprecated됐어요.
docker import의 세 인자 형식
Deprecated in release:v0.6.7 Removed in release:v1.12.0
docker import 명령 형식 file|URL|- [REPOSITORY [TAG]]은 2013년 11월부터 deprecated됐어요. 더 이상 지원되지 않아요.