Как установить пакеты Alpine Linux в образе Docker gliderlabs / alpine, когда apk add не работает? - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу установить пакеты Alpine, такие как python, в образе Docker, но когда я запускаю docker build - < Dockerfile (или строю с использованием IntelliJ), я получаю

ERROR: unsatisfiable constraints:
  /bin/sh (virtual):
    provided by: busybox
    required by:
                 alpine-baselayout-3.1.0-r0[/bin/sh]
                 alpine-baselayout-3.1.0-r0[/bin/sh]
The command '/bin/sh -c apk add --update python' returned a non-zero code: 2

Я используюследующий Dockerfile, который я получил из документов на github.com / gliderlabs / docker-alpine / blob / master / docs / использовании.md

FROM gliderlabs/alpine:latest
RUN apk add --update python

Та же ошибка при использованииизображение докера в интерактивном режиме

Когда я использую docker run -it gliderlabs/alpine:latest /bin/sh, а затем apk add --update python или apk add python, я получаю ту же ошибку.

Когда я делаю apk update, я получаю OK: 9543 distinct packages available, но когда я делаю apk upgrade, я получаю ту же ошибку.

Системная информация

Я использую Arch Linux 4.19.8.

Идентификатор изображения gliderlabs /alpine: последняя sha256:673b8178133a04ed1de21d6cf1a729f8aaf9469d4550005ede89e7142efd9459.

Вывод docker run gliderlabs/alpine:latest which apk равен /sbin/apk.

Версия докера 18.09.0-ce.

Соответствующая другая информация

Docker Alpine / bin / sh apk не найден выглядит аналогично (хотя и в CentOS), но не имеет разрешения, один комментарий ссылается на:

/ bin /sh: 1: apk: не найден, покаСоздаем образ докера , но ответ на этот вопрос - переключиться на apk, что я уже делаю (документы достаточно ясны по этому поводу).

Докер: Использование apt-key с alpineimage также предлагает использовать apk add, что я и делаю.

Edit

Как подсказывает @larsks, вы можете запустить apk search --update python | grep '^python'и это показывает мне, что у меня есть python3-3.6.6-r0 в наличии, но не python.Однако, когда я пытаюсь apk add python3-3.6.6-r0, я получаю

ERROR: unsatisfiable constraints:
  python3-3.6.6-r0 (missing):
    required by: world[python3-3.6.6-r0]
  /bin/sh (virtual):
    provided by: busybox
    required by: alpine-baselayout-3.1.0-r0[/bin/sh] alpine-baselayout-3.1.0-r0[/bin/sh]

Кроме того, это не объясняет, почему apk upgrade терпит неудачу с той же ошибкой, что и apk add python.

Когда я пытаюсь apk add --update python3 Я получаю

fetch http://alpine.gliderlabs.com/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://alpine.gliderlabs.com/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  /bin/sh (virtual):
    provided by: busybox
    required by: alpine-baselayout-3.1.0-r0[/bin/sh] alpine-baselayout-3.1.0-r0[/bin/sh]

1 Ответ

0 голосов
/ 17 декабря 2018

В текущих альпийских изображениях нет пакета python.Если вы посмотрите на вывод apk search --update python, вы найдете:

/ # apk search python | grep '^python'
[...]
python2-2.7.15-r1
python3-3.6.6-r0
[...]

То есть вам нужно будет явно установить либо python2, либо python3 в зависимости от того, какую версию вы хотите.

Итак, с последним образом Alpine (3.8) я могу успешно установить python3, выполнив:

/ # apk add --update python3
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/11) Installing libbz2 (1.0.6-r6)
(2/11) Installing expat (2.2.5-r0)
(3/11) Installing libffi (3.2.1-r4)
(4/11) Installing gdbm (1.13-r1)
(5/11) Installing xz-libs (5.2.4-r0)
(6/11) Installing ncurses-terminfo-base (6.1_p20180818-r1)
(7/11) Installing ncurses-terminfo (6.1_p20180818-r1)
(8/11) Installing ncurses-libs (6.1_p20180818-r1)
(9/11) Installing readline (7.0.003-r0)
(10/11) Installing sqlite-libs (3.24.0-r0)
(11/11) Installing python3 (3.6.6-r0)
Executing busybox-1.28.4-r1.trigger
OK: 67 MiB in 24 packages

Вторая проблема, о которой вы сообщили, по-видимому, связана с тем, чтовы используете gliderlabs/alpine изображение, а не официальные alpine изображения.Я вижу ту же проблему, если использую gliderlabs/alpine, но все работает, используя alpine.Изображение gliderlabs/alpine кажется плохим.

...