2017-11-14 3 views
0

bazelbuild/rules_dockerの文書によれば、OSX上でこれらのコンテナイメージを扱うことが可能でなければならず、ドッカーなしでそうすることも可能です。OSXでBazelコンテナイメージを実行するには?

These rules do not require/use Docker for pulling, building, or pushing images. This means: 

They can be used to develop Docker containers on Windows/OSX without boot2docker or docker-machine installed. 
They do not require root access on your workstation. 

どうすればよいですか?

go_image(
    name = "helloworld_image", 
    importpath = "github.com/nictuku/helloworld", 
    library = ":go_default_library", 
    visibility = ["//visibility:public"], 
) 

私はbazel build :helloworld_imageイメージを構築することができます:ここでは簡単なルールがあります。これは、ブレーズビン内のtarボールを生成するが、それを実行されません:愚かである、これはOSXでのLinuxを実行しようとしている

INFO: Running command line: bazel-bin/helloworld_image 
Loaded image ID: sha256:08d312b529d30431c68741fd3a31468a02533f27a8c2c29eedc969dae5a39852 
Tagging 08d312b529d30431c68741fd3a31468a02533f27a8c2c29eedc969dae5a39852 as bazel:helloworld_image 
standard_init_linux.go:185: exec user process caused "exec format error" 
ERROR: Non-zero return code '1' from command: Process exited with status 1. 

.tarコンテンツで「ドッカー負荷」を試してみましたが、そのフォーマットが気に入らないようです。

 
$ docker load -i bazel-bin/helloworld_image-layer.tar 
open /var/lib/docker/tmp/docker-import-330829602/app/json: no such file or directory 

ヘルプ?ありがとう!

答えて

1

デフォルトでホストプラットフォーム向けにビルドしていますので、必要に応じてコンテナプラットフォーム用にビルドする必要があります。

goバイナリを使用しているので、コマンドラインで--cpu=k8を指定してクロスコンパイルを実行できます。理想的には、dockerイメージにはLinuxのバイナリが必要だと言うことができます(--cpuコマンドラインフラグを指定する必要はありません)。しかしこれはBazelでもまだ進行中の作業です。

関連する問題