使用自定义基础映像使用臂架构建Docker映像时发生未经授权的错误

我必须创建一个docker映像,从一个基本发行版的基本映像开始,并添加一些自定义文件。我在Spring Boot项目中将JIB与maven一起使用。 我正在使用Docker工具箱在Windows 7上工作。 这是我目前要执行的步骤:

1)使用以下条目创建 Dockerfile

FROM gcr.io/distroless/java:8
COPY known_hosts  ~/.ssh/known_hosts
EXPOSE 8888

2)执行命令:

docker build -t conf_server_image .

3)在pom.xml上添加了以下几行:

          <plugin>
              <groupId>com.google.cloud.tools</groupId>
              <artifactId>jib-maven-plugin</artifactId>
              <version>2.1.0</version>
              <configuration>
                <from>
                    <image>conf_server_image:latest</image>
                </from>
                <to>
                  <image>${project.artifactId}:${project.version}</image>
                </to>
                <container>
                    <jvmflags>
                        <jvmflag>-Xms512m</jvmflag>
                        <jvmflag>-Xmx512m</jvmflag>
                    </jvmflags>
                </container>
              </configuration>
            </plugin>

4)执行命令(带有我的docker.io的ID pwd):

docker login

4)执行构建命令

mvnw clean compile jib:dockerBuild

但是该过程返回此错误:

[INFO] Executing tasks:
[INFO] [============                  ] 40,0% complete
[INFO] > building image to Docker daemon
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  12.941 s
[INFO] Finished at: 2020-04-10T11:26:59+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.1.0:dockerBuild (default-cli) on project sirio-configuration-server: Build to Docker daemon failed,pe
haps you should make sure your credentials for 'registry-1.docker.io/library/conf_server_image' are set up correctly. See https://github.com/GoogleContainerTools/jib/blob/mast
r/docs/faq.md#what-should-i-do-when-the-registry-responds-with-unauthorized for help: Unauthorized for registry-1.docker.io/library/conf_server_image: 401 Unauthorized
[ERROR] {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/conf_server_image","action":"pull"}]}]}
[ERROR] -> [Help 1]
[ERROR]

我忘记了什么? 谢谢

gaolvsuan 回答:使用自定义基础映像使用臂架构建Docker映像时发生未经授权的错误

conf_server_image:latest作为映像参考指向Docker Hub(library/conf_server_image:latest的别名)。例如,在Dockerfile中,当您说

FROM openjdk:11-jre-slim

Docker CLI在Docker Hub上下载openjdk映像。

$ docker pull openjdk:11-jre-slim
11-jre-slim: Pulling from library/openjdk
...

注意图像参考library/openjdk

要使Jib在本地Docker守护程序中加载映像,您应该说<image>docker://conf_server_image:latest</image>。但是,使用来自Docker守护程序的映像会产生一些开销(这可以忽略不计)。因此,最好将基本映像推送到任何容器注册表(本地私有注册表也可以工作),并让Jib使用该映像。 Jib确实会缓存基本映像,因此在注册表中使用映像并不意味着Jib会反复下载它。 (但是,当然,如果标记指向的图像已更新,Jib将自动下载更新的图像。)

还有另一个选择,您可以摆脱第一步Dockerfile。 Jib允许adding any arbitrary files通过<extraDirectories>功能进入图像。默认目录为src/main/jib,因此,例如,如果放置src/main/jib/foo/bar.txt,则在构建的映像中将有/foo/bar.txt。但是,据我了解,您可能不希望将个人known_hosts放入源存储库。 (可能您可以设置一个特殊的dev Maven配置文件,例如,使用Maven资源插件中的known_hosts目标将src/main/jib复制到copy-resources中。)

您还可以在Jib中设置一些容器配置,包括端口。

<configuration>
  <container>
    ...
    <ports>
      <port>8888</port>
    </ports>
  </container>
</configuration>

最后,因为您使用的是jib:dockerBuild,所以我认为docker login是不必要的。

本文链接:https://www.f2er.com/2471767.html

大家都在问