Docker Alpine软件包安装协议错误

Docker Alpine软件包安装协议错误,docker,alpine,Docker,Alpine,我正在尝试在alpine3.6上安装git。它在第一个实例中失败,出现协议错误,但在第二个实例中有效。具体地说,pcre和libcurl没有首先安装。这是我要做的事情的记录 $ docker run -it alpine:3.6 /bin/sh / # apk --update add git fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpine

我正在尝试在alpine
3.6
上安装git。它在第一个实例中失败,出现
协议错误
,但在第二个实例中有效。具体地说,
pcre
libcurl
没有首先安装。这是我要做的事情的记录

$ docker run -it alpine:3.6 /bin/sh
/ # apk --update add git
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
(1/6) Installing ca-certificates (20161130-r2)
(2/6) Installing libssh2 (1.8.0-r1)
(3/6) Installing libcurl (7.56.1-r0)
ERROR: libcurl-7.56.1-r0: Protocol error
(4/6) Installing expat (2.2.0-r1)
(5/6) Installing pcre (8.41-r0)
ERROR: pcre-8.41-r0: Protocol error
(6/6) Installing git (2.13.5-r0)
Executing busybox-1.26.2-r9.trigger
Executing ca-certificates-20161130-r2.trigger
2 errors; 24 MiB in 15 packages
/ # git
Error loading shared library libpcre.so.1: No such file or directory (needed by /usr/bin/git)
Error relocating /usr/bin/git: pcre_compile: symbol not found
Error relocating /usr/bin/git: pcre_exec: symbol not found
Error relocating /usr/bin/git: pcre_maketables: symbol not found
Error relocating /usr/bin/git: pcre_study: symbol not found
Error relocating /usr/bin/git: pcre_free: symbol not found
不过,再次安装
pcre
/
git
仍然有效

/ # apk add pcre
(1/2) Installing libcurl (7.56.1-r0)
(2/2) Installing pcre (8.41-r0)
OK: 25 MiB in 17 packages
/ # git
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]
/#apk添加pcre
(1/2)安装libcurl(7.56.1-r0)
(2/2)安装pcre(8.41-r0)
好的:17个包中有25个MiB
/#吉特
用法:git[--version][--help][-C][-C name=value]
[--exec path[=][--html path][--man path][--info path]
[-p |--paginate |--无寻呼机][--无替换对象][--bare]
[--git dir=][--work tree=][--namespace=]
[]
我也遇到了这个问题(令人惊讶的是,它是确定性的),而更改镜像也起了作用。例如,请执行以下操作:

$ echo "https://mirror.csclub.uwaterloo.ca/alpine/v3.7/main" >/etc/apk/repositories
$ echo "https://mirror.csclub.uwaterloo.ca/alpine/v3.7/community" >>/etc/apk/repositories

将镜像更改为UWaterloo服务器。您可以找到镜像的完整列表。

Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了。请参见帮助中心中的。也许或者会是一个更好的地方来询问阿尔卑斯山和apk的包问题。@matt Docker确实使开发和运营之间的分离变得模糊。我确信上面提到的人是一名开发人员,在docker容器中安装软件包现在是正常开发工作流程的一部分。毫无疑问,他们是这样的,我只是不确定添加容器是否会使问题变得如此复杂。关于在主机上安装软件包或在VM上安装软件包的问题将被忽略。在容器中安装软件包对我来说基本上是一样的。Docker通常有点棘手,因为它跨越太多space@Matt我宁愿从开发人员的角度来看它。这个问题是否与大多数SO用户(开发人员)相关。对于集装箱,我会说是的。我不会投票否决这个。这是一个模糊的领域,因为我们都同意。是的,这是一个暂时的问题与dl cdn。我建议使用一个普通镜像(请参阅),而不是dl-cdn.alpineinux.org,不幸的是,它经常不能正常工作。