Docker Registry
配置你的 docker registry
为了能够创建和发布 docker 镜像,我们需要使用 Docker Registry。
默认,Jenkins X 会在系统命名空间中带一个 Docker Registry,以及 Jenkins 和 Nexus。当 Docker Registry 运行在你的 Kubernetes 集群中,它会在集群内部使用,它很难通过带有自签名证书的 HTTPS 暴露 —— 因此,在你的 Kubernetes 集群服务中,我们默认使用 insecure 的 Docker Registry。
使用不同的 Docker Registry
如果你使用公有云的话,可能希望利用你的云服务商的 Docker Registry;或者复用你已有的 Docker Registry。
为了指定 Docker Registry 的主机、端口,你可以使用 Jenkins 控制台:
jx console
然后,定位到 管理 Jenkins -> 系统配置
,并修改环境变量 DOCKER_REGISTRY
指向你选择的 Docker Registry。
另一种方法是,把下面的内容添加到你的自定义 Jenkins X 平台 helm charts 的values.yaml
文件中:
jenkins:
Servers:
Global:
EnvVars:
DOCKER_REGISTRY: "gcr.io"
更新 config.json
下一步,你需要为 docker 更新 config.json
中的认证。
如果为你的 Docker Registry 创建一个 config.json
文件,例如:Google 云的 GCR,它可能看起来像:
{
"credHelpers": {
"gcr.io": "gcloud",
"us.gcr.io": "gcloud",
"eu.gcr.io": "gcloud",
"asia.gcr.io": "gcloud",
"staging-k8s.gcr.io": "gcloud"
}
}
对于 AWS 则像:
{
"credsStore": "ecr-login"
}
然后需要更新凭据 jenkins-docker-cfg
,你可以执行以下操作:
kubectl delete secret jenkins-docker-cfg
kubectl create secret generic jenkins-docker-cfg --from-file=./config.json
使用 Docker Hub
如果你想要发布你的镜像到 Docker Hub 当中 ,则需要修改你的 config.json
像下面那样:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "MyDockerHubToken",
"email": "myemail@acme.com"
}
}
}
为你的 registry 挂载凭证
你的 docker registry 需要将凭证挂载到 Pod 模板当中。