macOSのDockerでRocky Linuxを動かしてみる
最近Dockerを使い始めたので、Rocky Linuxを動かすまでのメモです。
インストール
今回はDocker Desktopをインストールします。Docker Desktopのインストール方法に関しては、Get Docker | Docker Documentationに詳しく載っていますが、macOSの場合はHomebrewでインストールすることもできます。
紛らわしいですが、HomebrewにはFormulaのdockerと、Caskのdockerが存在します。Docker Desktopをインストールするには、Caskの方を指定する必要があります。Formulaの方はDockerのCLIクライアントのようです。
% brew install --cask dockerインストールが完了したら、Applications内にあるDocker.appを起動します。CLIからDockerを使う場合でも、このアプリケーションを立ち上げておきます。
コンテナを動かす
Docker Hubからコンテナイメージを探します。Rocky Linuxの場合は公式のイメージがあります。docker pullコマンドでイメージを取得することができます。イメージは、(イメージ名):(タグ)のように指定します。タグを省略すると、デフォルトでlatestとなりますが、Rocky Linuxの場合はlatestタグが無いのでエラーになります。
% docker pull rockylinux:9次にdocker runコマンドでコンテナを起動します。コマンドライン上から操作する場合には、-itオプションを与えます。(-iは標準入力を開くオプション、-tは仮想TTYを割り当てるオプションのようです。)
% docker run -it rockylinux:9
[root@9132f9b19b4b /]#これで、コンテナを起動することができました。実際に、Rocky Linuxの環境となっていることが確認できます。
[root@9132f9b19b4b /]# cat /etc/rocky-release
Rocky Linux release 9.1 (Blue Onyx)コンテナの終了はexitコマンドで行えます。
作成したコンテナを起動する
作成したコンテナを再度起動したい場合は、docker ps -aでコンテナのIDを確認し、IDをdocker startの引数に与えることで再び起動することができます。
% docker start -i 9132f9b19b4b異なるCPUアーキテクチャのイメージを使う
Dockerは、CPUのエミュレーションも行うことができます。これにより、例えばARMベースのApple M1チップ上で、x86_64のコンテナを動かすことができます。--platformオプションを指定します。
Rosetta 2が入っていることが前提です。
% arch
arm64
% docker run -it --platform linux/amd64 rockylinux:9
[root@c12c7735ab87 /]# arch
x86_64arm64上でx86_64の環境をエミュレートできていることがわかります。エミュレーションは、内部的にはQEMUによって行われているようです。
このように、Dockerを使うことで、macOS上で手軽に、多様なLinux環境を使うことができます。今後は独自コンテナの作成方法なども調べてみようと思います。