ニフティアドベントカレンダー12月2日を務めさせていただきます、島田です。
プロフィールにも書いてありますが、新卒3年目の22歳で最近はコンテナランタイムについて勉強しています。
好きな寿司ネタはしめ鯖、最近楽しかったことはiPadでVMを起動させる遊びです。
アドベントカレンダーは初参加ですので、温かい目で見守って頂けると幸いです。
Docker Desktopが有料になるよ
https://www.docker.com/pricing
Docker Desktopが有料になる、という話は今やエンジニア以外でもご存知の方は多いのではないでしょうか。
いずれ有料化されると分かっていながらも発表された時は自分も驚きました。
今や開発は当然のようにコンテナで行われ、ニフティでも多くのコンテナがプロダクション環境で動作しています。
今回有料の対象となるのは従業員250名以上、または売上が1000万USD以上と、ほとんどの企業が有料対象となります。
今から脱Docker Desktopを行うのはリスクが高いため、pro以上のライセンスを購入することになると思うのですが、個人的にDocker以外のコンテナランタイムに興味が出たので勉強がてら色々いじってみてます。
以前社内LTにて、macの脱Docker Desktop手段としてlima-vmを紹介しました。
今回はPodmanを使ってみたので、やったことと思ったことを綴っていきたいと思います。
Podmanとは
PodmanはDockerのように、runcなどの低レベルランタイムとやり取りをしてくれるCLIツールです。
開発はRedHatだそうで、OSSのプロジェクトとして公開されています。
Dockerと違いルートレスであるため、問題視されがちな特権ユーザを利用してホストOSに干渉する行為を防止でき、よりセキュアであるといえます。
使ってみる
早速使ってみます。環境は以下です。
- host OS: windows10
- VM: VMware Workstation 16
- OS: debian11
まず、Podmanをインストールします。
aptでかんたんに入ります。
debian@debian:~$ sudo apt-get install podman
debian@debian:~$ podman -v
podman version 3.0.1
psするとコンテナ一覧が見られます。
Docker互換というだけあり、見た目がほとんど同じです。
debian@debian:~$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
テンションが上がってきたのでコンテナを動かしてみます。
debian@debian:~$ podman run --rm -itd busybox sh
Error: error getting default registries to try: short-name "busybox" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"
なんか怒られました。
podmanのコンテナレジストリにはbusyboxというのはいない、と言ってるようです。
dockerのイメージを使うには次のように指定する必要がありました。
debian@debian:~$ podman pull docker.io/busybox
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 3aab638df1a9 done
Copying config d23834f29b done
Writing manifest to image destination
Storing signatures
d23834f29b3875b6759be00a48013ba523c6a89fcbaeaa63607512118a9c4c19
debian@debian:~$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/busybox latest d23834f29b38 35 hours ago 1.46 MB
無事busyboxが取得できたので、起動してみます。
debian@debian:~$ podman run --rm -itd --name test docker.io/busybox sh
8113583a6c61ae37002321d74d5fcbda336c0e3d498612e640cf948bf514e1c1
debian@debian:~$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8113583a6c61 docker.io/busybox sh 6 seconds ago Up 6 seconds ago test
元気に動いています。
今回はbusyboxをそのままrunしていますが、podman buid
や内部ネットワークの機能もちゃんともっているようです。
ついでに個人的にやろうと思っていたkata-fcをPodmanから使えるか試してみました。
debian@debian:~$ sudo podman run --rm -itd --name test-kata-fc --runtime=/opt/kata/bin/kata-runtime docker.io/busybox sh
Error: OCI runtime error: Could not create cgroup for machine.slice:libpod:ccaaa04deb773de192ca4b89fff44f5ee8f0d505bc861b6c3c532c1cd1452571: cgroups: cgroup mountpoint does not exist
だめみたいです。
Dockerでランタイムとして指定しても同じcgroupのエラーが出てしまっていたので、kata containersのインストールが悪いのかもしれません。
解決策がわかる方がいらっしゃったら是非教えて頂きたいです。
まとめ
今回はDockerの代わりにPodmanを使ってみました。
podというだけあってk8sのマニフェストからpodを作成することも出来るみたい(そっちがメインの機能?)で、結構便利そうです。
Dockerの移行先としても優秀で、何よりapt一発で入ってちゃんと動くところに感動しました。
企業としてPodmanに移行するのは流石にリスキーですが、個人で利用する分には全く問題なさそうです。
以上で島田の記事は終了です。
ニフティアドベントカレンダーはまだまだ続きますので、明日の投稿も是非ご覧ください!