0

使用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因为有效的凭据未传递给节点。

4

2 回答 2

0

dockerClient在代码中的对象本身中指定注册表身份验证详细信息。

看看这个

如果没有奏效。首先验证您拥有的注册表身份验证详细信息是否正确,然后手动尝试使用 docker cli 拉取 docker 映像。

将注册表配置放入.docker/config.json文件并尝试拉取 docker 映像。然后回溯问题。

于 2019-06-21T16:15:04.333 回答
0

从 docker-java3.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();
于 2020-02-29T22:14:12.133 回答