我尝试运行我的私有坞映像以及 docker -dind容器,以便能够从Kubernetes中的私有映像中运行对接命令。我唯一的问题是,docker run命令不读取码头机密,因此需要运行docker login就会失败。如何将凭据传递给“码头运行”命令?
这里是我的Kubernetes部署的一部分:
containers:
- name: docker-private
image: docker:20.10
command: ['docker', 'run', '-p', '80:8000', 'private/image:latest' ]
resources:
requests:
cpu: 10m
memory: 256Mi
env:
- name: DOCKER_HOST
value: tcp://localhost:2375
envFrom:
- secretRef:
name: docker-secret-keys
- name: dind-daemon
image: docker:20.10-dind
command: ["dockerd", "--host", "tcp://127.0.0.1:2375"]
resources:
requests:
cpu: 20m
memory: 512Mi
securityContext:
privileged: true
volumeMounts:
- name: docker-graph-storage
mountPath: /var/lib/docker编辑我有我的证书作为库伯内的秘密,我试图安装到正在运行的码头,但到目前为止没有任何成功:(
apiVersion: v1
data:
.dockerconfigjson: eyJhXXXXXXdoihfc9w8fwpeojfOFwhfoiuwehfo8wfhoi2ehfioewNlcm5hbWUiOiJlbGRhcmVudGas4hti45ytg45hgiVsZGFXXXXXXyQGVudG9yLmlvIiwiYXV0aCI6IlpXeGtZWEpsYm5SdmNqb3dObVl4WmpjM1lTMDVPRFZrTFRRNU5HRXRZVEUzTXkwMk5UYzBObVF4T0RjeFpUWT0ifX19XXXXXXXXXXX
kind: Secret
metadata:
name: staging-docker-keys
namespace: staging
resourceVersion: "6383"
uid: a7yduyd-xxxx-xxxx-xxxx-ae2ede3e4ed
type: kubernetes.io/dockerconfigjson最后的目标是使“内部停靠器”(运行私有/映像:最新)能够运行任何对接命令,而无需在每个命令之前登录。
发布于 2022-09-05 09:43:14
假设您不是在使用码头证书认证,而是使用用户名和密码,您可以遵循以下路径:
docker:20.1字段修改码头客户端映像( command )入口点command可能如下所示: command: ["/bin/sh"]
args: ["-c", "docker login...;docker run..."] 样品工作吊舱使用的想法:
apiVersion: v1
kind: Pod
metadata:
name: myapp
labels:
name: myapp
spec:
containers:
- name: myapp
image: docker:20.10
command: ["/bin/sh"]
args: ["-c", "docker version;docker info"]
resources:
limits:
memory: "128Mi"
cpu: "500m"基于文档
编辑:
如果确实使用了docker cert身份验证,则可以有许多选项:
docker客户端映像并使用它来烘焙证书。发布于 2022-09-05 10:45:26
dind将在/certs中创建ca、server、client cert。只需创建emptyDir卷以共享证书即可。
apiVersion: v1
kind: Pod
metadata:
name: myapp
labels:
name: myapp
spec:
volumes:
- name: docker-tls-certdir
emptyDir: {}
containers:
- name: docker-private
image: docker:20.10
command: ['docker', 'run', '-p', '80:8000', 'nginx' ]
env:
- name: DOCKER_HOST
value: tcp://localhost:2375
volumeMounts:
- name: docker-tls-certdir
mountPath: /certs
- name: dind-daemon
image: docker:20.10-dind
command: ["dockerd", "--host", "tcp://127.0.0.1:2375"]
securityContext:
privileged: true
volumeMounts:
- name: docker-tls-certdir
mountPath: /certs发布于 2022-09-07 14:44:10
好的,我最终在我的docker存储库上创建了访问令牌,并使用它来执行docker login命令。它工作得很好:)
https://stackoverflow.com/questions/73606795
复制相似问题