-1

Dockerfile を使用して、GitHub を chroot 環境として使用するために、Perl、curl、および git を含む小さなエクスポートを構築しようとしています。Dockerfile に curl または git を配置しようとすると、エクスポートされた tar ファイルからディレクトリが削除されます。Perl を Firefox などの他のパッケージと組み合わせると、使用可能な tar になります。

これが Dockerfile です。述べたように、Perl のみ、または Perl を使用した curl / git 以外のものを要求すると、機能します。

FROM gliderlabs/alpine:3.4

RUN apk add --update \
    curl \
    perl-dev \
    git \
  && rm -rf /var/cache/apk/*

ENTRYPOINT ["/usr/bin/perl", "-de0"]

どんな洞察も大歓迎です。

4

2 に答える 2

0

Dockerfile を問題なく実行しました。

$ cat df.alpine
FROM gliderlabs/alpine:3.4

RUN apk add --update \
    curl \
    perl-dev \
    git \
  && rm -rf /var/cache/apk/*

$ docker build -t alpinetest -f df.alpine .
Sending build context to Docker daemon 37.89 kB
Step 1 : FROM gliderlabs/alpine:3.4
3.4: Pulling from gliderlabs/alpine
a03be5b52c0f: Pull complete
Digest: sha256:f34605566fc0827029c786094d104703f68953a7845d5bf4334c4c50fea6200c
Status: Downloaded newer image for gliderlabs/alpine:3.4
 ---> eeae34df12d9
Step 2 : RUN apk add --update     curl     perl-dev     git   && rm -rf /var/cache/apk/*
 ---> Running in 21aeec842908
fetch http://alpine.gliderlabs.com/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://alpine.gliderlabs.com/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
(1/9) Installing ca-certificates (20160104-r4)
(2/9) Installing libssh2 (1.7.0-r0)
(3/9) Installing libcurl (7.49.1-r0)
(4/9) Installing curl (7.49.1-r0)
(5/9) Installing expat (2.1.1-r1)
(6/9) Installing pcre (8.38-r1)
(7/9) Installing git (2.8.3-r0)
(8/9) Installing perl (5.22.2-r0)
(9/9) Installing perl-dev (5.22.2-r0)
Executing busybox-1.24.2-r9.trigger
Executing ca-certificates-20160104-r4.trigger
OK: 69 MiB in 20 packages
 ---> 7ee2fd822c7a
Removing intermediate container 21aeec842908
Successfully built 7ee2fd822c7a

$ docker run --rm -it alpinetest /bin/sh
/ # which git
/usr/bin/git
/ # which perl
/usr/bin/perl
/ # which curl
/usr/bin/curl

/ # perl -v

This is perl 5, version 22, subversion 2 (v5.22.2) built for x86_64-linux-thread-multi

Copyright 1987-2015, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

/ # curl --version
curl 7.49.1 (x86_64-alpine-linux-musl) libcurl/7.49.1 OpenSSL/1.0.2h zlib/1.2.8 libssh2/1.7.0
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

/ # git --version
git version 2.8.3

出力が上記と異なる場合は、質問を更新して詳細を記入してください。


編集:あなたのリクエストに応じて、エクスポートも含め、バイナリは問題なく表示されます:

$ docker create --name alpinetestc alpinetest /bin/true
$ docker export alpinetestc | gzip >alpinetest.tgz
$ tar -tvzf alpinetest.tgz usr/bin/git
-rwxr-xr-x 0/0         1944216 2016-05-26 10:44 usr/bin/git
$ tar -tvzf alpinetest.tgz usr/bin/curl
-rwxr-xr-x 0/0          173912 2016-05-30 12:11 usr/bin/curl
$ tar -tvzf alpinetest.tgz usr/bin/perl
-rwxr-xr-x 0/0            9872 2016-05-16 06:22 usr/bin/perl

問題を再現するのに十分な詳細が提供されていないようです。

于 2016-07-20T01:48:34.520 に答える
0

試してみるいくつかのこと

  • インストールごとに追加の「RUN」コマンドを試す
  • 各ステップの後にキャッシュを削除します
  • docker イメージのビルド中は、キャッシュ オプションを使用しません。docker build -no-cache
于 2016-07-20T01:38:23.863 に答える