docker-alpine: dl-cdn.alpinelinux.org errors

$ apk add --no-cache bash
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/6) Installing pkgconf (1.3.10-r0)
(2/6) Installing ncurses-terminfo-base (6.0_p20171125-r0)
(3/6) Installing ncurses-terminfo (6.0_p20171125-r0)
ERROR: ncurses-terminfo-6.0_p20171125-r0: Protocol error
(4/6) Installing ncurses-libs (6.0_p20171125-r0)
(5/6) Installing readline (7.0.003-r0)
(6/6) Installing bash (4.4.19-r1)
ERROR: bash-4.4.19-r1: Protocol error
Executing busybox-1.27.2-r7.trigger
2 errors; 5 MiB in 15 packages

Been getting this for a few days now.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 63
  • Comments: 82

Most upvoted comments

adding RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories fixed my issue

+1

Had this issue, but realized that it was a defective docker bridge or something. Restarting the daemon fixed it for me and the troubleshooting process was working back from DNS resolution, routing, etc from the pertinent host.

It’s DNS issue you can solve it by using the following steps:

  1. Find your DNS ip using below command nmcli dev show | grep ‘IP4.DNS’

IP4.DNS[1]: 192.168.0.1 <your-dns-ip-maybe-different>

  1. Create a file in the desktop which name is deamon.json and file has below data: { “dns”: [“192.168.0.1”, “8.8.8.8”] }

note: replace that ip “192.168.0.1” to your dns ip

  1. Go that directory /etc/docker/ in your system and paste file deamon.json that you just created

  2. Then restart your docker/your system, it will solve your issue.

In my case installing the latest libseccomp on my host fixed it. I had to download it manually on my latest raspbian as the latest version is not yet in the apt repos. The accepted answer in this “askubuntu” thread helped me: https://askubuntu.com/questions/1263284/apt-update-throws-signature-error-in-ubuntu-20-04-container-on-arm

Packages for debian(-based): https://packages.debian.org/sid/libseccomp2

Just download the one that fits your architecture and install with dpkg (again: only debian based). Example for raspbian: wget http://ftp.de.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.1-1_armhf.deb sudo dpkg -i libseccomp2_2.5.1-1_armhf.deb

fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/main: temporary error (try again later) WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory

CDN seems to be down again

as pointed out by @azyata its can be a problem with the DNS settings

If you are performing apk add inside the container, below might be helpful

From docs.docker.com:

By default, a container inherits the DNS settings of the Docker daemon including the /etc/hosts and /etc/resolv.conf

  1. Try to ping
ping dl-cdn.alpinelinux.org

if it doesn’t work

  1. Check DNS configuration in /etc/resolve.conf in host machine, try adding
nameserver 8.8.8.8

then perform ping

ping dl-cdn.alpinelinux.org

if it works for you, then

  1. Restart the docker daemon
sudo systemctl restart docker

^ This solved the problem for me.

@prawen RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories

fixed my issue before your $ apk add --no-cache bash

Also getting these errors.

$ # Error case
$ docker build -t sample  .
...
Step 4/18 : RUN apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata
 ---> Running in 97d093634b58
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz: IO ERROR
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz: IO ERROR
ERROR: unsatisfiable constraints:
  curl (missing):
    required by: world[curl]
  ffmpeg (missing):
    required by: world[ffmpeg]
  git (missing):
    required by: world[git]
  make (missing):
    required by: world[make]
  rtmpdump (missing):
    required by: world[rtmpdump]
  tzdata (missing):
    required by: world[tzdata]
The command '/bin/sh -c apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata' returned a non-zero code: 6

In the above case, obtaining via CDN was resolved by using the ‘–network=host’ option at build time.

docker build -t sample --network=host .

I got the above “unsatisfiable constraints” IO ERROR WARNING but I was able to curl(download) them from the host.

So I assumed that CDN wasn’t down but something wrong about docker’s network. I set the network as host by --network=host option and started to download. Hope this helps.

  • Docker: 18.06.3-ce
  • Base Image: Alpine Linux v3.10.3

