2017-04-02 8 views
0

x86ホストのbuildtimeで、ドッキング・コンテナ をARMホストで実行するために作成しようとしています。これを行うには、クロスコンパイルにqemuを使用する必要があります。私はまた、画像のサイズが非常に小さいので、アルパインのlinuxを使用したい。ARMホストのqemuを使用してAlpine/Dockerにbashをインストールしてください

ただし、ビルド時にのみ発生する異常なエラーが発生しました。問題は bashをインストールしています。

apk -U add bashを実行すると、apkはパッケージリスト をリポジトリから更新し、要求されたパッケージの最新バージョンをインストールします。 Inは、インストール後のスクリプトを実行します。これらのインストール後スクリプトは失敗するようです。 しかし、私はbashなしでイメージを構築し、対話的にコンテナ をARMホスト上で実行し、apk fix && apk -U add bashでした。しかし、これを行うことはビルド時に コマンドが失敗します。

ビルド時にbashを追加するにはどうすればよいですか?

Dockerfile

FROM armhf/alpine:3.5 

ENV CONSUL_PREFIX __CONSUL_PREFIX__ 
ENV CONSUL_SECRET_PREFIX __CONSUL_SECRET_PREFIX__ 

ENV QEMU_EXECVE 1 

COPY deploy/qemu/qemu-arm-static   /usr/bin/ 

RUN ["qemu-arm-static","/sbin/apk","fix"] 
RUN ["qemu-arm-static","/sbin/apk","add","-U","bash"] 

RUN ["qemu-arm-static","/sbin/apk","-U","add", \ 
         "postgresql-client",\ 
         "curl","vim",\ 
         "tzdata","bc"] 

RUN ["qemu-arm-static","/bin/cp","usr/share/zoneinfo/America/Los_Angeles","/etc/localtime"] 
RUN ["qemu-arm-static","/bin/echo","America/Los_Angeles",">","/etc/timezone"] 
RUN ["qemu-arm-static","/bin/rm","-rf","/var/cache/apk/*"] 
RUN ["qemu-arm-static","/bin/sh"] 

COPY deploy       /usr/local/deploy 
COPY deploy/default/bashrc   /root/.bashrc 
COPY deploy/default/vimrc   /root/.vimrc 

COPY src       /src 

ビルドログ/エラー

@C02NN3NBG3QT:dev-resources $ ./publish-image 
+ : router-logs 
+ : quay.io 
+ : quay.io/skilbjo/router-logs 
+ : [email protected] 
++ echo router-logs 
++ tr - _ 
+ : router_logs/config 
++ echo router-logs 
++ tr - _ 
+ : router_logs/secrets 
+ cat ../deploy/default/Dockerfile 
+ sed 's;__CONSUL_PREFIX__;router_logs/config;' 
+ sed 's;__CONSUL_SECRET_PREFIX__;router_logs/secrets;' 
+ IMAGE_TAG=dev 
+ cd .. 
++ git rev-parse HEAD 
+ echo 0a865e3918d584b4377fad9afe9ba28a1dbe5968 
+ docker build --rm -t quay.io/skilbjo/router-logs:dev . 
Sending build context to Docker daemon 8.713 MB 
Step 1 : FROM armhf/alpine:3.5 
---> 3ddfeafc01f0 
Step 2 : ENV CONSUL_PREFIX router_logs/config 
---> Using cache 
---> e2aae782f6d8 
Step 3 : ENV CONSUL_SECRET_PREFIX router_logs/secrets 
---> Using cache 
---> 71c863da2558 
Step 4 : ENV QEMU_EXECVE 1 
---> Using cache 
---> a7e80415d0d4 
Step 5 : COPY deploy/qemu/qemu-arm-static /usr/bin/ 
---> Using cache 
---> 265df9b6575f 
Step 6 : RUN qemu-arm-static /sbin/apk fix 
---> Using cache 
---> def74ac67891 
Step 7 : RUN qemu-arm-static /sbin/apk add -U bash 
---> Running in 6f62d2ecd6b3 
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/armhf/APKINDEX.tar.gz 
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/armhf/APKINDEX.tar.gz 
(1/5) Installing ncurses-terminfo-base (6.0-r7) 
(2/5) Installing ncurses-terminfo (6.0-r7) 
(3/5) Installing ncurses-libs (6.0-r7) 
(4/5) Installing readline (6.3.008-r4) 
(5/5) Installing bash (4.3.46-r5) 
Executing bash-4.3.46-r5.post-install 
ERROR: bash-4.3.46-r5.post-install: script exited with error 1 
Executing busybox-1.25.1-r0.trigger 
ERROR: busybox-1.25.1-r0.trigger: script exited with error 1 
1 errors; 7 MiB in 16 packages 
The command 'qemu-arm-static /sbin/apk add -U bash' returned a non-zero code: 1 

プロジェクトレポはこちらです:https://github.com/skilbjo/router-logs

答えて

0

それはFROM armhf/alpine:3.5が良くありませんが判明し、FROM resin/armhf-alpine:3.5は、トリックを行います!私はscratchからのコミットメントを見ることができて、armhfのイメージがボルケージされているのが好きですが、今のところこれが動作します!

関連する問題