无法使用 fabric8 插件推送 docker 图像

Unable to push docker image with fabric8 plugin

我无法使用 fabric8 插件将 docker 图像推送到私有存储库(托管在 https://hub.docker.com 上)。我在 hub.docker 上创建了一个名为:manuzid/heap-dump-sample 的存储库。这是一个简单的 Spring 启动应用程序,仅在主函数中有一个循环。有趣的部分是 pom.xml 中的以下内容:

<plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.27.2</version>
            <configuration>
                <registry>index.docker.io/v1</registry>
                <!-- I think it's not necessary, plugin use the creds from docker config.json -->
                <authConfig>
                    <username>user</username>
                    <password>pw</password>
                </authConfig>
                <images>
                    <image>
                        <name>manuzid/heap-dump-sample:%l</name>
                        <alias>${project.artifactId}</alias>
                        <build>
                            <from>greyfoxit/alpine-openjdk8</from>
                            <entryPoint>
                                <exec>
                                    <arg>java</arg>
                                    <arg>-jar</arg>
                                    <arg>/opt/application/${project.artifactId}-${project.version}.jar</arg>
                                    <arg>-XX:+HeapDumpOnOutOfMemoryError</arg>
                                    <arg>-XX:HeapDumpPath=/dumps/oom.hprof</arg>
                                </exec>
                            </entryPoint>
                            <tags>
                                <tag>${project.version}</tag>
                            </tags>
                            <assembly>
                                <targetDir>/opt/application</targetDir>
                                <descriptorRef>artifact</descriptorRef>
                            </assembly>
                            <env>
                                <AB_ENABLED>jmx_exporter</AB_ENABLED>
                            </env>
                        </build>
                        <run>
                            <wait>
                                <log>Started HeapDumpSampleApplication</log>
                                <time>10000</time>
                            </wait>
                            <env>
                                <JAVA_OPTIONS>-Xmx64m</JAVA_OPTIONS>
                            </env>
                            <log>
                                <file>${project.build.directory}/heap-dump-sample.log</file>
                            </log>
                        </run>
                    </image>
                </images>
            </configuration>
            <executions>
                <execution>
                    <id>docker-build</id>
                    <phase>package</phase>
                    <goals>
                        <goal>build</goal>
                    </goals>
                    <configuration>
                        <filter>${project.artifactId}</filter>
                    </configuration>
                </execution>
                <execution>
                    <id>docker-push</id>
                    <phase>install</phase>
                    <goals>
                        <goal>push</goal>
                    </goals>
                    <configuration>
                        <filter>${project.artifactId}</filter>
                    </configuration>
                </execution>
            </executions>
        </plugin>

我在控制台中收到以下错误:[ERROR] DOCKER> Unable to push 'manuzid/heap-dump-sample:latest' from registry 'index.docker.io/v1' : denied: requested access to the resource is denied [denied: requested access to the resource is denied ]

但指定的凭据与我用于登录网站的凭据相同 (https://hub.docker.com)。指定注册表urlindex.docker.io/v1是用命令docker info获取的。

对此有什么建议吗?提前致谢。

编辑:此示例可在此处找到:https://github.com/ManuZiD/heap-dump-sample

我在拉取和推送图像方面遇到了问题,通过研究我不完全记得我能够通过修改我的 Docker credentials store

来解决这个问题

注意执行docker登录将创建此文件并覆盖其内容(我建议备份!

config.json的内容应该是这样的:

{
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.12 (windows)"
    },
    "auths": {
        "https://hub.docker.com/v1/": {
            "auth": "AUTH-TOKEN"
        },
        "https://index.docker.io/v1/": {
            "auth": "AUTH-TOKEN"
        }
    },
    "credsStore": "desktop",
    "stackOrchestrator": "swarm"
}

AUTH-TOKEN需要包含base64{docker-user-id:docker-password}:

echo "docker-user-id:docker-password" | base64

注意这可以使用

解码
echo AUTH-TOKEN | base64 -d

警告切勿共享您的 config.json 文件的内容!

这是我的 windows 客户端凭据,您会从 user-agent 详细信息中注意到这一点。 OSX 用户可能更喜欢使用 OSX key-chain