macOSのDockerでRocky Linuxを動かしてみる

#83
2023.2.12

最近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_64

arm64上でx86_64の環境をエミュレートできていることがわかります。エミュレーションは、内部的にはQEMUによって行われているようです。

このように、Dockerを使うことで、macOS上で手軽に、多様なLinux環境を使うことができます。今後は独自コンテナの作成方法なども調べてみようと思います。