使用https://github.com/docker-java/docker-java并寻找从https://docs.docker.com/v17.12/engine/reference/commandline/service_create/#options添加--with-registry-auth选项的方法
val createCmd = dockerClient.createServiceCmd(
ServiceSpec()
.withName("name")
.withTaskTemplate(TaskSpec()
.withContainerSpec(ContainerSpec()
.withEnv(envs)
.withImage("image")
.withMounts(mounts)
)
.withNetworks(networks)
.withPlacement(ServicePlacement()
.withConstraints(constraints))
)
)要进一步澄清这一点,请执行以下操作:
我正在寻找docker-java方法来执行此命令(这确实有效!):
docker service create --with-registry-auth --constraint 'node.labels.mynodeid==7' myprivateregistry.foo:5000/imagename:latest如下所示删除--with-registry-auth
docker service create --constraint 'node.labels.mynodeid==7' myprivateregistry.foo:5000/imagename:latest将出现以下错误:No such image: myprivateregistry.foo:5000/imagename:latest,因为凭证(有效的btw )没有传递到节点。
发布于 2020-03-01 06:14:12
从docker-java 3.2.0-rc5开始,您现在可以指定authConfig从私有注册表中提取映像
AuthConfig authConfig = new AuthConfig()
.withUsername("testuser")
.withPassword("testpassword")
.withEmail("foo@bar.com")
.withRegistryAddress("your.registry.address.here");
dockerClient.createServiceCmd(new ServiceSpec()
.withName(SERVICE_NAME)
.withTaskTemplate(new TaskSpec()
.withContainerSpec(new ContainerSpec()
.withImage(DEFAULT_IMAGE))))
.withAuthConfig(authConfig)
.exec();发布于 2019-06-22 00:15:04
在代码中dockerClient对象本身中指定注册表身份验证详细信息。
查看this。
如果它不起作用。首先验证您拥有的注册表身份验证详细信息是否正确,然后使用docker cli手动尝试拉取docker镜像。
将注册表配置放在.docker/config.json文件中,并尝试拉取docker镜像。然后回溯问题。
https://stackoverflow.com/questions/56706612
复制相似问题