2025/9/12 21:39 タイトル、および記事中の誤記を修正しました Fedora core linux → Fedora coreOS
WHY
docker の有料プランが値上りするので、解約しようと思ってたら docker desktop の商用利用は有償プランだけ!って言われた
↓
じゃ、mac から docker desktop を捨ててしまえば良い
↓
でも仕事でdocker必要だし、Linuxマシンを調達するか
↓
それなら parallels は入ってるんだからそこにLinux入れれば良くね?
↓
せっかくだし docker のホストに特化したOSを入れるぞ
↓
というわけで Fedore coreOS をインストール ← イマココ
参考資料
その1 kb.parallels.com
その2 qiita.com
準備
fedora coreOS のLive DVD*1をこちらのwebページからダウンロードしてきます
Fedora CoreOS | The Fedora Project
intel macの方はx86_64のイメージを持って行ってください。

LiveCDから起動
しばらくは参考資料その1の流れに沿って進みます。
parallels のコントロールセンターを開き、右上にある + ボタンをクリックして新規作成画面へ行きます

「windows linux または macOS をイメージファイルからインストール」を選択して、「続行」をクリックします

「またはファイルを選択」をクリックして、さきほどダウンロードした LiveDVD を選択し「続行」をクリックします
「オペレーティングシステムを選択」のダイアログでは一旦「その他Linux」を選択して先に進み、名前を付ける段階で「Fedora coreOS」あたりの分かりやすい名前に変更してください。
「作成」をクリックすると、一瞬ブートローダーっぽい画面が表示されますが、そのままほおっておけばOSが起動します。

こちらの画面になったら、LiveCDからの起動は成功です。

インストール
ここからは参考資料その2の流れに沿ってインストールしていきます。 まずは設定ファイルのyamlを作っていきます (butaneというらしい)
variant: fcos
version: 1.6.0
passwd:
users:
- name: core
ssh_authorized_keys:
- <公開鍵>
<公開鍵>の部分は実際にはホストのmacからのログインで使える鍵ペアの公開鍵に置換えてください。
参考資料のもの(というか公式サイトのもの)とほぼ同じものですが、docker desktopの代わりに使う程度ならたぶん大丈夫でしょう :p
作成が終わったら、ignファイルに変換するためのbutaneというコマンドをインストールします。
brew install butane
インストールできたら、yamlを変換します。
butane --pretty --strict ignition.bu >ignition.ign
ignition.bu が先に作ったYAMLファイルで、ignition.ign が変換後のIGNファイルです。 ちなみに、変換後のignファイルはただのJSONらしい
% file ignition.ign ignition.ign: JSON data
中を見てみると
% cat ignition.ign
{
"ignition": {
"version": "3.5.0"
},
"passwd": {
"users": [
{
"name": "core",
"sshAuthorizedKeys": [
<公開鍵>
]
}
]
}
}
いや、もう直接JSONで書けばええやんwww
さてインストール作業に戻りましょうか。 次にhttpで仮想マシンからこのignファイルをとってこれるようにサーバを起動します。
ignファイルを置いたディレクトリに移動して、次のコマンドを実行してください。
% python3 -m http.server Serving HTTP on :: port 8000 (http://[::]:8000/) ...
実行中のターミナルはそのままにして、仮想マシンの方で続きの作業をします。
まずは、sudo fdisk -l をしてインストール先のデバイスを確認しましょう

loop0, loop1, sda の3つしか見えていないので、たぶんsdaにインストールすれば大丈夫でしょう。 もしUSBメモリとかをうっかりparallels側にマウントしていたら他のデバイスも見えるかもしれませんが、その辺は自己責任で*2 :p
念の為 df して sda がマウントされていないことを確認します。

最後に次のコマンドを実行して、仮想ディスクに Fedora coreOS をインストールします。
sudo coreos-installer install /dev/sda --ignition-url http://10.211.55.2:8000/ignition.ign --insecure-ignition
URLに含まれる 10.211.55.2 は仮想マシンから見たホストOSのIPアドレスです。
parallelsがデフォルト設定だと、たいていこのアドレスになるようですが、エラーがでるようならホスト側でifconfigして 10.211.55 で始まるIPアドレスを探してください。*3
次の表示が出たらインストール終了なので、 shutdown -h now して仮想マシンをシャットダウンします。

次にparallelsのコントロールセンターから設定を開いて CD/DVD にマウントしていたISOイメージをとりはずします。

再度マシンを起動すると sshdの設定をして coreユーザ のauthorized_keysに先程の公開鍵を書いてるっぽいログが見えます。 その直後に、ネットワークインタフェースの情報が出てくるので覚えておきましょう。(この例だと enp0s5 で始まる行で、IPアドレスは10.211.55.6です)

最後にホストOSのターミナルからsshでログインできるか試してみます。仮想マシン側のユーザ名 core を指定するのを忘れないようにしてください((私はpermission deniedになって一瞬固まりました orz)
ssh -l core 10.211.55.6
無事にログインできたら、次のような表示になるはずです。
% ssh -l core 10.211.55.6 Fedora CoreOS 42.20250818.3.0 Tracker: https://github.com/coreos/fedora-coreos-tracker Discuss: https://discussion.fedoraproject.org/tag/coreos core@localhost:~$
この環境では、dockerコマンドを実行する時にsudoが必要です。
core@localhost:~$ docker run hello-world
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
Run 'docker run --help' for more information
core@localhost:~$ sudo docker run hello-world #こっちが正解
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
198f93fd5094: Pull complete
Digest: sha256:54e66cc1dd1fcb1c3c58bd8017914dbed8701e2d8c74d9262e26bd9cc1642d31
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/



