Установочный пакет Alpine Linux без интернета (докер) - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать образ Docker с помощью Alpine, и мне нужно только установить некоторые пакеты (apk add), но без интернета, потому что наша среда разработки не позволяет подключаться к Интернету.Поэтому я копирую APK в / temp и пытаюсь установить оттуда.Как написано в документации добавить локальный пакет Но все же он пытается получить доступ в Интернет для получения индекса ... Я не хочу этого.Это возможно?

FROM alpine:3.8
COPY ./apk/* /tmp/
RUN apk add --allow-untrusted --no-network --no-cache /tmp/ca-certificates-20171114-r3.apk /tmp/libcurl-7.61.1-r1.apk /tmp/libssh2-1.8.0-r3.apk /tmp/nghttp2-libs-1.32.0-r0.apk /tmp/curl-7.61.1-r1.apk

ENTRYPOINT ["/usr/bin/curl"]

(и да, этот образ доступен на DockerHub, но нам нужно создать его самостоятельно)

1 Ответ

0 голосов
/ 13 января 2019

Да, это возможно.Это что-то вроде хака :) Менеджеру пакетов Alpine (apk) всегда нужен репозиторий для индексации при установке пакетов (apk add).Но можно предоставить ему пустой список репозиториев и определить его во время команды установки (apk add --repositories-file=).

Dockerfile is:

FROM alpine:3.8
COPY ./apk/* /tmp/
RUN touch repo.list && apk add --repositories-file=repo.list --allow-untrusted --no-network --no-cache /tmp/ca-certificates-20171114-r3.apk /tmp/libcurl-7.61.1-r1.apk /tmp/libssh2-1.8.0-r3.apk /tmp/nghttp2-libs-1.32.0-r0.apk /tmp/curl-7.61.1-r1.apk

ENTRYPOINT ["/usr/bin/curl"]

И мы получим:

$ docker build . --no-cache 
Sending build context to Docker daemon    663kB
Step 1/4 : FROM alpine:3.8
 ---> 11cd0b38bc3c
Step 2/4 : COPY ./apk/* /tmp/
 ---> 31248015db45
Step 3/4 : RUN touch repo.list && apk add --repositories-file=repo.list --allow-untrusted --no-network --no-cache /tmp/ca-certificates-20171114-r3.apk /tmp/libcurl-7.61.1-r1.apk /tmp/libssh2-1.8.0-r3.apk /tmp/nghttp2-libs-1.32.0-r0.apk /tmp/curl-7.61.1-r1.apk
 ---> Running in b8d214219e03
(1/5) Installing ca-certificates (20171114-r3)
(2/5) Installing nghttp2-libs (1.32.0-r0)
(3/5) Installing libssh2 (1.8.0-r3)
(4/5) Installing libcurl (7.61.1-r1)
(5/5) Installing curl (7.61.1-r1)
Executing busybox-1.28.4-r0.trigger
Executing ca-certificates-20171114-r3.trigger
OK: 6 MiB in 18 packages
Removing intermediate container b8d214219e03
 ---> 3e36700c3641
Step 4/4 : ENTRYPOINT ["/usr/bin/curl"]
 ---> Running in 32abd512c88e
Removing intermediate container 32abd512c88e
 ---> bd915c91c7ec
Successfully built bd915c91c7ec
...