【问题标题】:Unable to run pgadmin4 docker on Ubuntu 18.04 LTS无法在 Ubuntu 18.04 LTS 上运行 pgadmin4 docker
【发布时间】:2020-08-16 11:59:55
【问题描述】:

你好 StackOverflowers,

我正在尝试在Ubuntu 18.04 LTS 中使用Docker 安装pgadmin4,但每次创建容器时它都会崩溃。

这是我使用的命令:

docker run -p 8082:80 --name pgadmin_server \
-e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
-e 'PGADMIN_DEFAULT_PASSWORD=password' \
 dpage/pgadmin4

这是我得到的结果

standard_init_linux.go:211: exec user process caused "exec format error"

当我运行docker container ls -a 时,这就是我得到的。我的容器已关闭

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES
034b89accaae        dpage/pgadmin4      "/entrypoint.sh"         5 minutes ago       Exited (1) 4 minutes ago                            pgadmin_server
1e660903663e        postgres:9.2        "docker-entrypoint.s…"   48 minutes ago      Up 48 minutes              0.0.0.0:5432->5432/tcp   postgres_container

这是我使用的 docker 版本:

Docker version 19.03.6, build 369ce74a3c

顺便说一句,我在 32 位机器上运行 Ubuntu 18.04 LTS

感谢您的帮助

【问题讨论】:

  • dpage/pgadmin4 图像以及大多数其他图像很有可能仅适用于 64 位平台。
  • @larsks 请问,你知道如何判断一个图像是为 64 位架构构建的,还是为 32 位架构构建的?

标签: docker ubuntu ubuntu-18.04 pgadmin pgadmin-4


【解决方案1】:

当您在本地构建映像时,默认情况下它将为与本地主机相同的架构构建。由于如今大多数 x86 系统都是 64 位系统(以至于许多发行版已经放弃对 32 位 x86 架构的支持),这意味着您找到的绝大多数图像只能在 x86_64 系统上运行。

在“官方”图像中找到多架构支持更为常见:

Docker Hub 上的大部分官方镜像都提供了多种架构。例如,busybox 镜像支持 amd64、arm32v5、arm32v6、arm32v7、arm64v8、i386、ppc64le 和 s390x。在 x86_64 / amd64 机器上运行此映像时,将拉取并运行 x86_64 变体。

(该引用来自以下链接)

虽然有 support for building multi-architecture images,但需要构建映像的人进行明确配置。

我不认为 Docker 提供任何工具来方便地探索给定映像的支持架构。您可以使用skopeo 工具来执行此操作,尽管该过程仍然有点不明显。要查看多架构映像的架构列表,我们需要使用--raw 选项:

$ skopeo inspect --raw docker://busybox | python -mjson.tool | grep -i architecture
                "architecture": "amd64",
                "architecture": "arm",
                "architecture": "arm",
                "architecture": "arm",
                "architecture": "arm64",
                "architecture": "386",
                "architecture": "mips64le",
                "architecture": "ppc64le",
                "architecture": "s390x",

对于单一架构图像,以上将不会产生任何结果;在这种情况下,删除--raw 以查看架构:

$ skopeo inspect docker://dpage/pgadmin4 | python -mjson.tool | grep -i architecture
    "Architecture": "amd64",

【讨论】:

  • 感谢您提供这些见解。实际上,我使用的图像不支持 32 位架构。我在 64 位上试了一下,效果很好。
猜你喜欢
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多