かねてから儲け方が分からないままに便利すぎるソフトウェアを世に出していたdocker。もはやこれがなければほとんどの開発者は立ち行かないというレベルに達していると思うが、多くの人が使っているdocker desktopに有料プランの強制という話が出てきた。先週だったかな。朝dockerからメールが来て、ビビりつつ周りの様子を伺っていたが。多くの開発者がいる中〜大企業の開発者からはカネを取る、と。直接取る方向になったんですね。妥当な判断ではあるでしょう。
IntelliJ IDEAとかと比べてもdockerの利用を回避するのは難しそうですね。IntelliJはJavaの開発をしていたときは部署で買ってもらったライセンスを使って便利に使わせてもらいましたが、Javaの開発とオサラバできたので今はvscodeの住民になりました。dockerも個人利用は無料のままみたいですけど、会社では有料で使うとして、個人ではリモートのLinuxに上げたdocker-ceを使おうかなと思って少し検討してます。このまま行っても個人側の課金はなさそうだけど一応、借りてるサーバも少しはあるのでモッタイナイ精神がね。
で、DOCKER_HOSTにいつの間にか ssh://xxx みたいに書けるようになっていたので、これで軽く試してみた。runとかpullとかは普通に使えるね。docker buildのbuild contextは送れるので、イメージのbuildも支障なさそうだなー。これなら tcp://xxx いらなくなっちゃうじゃん。あれは鍵の管理とかめんどくさかった。
でもポートフォワードとかボリュームをホストと共有するとかすると思い通りに行かない感じになる。よく使うdocker-composeはv1は ssh://xxx の形式のDOCKER_HOSTに対応していないけど、最近dockerコマンドに統合されたcompose v2だと動いた。ただdocker-compose使う時ってボリューム見せたりポート出したりっていう設定をYAMLに書き出しておきたい時だから、あんまり使いやすくなる感じではないね。macからだとホームディレクトリが /Users/{username} なんで、普通にcomposeで上げようとして、Linux側にホームディレクトリ外の /Users/{username} が掘られてしまった。rootで。コンテナからはdocker-compose.ymlのあるディレクトリだと思ったのに空のディレクトリが見えている。ホストのボリュームを見せようとしなければいいんだけど、configなんかはどうしても置きたくなってしまうよね。そもそもdocker-compose.yml入りのリポジトリを作って、開発に使う想定なんだから、利便性を考えれば当然だ。利便性を考えなければ、イメージbuildの時にconfigもイメージ内に押し込んでしまえばまあ、ホストのボリュームが見えなくても…
まあそれでも、vieux/sshfsとかのボリュームドライバを使えば、割といい感じになるかもしれないなー
そしてうちのRaspberry PiはOSも古いままになっていて、Raspiのホストをssh://xxx で指定してもdocker-ceのバージョンが古くて対応していなかった。sshでdocker system dial-stdio コマンドでstdio経由でdockerdのunix domainソケットと通信するみたいね。そのdial-stdioサブサブコマンドが、18.09以降にしかない。うーむ。これはRaspiのOSをサポート外になったまま上げてなかった自分の怠慢のせいだな。