In my case installing the latest libseccomp on my host fixed it. I had to download it manually on my latest raspbian as the latest version is not yet in the apt repos. The accepted answer in this “askubuntu” thread helped me: https://askubuntu.com/questions/1263284/apt-update-throws-signature-error-in-ubuntu-20-04-container-on-arm

Packages for debian(-based): https://packages.debian.org/sid/libseccomp2

Just download the one that fits your architecture and install with dpkg (again: only debian based). Example for raspbian: wget http://ftp.de.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.1-1_armhf.deb sudo dpkg -i libseccomp2_2.5.1-1_armhf.deb

Raspbian-user here. totally fixed it for me!

Not working for me any updates on this ,

This is annoying

fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.4/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.4/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory
2 errors; 11 distinct packages available
WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  curl (missing):
    required by: world[curl]
WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  pcre (missing):
    required by: world[pcre]
./mnt/install/install.sh: line 15: curl: not found
grep: unrecognized option: P

I’m having this issue in the middle of the pandemic with alpine!

Fixed with setting the network to host: docker build . --network=host

Just posting here in case somebody else lands here trough google and all of the above did not fix their problem.

On my raspberry Pi with docker i ran into the same issue yesterday: RUN apk add --no-cache acl fcgi file gettext git;

Results in:

fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/armv7/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/armv7/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: temporary error (try again later)
ERROR: unable to select packages:
  acl (no such package):
    required by: world[acl]
  fcgi (no such package):
    required by: world[fcgi]
  file (no such package):
    required by: world[file]
  gettext (no such package):
    required by: world[gettext]
  git (no such package):
    required by: world[git]
The command '/bin/sh -c apk add --no-cache              acl             fcgi            file            gettext          git     ;' returned a non-zero code: 5

My search eventually landed me on:

docker-library/php#1118

From which i took away two things:

  • The cause seems to be a ipv6 issue
  • Alpine v3.12 does not seem to have the issue

Downgrading from alpine3.13 to alpine3.12 solved it for me.

Had the same error trying to build an alpine-sdk docker using Docker Windows 10. Checked the status of the server, and the server was fine and reachable outside docker.

Restarting docker did the trick for me. Looking in the Docker log file it’s clear that the DNS configuration was set incorrectly. So when seeing this error in a docker context, try to restart docker first.

I tried most of the previous tips; however, only this one work for me.

  1. Check available networks

docker network ls

output … a81de1c029c9 host host local

  1. Building image with --network=host

docker image build … --network=host .

Replacing http to https in /etc/apk/repositories fix this issue for me

sed -i -e 's/http:/https:/' /etc/apk/repositories

While building, using **--network=host** option solved fetching from CDN for me.

docker build -t sample --network=host .
$ # Results without --network option
$ docker build -t sample  .
...
Step 4/18 : RUN apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata
 ---> Running in 97d093634b58
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz: IO ERROR
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz: IO ERROR
ERROR: unsatisfiable constraints:
  curl (missing):
    required by: world[curl]
  ffmpeg (missing):
    required by: world[ffmpeg]
  git (missing):
    required by: world[git]
  make (missing):
    required by: world[make]
  rtmpdump (missing):
    required by: world[rtmpdump]
  tzdata (missing):
    required by: world[tzdata]
The command '/bin/sh -c apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata' returned a non-zero code: 6

I got the above “IO ERROR WARNING” but I was able to curl(download) them from the host. So I assumed that CDN wasn’t down but something wrong about docker’s network.

I set the networking mode as host for the RUN instructions during build by adding --network=host option and started to download. Hope this helps.

* Docker: 18.06.3-ce

* Base Image: Alpine Linux v3.10.3

This solved my problem to build my docker image. Thank you

If you do not know what the reason is, then it is probably DNS

  • 8.8.8.8 cannot resolve dl-cdn.alpinelinux.org
  • ns1.alpinelinux.org can resolve dl-cdn.alpinelinux.org
  • dl-cdn.alpinelinux.org is CNAME for global.prod.fastly.net
  • ns1.alpinelinux.org cannot resolve global.prod.fastly.net
  • 8.8.8.8 can resolve global.prod.fastly.net
dig http://dl-cdn.alpinelinux.org

; <<>> DiG 9.10.3-P4-Ubuntu <<>> http://dl-cdn.alpinelinux.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 11102
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;http://dl-cdn.alpinelinux.org.	IN	A

