Dockerでsystemdを使う

CentOS 7なんかを使ってるとかなり馴染み深いsystemctl。
ただ、dockerで使おうとすると案外面倒なのね。

よく、”–privileged”を使うとsystemctlが動くって記述もあるのだけど、それだけだとどうにも動かなかったのでもう少し調べてみた。Hostによってはこれだけでも動くのかな?

自分の場合はCentOS 7がHostなので、CentOSが公式でだしているDocker Imageが楽なようだ。

--privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro
の二つのオプションを使うとsystemctlを用いたdocker imageが簡単に作れる。alpineとかがbaseのものに比べると多少サイズが大きくなるが、CentOSに慣れてる人にはこれはこれで便利なんじゃないか。

ちなみにこのcentos/sysytemdのimageでsystemdを使う場合、ENTRYPOINTとCMDの両方を用いてsystemdが起動されているようで、ENTRYPOINTやCMDで何かをさせるというのは難しいみたいだ。
なので、”systemctl enable XXX”や、systemdが起動時に読み取る.serviceがあるフォルダに直接コピーする、書き換える等の手段で目的の処理を走らせる必要がある場合も出てくるようだ。

設定を変更するとデーモンが再起動するようなWebアプリをVirtualBox等の仮想環境で動かす感覚でDockerで動かすこともできるのでなかなか面白そう。

ためしにOpenVPNをWeb GUI付きで動かしてみた。問題なく動くみたい。DockerでVPN動かす必要があるかっていうとなかなか怪しいけど、Dockerのネットワーク設定を理解するのに案外いいかもしれない。

コメントを残す