だ。ログ。

開発とかスノボとかやきうとか。

M1 MacでDockerコンテナからsystemctlが利用できない

そろそろ前に買ったMacbookProが3年、vagrant + vmwareの構成でローカル内開発を行ってきた。
ただ、この環境もいつ壊れるか分からないと言う含みがある。
と言うのも、OSを現在のMontereyにアップグレードした際に、Vagrantが対応出来なくなって色々と難儀したと言う事を加味してもそろそろ新しいProがほしいと思っていた。

折しも半導体価格が様々な要因から円安も重なり一気に値上げしそうな予感。
と言う事で、MacbookPro2021(M1チップ10コア)を購入。

何気なく現行で使っている開発環境をそのままアカウント移行した。

$ cd /develop/001.centos/
$ vagrant up

いつものようにvagrant upを行ったが端的に言えばM1チップとなったMacではIntel、AMDCPUとは違ったモノなのでエミュレーション出来ないと言う事みたい。
chico-shikaku.com

こうなってしまうと、仮想環境をどうにかして作らねばならないと言う事と今までVagrantでやってきた事もあり手をあまり出していなかったDockerでの開発環境を作る事にした。
基本的にはDockerをインストールして、centosのimageをpullしてそこから環境構築となる。

はずだった。と言うかコマンドからdockerの実行と仮想環境内でのコマンド接続まではできた。

$ yum update
$ yum install httpd
## sshが入っていないのでインストールする
$ yum install openssh-server

と言う事で、SSHサーバーまでインストールしてサービスを開始する

$ systemctl start sshd.service
Failed to get D-Bus connection

D-Busが失敗していますと出て起動時のオプションを変える等の手立てをしたが解決しない。
最終的にたどり着いた
zenn.dev

上記のリンク内

# デフォルトは false(v1を使わない) 設定
% cat ~/Library/Group\ Containers/group.com.docker/settings.json|grep deprecatedCgroupv1
  "deprecatedCgroupv1": false,

# false --> true に変更
% vi ~/Library/Group\ Containers/group.com.docker/settings.json
% cat ~/Library/Group\ Containers/group.com.docker/settings.json|grep deprecatedCgroupv1
  "deprecatedCgroupv1": true,

この通りにファイルを編集して、一旦マシンを再起動し再びコンテナを起動してsystemctlコマンドを打つと見事に動いた。

今後IntelチップのMacからAppleシリコンのチップに変わりゆく際に、多分同じような部分で詰まるのか。
それともその時代にはVagrantやDocker自体が対応しているかは定かではないが、2022年4月の段階では回避策としてはこんな感じでやらなきゃいかんよ。と言うメモ。