;; AUTHORITY SECTION:
alpinelinux.org.	899	IN	SOA	ns1.alpinelinux.org. webmaster.alpinelinux.org. 20180406 1800 1800 3600 3600

;; Query time: 95 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Apr 26 11:28:52 CEST 2018
;; MSG SIZE  rcvd: 108
dig @ns1.alpinelinux.org dl-cdn.alpinelinux.org

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @ns1.alpinelinux.org dl-cdn.alpinelinux.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29219
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dl-cdn.alpinelinux.org.		IN	A

;; ANSWER SECTION:
dl-cdn.alpinelinux.org.	3600	IN	CNAME	global.prod.fastly.net.

;; Query time: 150 msec
;; SERVER: 74.117.189.114#53(74.117.189.114)
;; WHEN: Thu Apr 26 11:29:27 CEST 2018
;; MSG SIZE  rcvd: 87

dig @ns1.alpinelinux.org global.prod.fastly.net

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @ns1.alpinelinux.org global.prod.fastly.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 45878
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;global.prod.fastly.net.		IN	A

;; Query time: 151 msec
;; SERVER: 74.117.189.114#53(74.117.189.114)
;; WHEN: Thu Apr 26 11:29:40 CEST 2018
;; MSG SIZE  rcvd: 51
dig @8.8.8.8 global.prod.fastly.net

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 global.prod.fastly.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24521
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;global.prod.fastly.net.		IN	A

;; ANSWER SECTION:
global.prod.fastly.net.	29	IN	A	151.101.0.249
global.prod.fastly.net.	29	IN	A	151.101.64.249
global.prod.fastly.net.	29	IN	A	151.101.128.249
global.prod.fastly.net.	29	IN	A	151.101.192.249

;; Query time: 41 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Apr 26 11:29:52 CEST 2018
;; MSG SIZE  rcvd: 115

Adding --network=host in the build command fixed my issue.

In my situation was wrong /etc/resolv.conf file. Just check in a container ping dl-cdn.alpinelinux.org

Replacing http to https in /etc/apk/repositories fix this issue for me

sed -i -e 's/http:/https:/' /etc/apk/repositories

wesome, you are the most correct answer! Thank you very much. I applaud you.

Dirty hack for resolving this without changing daemon settings:

RUN \
    # DNS problem workaround
    # https://github.com/gliderlabs/docker-alpine/issues/386
    printf "nameserver 8.8.8.8\nnameserver 9.9.9.9\nnameserver 1.1.1.1" > /etc/resolv.conf \
    \
    && apk add --no-cache bash

Notice that it only affect current layer, in other layers you should add this patch too if needed.

Also you can pass custom DNS server from the ARGs.

I’m behind a proxy and I experienced a similar error:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.10/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.10/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
2 errors; 15 distinct packages available

I solved it by creating a daemon.json file in /etc/docker/

sudo nano /etc/docker/daemon.json

and inserting:

{
  "bip": "192.168.1.5/24"
}

Restart docker and try again:

sudo systemctl daemon-reload
sudo systemctl restart docker

If I were to guess I’d say that docker bridge0 clash with the proxy in some way?

I had a similar issue, but I have solved it by using args --network=host eg. docker build --network=host -t myimage .

Have been using just alpine and obviously it picks the latest version, in my case, it was v3.15.

Downgrading to alpine:3.12 worked.

Downgrading from alpine3.13 to alpine3.12 solved it for me.

had the same problem and with alpine 3.12 it works.

I found a few different solutions for this issue on CentOS8 from: https://stackoverflow.com/a/64240450/2971264

firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --reload

Works

and so does changing the folling parameter in the conf file /etc/firewalld/firewalld.conf to: FirewallBackend=iptables

and then so sudo service firewalld restart

I found that my corporate firewall wouldn’t allow me to download via HTTP. Looking at https://mirrors.alpinelinux.org/ I found https://alpine.global.ssl.fastly.net/alpine to be my closest mirror. I replaced the default repositories by adding

RUN echo -e "https://alpine.global.ssl.fastly.net/alpine/v3.11/main\nhttps://alpine.global.ssl.fastly.net/alpine/v3.11/community\n" > /etc/apk/repositories

