Невозможно запустить pgadmin4 docker в Ubuntu 18.04 LTS - PullRequest
0 голосов
/ 02 мая 2020

Hello StackOverflowers,

Я пытаюсь установить pgadmin4, используя Docker в Ubuntu 18.04 LTS, но каждый раз, когда я создаю контейнер, он падает.

Вот команда, которую я использую:

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

Кстати, я использую Ubuntu 18.04 LTS на 32-битной машине

Спасибо за помощь

1 Ответ

1 голос
/ 02 мая 2020

Когда вы создаете образ локально, он будет по умолчанию построен для той же архитектуры, что и ваш локальный хост. Поскольку в наши дни большинство систем x86 являются 64-разрядными (до того момента, когда во многих дистрибутивах пропала поддержка 32-разрядной архитектуры x86), это означает, что подавляющее большинство изображений, которые вы обнаружите, будут работать только в системах x86_64.

Чаще встречается поддержка multiarch в «официальных» изображениях:

Большинство официальных изображений в Docker Hub предоставляют различные архитектуры. Например, изображение busybox поддерживает amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386, ppc64le и s390x. При запуске этого образа на компьютере x86_64 / amd64 вариант x86_64 будет извлечен и запущен.

(эта цитата взята из следующей ссылки)

Пока есть поддержка построения мультиархитектурных образов , которая требует явной настройки лицом, создающим образ.

Я не верю, что 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",
...