首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker集线器镜像失败,但构建其Dockerfile工作。这是怎么回事?

Docker集线器镜像失败,但构建其Dockerfile工作。这是怎么回事?
EN

Stack Overflow用户
提问于 2020-12-30 21:18:04
回答 1查看 143关注 0票数 0

我最近经常使用Docker-compose,但这次我发现了一个我真的想使用的容器,但docker集线器的图像与我的arm/v6覆盆子pi不兼容。无论如何,使用它都会导致

代码语言:javascript
运行
复制
standard_init_linux.go:219: exec user process caused: exec format error

奇怪的是,复制Dockerfile并使用

代码语言:javascript
运行
复制
    build:
      context: ./ttrss-docker/src/app

结果,该应用程序运行良好。但是由于某些原因,我不能使用dockerhub的镜像。

如果重要的话,Dockerfile是this,Docker Hub镜像是this

代码语言:javascript
运行
复制
FROM alpine:3.12
EXPOSE 9000/tcp

RUN apk add --no-cache dcron php7 php7-fpm \
    php7-pdo php7-gd php7-pgsql php7-pdo_pgsql php7-mbstring \
    php7-intl php7-xml php7-curl php7-session \
    php7-dom php7-fileinfo php7-json \
    php7-pcntl php7-posix php7-zip php7-openssl \
    git postgresql-client sudo

ADD startup.sh /
ADD updater.sh /
ADD index.php /
ADD dcron.sh /
ADD backup.sh /etc/periodic/weekly/backup

RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php7/php-fpm.d/www.conf
RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php7/php.ini

RUN mkdir -p /var/www

CMD /startup.sh

问:如果我不使用Docker hubs镜像,Watchtower可以更新我的容器吗?如果没有,有没有人知道发生了什么,以及我如何才能实现一个通过Watchtower更新的容器?

非常感谢:)

EN

回答 1

Stack Overflow用户

发布于 2020-12-30 22:40:31

您拉取的镜像仅针对单个架构构建: amd64。生成的二进制文件和库不能在其他平台上使用,比如Raspberry Pi使用的ARM。下面是验证这一点的调试步骤。

清单是application/vnd.docker.distribution.manifest.v2+json

代码语言:javascript
运行
复制
$ regctl image manifest --list cthulhoo/ttrss-fpm-pgsql-static
{                                                                                        
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 4257,                                                      
    "digest": "sha256:916ae5126809992b922c5db0f41e62a40be245703685e19f51797db95f312e81"
  },
  ...

检查该映像的体系结构:

代码语言:javascript
运行
复制
$ regctl image inspect cthulhoo/ttrss-fpm-pgsql-static --format '{{.Architecture}}'                                    
amd64 

这将需要由映像创建者进行修复,以便为ARM平台构建映像,您可以在高山基础映像中看到这一点。

代码语言:javascript
运行
复制
$ regctl image manifest --list alpine:3.12        
{                                                          
  "schemaVersion": 2,    
  "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
  "manifests": [
    {                                             
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
      "size": 528,       
      "digest": "sha256:074d3636ebda6dd446d0d00304c4454f468237fdacf08fb0eeac90bdbfa1bac7",
      "platform": {
        "architecture": "amd64",                 
        "os": "linux"                                                                                                                                                                                                                                                           
      }           
    },
    {
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
      "size": 528,
      "digest": "sha256:096ebf69d65b5dcb3756fcfb053e6031a3935542f20cd7a8b7c59e1b3cb71558",
      "platform": {
        "architecture": "arm",
        "os": "linux",
        "variant": "v6"
      }
    },
    {
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
      "size": 528,
      "digest": "sha256:299294be8699c1b323c137f972fd0aa5eaa4b95489c213091dcf46ef39b6c810",
      "platform": {
        "architecture": "arm",
        "os": "linux",
        "variant": "v7"
      }
    },
    ...

构建多平台映像通常是使用buildx完成的。上面使用的regctl命令是我的regclient项目的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65507599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档