to switch to a mirror that supported HTTPS.

This works for me RUN sed -i 's/dl-cdn/nl/' /etc/apk/repositories

While building, using --network=host option solved fetching from CDN for me.

docker build -t sample --network=host .
$ # Results without --network option
$ docker build -t sample  .
...
Step 4/18 : RUN apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata
 ---> Running in 97d093634b58
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz: IO ERROR
...

I got the above “IO ERROR WARNING” but I was able to curl(download) them from the host. So I assumed that CDN wasn’t down but something wrong about docker’s network.

I believe this happens when MTU in the container differs from the MTU on the host. What happens is that Fastly filters out need-to-frag ICMP packets so Path MTU is broken on fastly (and dl-cdn.alpinelinux.org).

same issue on alpine:3.14 and alpine:3.13 Downgrading to alpine:3.12 is working back again for me. Using macOS, tried restarting Daemon and all other solutions here, only downgrading is working for me

While building, using --network=host option solved fetching from CDN for me.

docker build -t sample --network=host .
$ # Results without --network option
$ docker build -t sample  .
...
Step 4/18 : RUN apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata
 ---> Running in 97d093634b58
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/main/armhf/APKINDEX.tar.gz: IO ERROR
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.10/community/armhf/APKINDEX.tar.gz: IO ERROR
ERROR: unsatisfiable constraints:
  curl (missing):
    required by: world[curl]
  ffmpeg (missing):
    required by: world[ffmpeg]
  git (missing):
    required by: world[git]
  make (missing):
    required by: world[make]
  rtmpdump (missing):
    required by: world[rtmpdump]
  tzdata (missing):
    required by: world[tzdata]
The command '/bin/sh -c apk add --no-cache --update   ca-certificates   curl   ffmpeg   git   make   rtmpdump   tzdata' returned a non-zero code: 6

I got the above “IO ERROR WARNING” but I was able to curl(download) them from the host. So I assumed that CDN wasn’t down but something wrong about docker’s network.

I set the networking mode as host for the RUN instructions during build by adding --network=host option and started to download. Hope this helps.

* Docker: 18.06.3-ce

* Base Image: Alpine Linux v3.10.3

docker build -t sample --network=host . working for me, thank you very much

Here are lots of smart solutions to test. But, as an initial try, please just restart the daemon first. It worked for me. sudo systemctl restart docker.service

Guess you got docker dns issue

adding RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories fixed my issue

it is ok thinks

Just rebooted my Ubuntu and it solved this issue.

update my server DNS to Google DNS 8.8.8.8 8.8.4.4 solve this for me

Had the same problem with php 7.4 alpine image in Ubuntu inside Windows (WSL2). I was trying to install the imagick extension via pecl and kept getting “No releases available for package pecl.php.net/imagick” error. Changing the nameserver to google’s 8.8.8.8 solved it for me. Thank you.

$ sudo vi /etc/resolv.conf # change nameserver to 8.8.8.8

I had disabled firewalld with no joy. I restarted docker and the issue was fixed.

This is wild. Repos constantly just break and anytime you have a new vm you need to troubleshoot all of this over again?

I’m behind a proxy and I experienced a similar error:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.10/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.10/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
2 errors; 15 distinct packages available

I solved it by creating a daemon.json file in /etc/docker/

sudo nano /etc/docker/daemon.json

and inserting:

{
  "bip": "192.168.1.5/24"
}

Restart docker and try again:

sudo systemctl daemon-reload
sudo systemctl restart docker

If I were to guess I’d say that docker bridge0 clash with the proxy in some way?

Solved with this solution. Thanks!!!

https://docs.docker.com/network/bridge/

update my server DNS to Google DNS 8.8.8.8 8.8.4.4 solve this for me

I had the same issue. I solved by putting proxy inside docker cointainer.

docker exec -it reports sh export http_proxy=http://ipaddress:port/ export https_proxy=http://ipaddress:port/ apk add --update ttf-dejavu

It downloaded required library with 200 OK exit status

Please use docker run -e OR docker build --build-arg to pass http_proxy env variable required for apk package manager

Seems your docker can not go out of host machine. Maybe this can help:

iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE