書籍『実践Rust入門』の2-5-4項では、クロスコンパイルを応用した極小のDockerイメージを紹介しています。 書籍内で予告したとおり、その具体的な作成手順を当ブログで紹介する予定です。
実践Rust入門の該当部分
$ docker images hello-sqlite REPOSITORY TAG IMAGE ID CREATED SIZE hello-sqlite latest 0f60b9e23a91 5 minutes ago 1.95MB alpine latest 196d12cf6ab1 2 months ago 4.41MB ubuntu 18.04 ea4c82dcd15a 4 weeks ago 85.8MB
hello-sqliteはSQLiteサーバを組み込んだRustサンプルプログラムを実行するためのコンテナです。
x86_64-unknown-linux-musl
ターゲット向けにビルドしたバイナリを、scratch
という空のDockerイメージに入れました。 このバイナリにはSQLiteはもちろん、全てのRustバイナリが依存しているlibcなども埋め込まれています。 シェルなどのLinuxコマンドがなくても実行できますので、そのサイズは1.95MBとなっており、Dockerイメージとしては極端に小さい部類に入るAlpine Linuxのイメージ(4.41MB)よりも小さくなっています。誌面の都合から具体的な作成手順は省略します。 筆者らが管理するWebサイトにて他のターゲットと共に紹介していますので、興味があればそちらをご覧になってください。
追記(2019年12月7日)
たいへん遅くなりましたが、記事を公開しました。 お待たせしてすみません!