2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Docker

1 :login:Penguin:2013/07/27(土) NY:AN:NY.AN ID:5oaw2wHS.net
LXCを使った軽量仮想環境。
これからの動向が気になるところ。
情報共有しましょう。

http://www.docker.io/

851 :login:Penguin:2017/01/28(土) 15:29:25.19 ID:PcTp7kkz.net
なんで?としか言いようがないな。
goは普通にバイナリ提供されてるだろ
goを使うだけなのにどこでgit使うんだ?

852 :login:Penguin:2017/01/28(土) 15:51:31.79 ID:4Jfgy7RR.net
goはビルドシステムがgitに依存してる
まあgoはバイナリがポータブルなのが売りなので、そもそもコンテナ内でビルドする必要はないんだが

853 :login:Penguin:2017/01/28(土) 17:12:56.26 ID:2MvWS/IP.net
>>852
ほお、じゃあ外でビルドしてからgopath以下を
全部コンテナに突っ込めばよかったんかな。
イメージを小さくするにはそのほうが良いかも

854 :login:Penguin:2017/01/30(月) 21:09:58.96 ID:rjaVNIFi.net
>>853
いやいや生成されたバイナリ一つで済むからワンバイナリ言ってるわけだし。
windows環境ならlinux用にバイナリ出力すればいいだけ
最近はワンバイナリですまないかもしれないけどね。

855 :login:Penguin:2017/01/30(月) 21:18:58.37 ID:K/NqPmIh.net
そもそもワンバイナリならdockerも要らないけどな

856 :login:Penguin:2017/02/17(金) 03:42:03.04 ID:Ws+OLwc1.net
buildさげ

857 :login:Penguin:2017/02/20(月) 22:58:04.93 ID:GZ1cgO8N.net
久しぶりに来たら squash の話してるけどすでに実装されてるぞ。
ただし、Experimental。

仕組みとしては、通常のbuildをしてできたイメージを1layerにする処理がまた走る。
内部的にはイメージが2つできる感じ。
手元のディスク容量的には損だけど、squash 前の繰り返しする場合に
レイヤーが再利用されるのでそういう面で便利。

使い方は、docker daemon を experimental オプションつけて起動して、
docker build --squash -t foo .

次の 17.03 か 17.04 あたり(バージョニングルールが変わった)で experimental 外れるんじゃないかな

858 :login:Penguin:2017/02/20(月) 23:14:46.37 ID:GZ1cgO8N.net
golang を docker で build する意味に関してはいくつかある。

vendoring tool (依存パッケージのバージョン含めた管理)の代わりにセットアップされたイメージを用意するという方法。
最近は golang から dep という公式ツールが出て今後の方針が見えてきたとはいえ
テストなどを考えると vendoring の処理自体を毎回するとか面倒なのでコンテナ使うのは悪くないと思う。

ほかは cgo の問題(golang の中で c をインラインで書ける機能)。
golang の net/http はそのままで名前解決の部分が libc に依存しているので build 環境に左右される。
これは debian などで glibc 環境で build したイメージが glibc へダイナミックにリンクされてしまい
Alpine の musl libc で起動できないという現象(または逆)がある。
net/http の場合は CGO_ENABLED=0 や -a オプションなどで golang での実装へ回避できるが、
mattn/go-sqlite3 など中身は C のライブラリへのリンクしか無いと言うものが結構ある。
mattn/go-sqlite3 場合だと動作環境に sqlite のライブラリを入れるか
ldflags などを工夫して static バイナリをなんとか作るかという面倒なことをする必要がある。
docker イメージならライブラリ突っ込んで置けばいいので楽。

あとは、コマンドの統一。
いろいろなコマンドを docker run hoge 的に統一できるということ。
docker hub に登録しておけばどの環境でもこのコマンドで取得して実行できる。
golang の場合は容量的に空のイメージである scratch イメージを base にバイナリ放り込むという感じかな。
これを頑張ってる例としては whalebrew。

859 :login:Penguin:2017/02/20(月) 23:45:20.11 ID:3naPY4fk.net
なんでそこまでしてGoなんて糞言語使わなきゃいけないんだ
デプロイがシンプルであることだけが存在価値の言語なのに

860 :login:Penguin:2017/02/21(火) 00:43:51.96 ID:zSkuuX2q.net
>>859
お金のにおいがするからじゃないの?
なんか出してもいない広告で100億円儲けてる業界みたいだし。

総レス数 1000
293 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★