是否有关于如何在适用于 Windows Server 2016 的 Docker EE 中使用 Linux 容器的最新指南?我发现的所有指南(例如本指南)都使用预览版,据我所知,该版本有两个主要版本,并且已经过时 2 年。
我遇到的另一个问题是我必须手动下载和安装 docker,因为服务器没有直接的互联网连接。容器镜像将通过 Artifactory 下载。
我们在Kubernetes上使用Apache-Kafka部署,该部署基于在创建pod之后标记pod的功能(请参阅https://github.com/Yolean/kubernetes-kafka).代理pod的init容器利用此功能在其自身上设置标签,并将其自己的数字索引(例如"0","1"等)作为值.标签在服务描述符中用于精确选择一个pod.
这种方法适用于我们的DIND-Kubernetes环境.但是,当尝试将部署移植到Docker-EE Kubernetes环境时,我们遇到了麻烦,因为该命令会kubectl label pod
产生运行时错误,这完全是误导性的(另请参阅https://github.com/fabric8io/kubernetes-client/issues/ 853).
为了在最小设置中验证运行时错误,我们创建了以下部署脚本.
# create a simple pod as a test target for labeling
> kubectl run -ti -n default --image alpine sh
# get the pod name for all further steps
> kubectl -n default get pods
NAME READY STATUS RESTARTS AGE
nfs-provisioner-7d49cdcb4f-8qx95 1/1 Running 1 7d
nginx-deployment-76dcc8c697-ng4kb 1/1 Running 1 7d
nginx-deployment-76dcc8c697-vs24j 1/1 Running 0 20d
sh-777f6db646-hrm65 1/1 Running 0 3m <--- This is the test pod …
Run Code Online (Sandbox Code Playgroud) 运行以下命令:
docker build --rm -f "c:\Users\...\iotedgeModbus\Dockerfile.amd64.debug" -t
modbus:dev-amd64.debug "c:\Users\...\iotedgeModbus" ; if ($?) { iotedgehubdev start -d "c:\Users\...\iotedgeModbus\config\deployment.debug.amd64.json" -v }
Run Code Online (Sandbox Code Playgroud)
输出与解析 DNS 名称相关的错误:
Step 2/21 : RUN apt-get update && apt-get install -y --no-install-recommends unzip procps
&& rm -rf /var/lib/apt/lists/*
---> Running in a389a7d1ff0d
Err:1 http://security.debian.org/debian-security buster/updates InRelease
Temporary failure resolving 'security.debian.org'
Err:2 http://deb.debian.org/debian buster InRelease
Temporary failure resolving 'deb.debian.org'
Err:3 http://deb.debian.org/debian buster-updates InRelease
Temporary failure resolving 'deb.debian.org'
Reading package lists...
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪:
docker build --rm -f "c:\Users\...\iotedgeModbus\Dockerfile.amd64.debug" -t
modbus:dev-amd64.debug "c:\Users\...\iotedgeModbus" …
Run Code Online (Sandbox Code Playgroud)