はじめに
本日、台東区でおこなわれた株式会社ギークフィード様主催のもくもく会に参加してきました。
お菓子やドリンク、さらに個人用に接続用のモニターも準備されており、エンジニアが集中して学べる快適な環境が提供されていました。
今回は、こちらで勉強している際にWindowsとMacの違いで苦戦した点について記事にしました。
Macの操作むずすぎない?
Macはほとんど触っておらず(Spotlightのショートカットも今日知ったレベル)
普段はWindowsデスクトップのWSL2を利用して学習しているのですが、
外出時やイベント参加のために以前Macを購入しており、VScodeやGitの設定を最低限行なって放置しておりました。
しかもWindowsとショートカットキーが全然違うので、中々慣れずたいへんでした。
MySQLのコンテナビルド時にエラーが起きる
本日は、Kubernetesの勉強をしようと考えており、
実際にKubernetesの勉強を始めようと思い、事前にGitに上げていたマニフェストファイルをpullした後にdocker build
コマンドを実行したのですが、以下のようにエラーが発生しました。
nayataiyounoMacBook-Air:mysql nayataiyou$ docker build . -t mysql:v1.0.0
[+] Building 1.9s (3/3) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 1.03kB 0.0s
=> ERROR [internal] load metadata for docker.io/library/mysql:8.0.28 1.8s
=> [auth] library/mysql:pull token for registry-1.docker.io 0.0s
------
> [internal] load metadata for docker.io/library/mysql:8.0.28:
------
Dockerfile:1
--------------------
1 | >>> FROM mysql:8.0.28
2 |
3 | # 環境変数の設定
--------------------
ERROR: failed to solve: mysql:8.0.28: failed to resolve source metadata for docker.io/library/mysql:8.0.28: no match for platform in manifest: not found
プラットフォームに対応していないといったメッセージが発生したので、イメージファイルの状態を確認してみました。
nayataiyounoMacBook-Air:mysql nayataiyou$ docker manifest inspect mysql:8.0.28
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2828,
"digest": "sha256:e9fee3e714fd69cd2ccfa0c6a141fac0a60f2a02f72d43c0e7055601aaf481b0",
"platform": {
"architecture": "amd64",
"os": "linux"
}
}
]
}
Dockerのビルド時にアーキテクチャを明示しない場合、デフォルトでは使用しているマシンのCPUアーキテクチャに依存します。
なので自環境のアーキテクチャを確認してみました。
アーキテクチャの確認
nayataiyou@nayataiyounoMacBook-Air ~ % uname -m
arm64
arm64と出てきましたね。
ということでアーキテクチャが違っただけみたいですね。
なので使用するアーキテクチャを明示的に指定してビルドしてみます。
nayataiyounoMacBook-Air:mysql nayataiyou$ docker build . --platform linux/amd64 -t mysql:v1.0.0
[+] Building 2.8s (13/13) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 1.03kB 0.0s
=> [internal] load metadata for docker.io/library/mysql:8.0.28 2.7s
=> [auth] library/mysql:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/7] FROM docker.io/library/mysql:8.0.28@sha256:fc77d54cacef90ad3d75964837fad0f2a9a368b69e7d799665a3f4e90e600c2d 0.0s
=> => resolve docker.io/library/mysql:8.0.28@sha256:fc77d54cacef90ad3d75964837fad0f2a9a368b69e7d799665a3f4e90e600c2d 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 65B 0.0s
=> CACHED [2/7] RUN rm -f /etc/apt/sources.list.d/mysql.list && apt-get update && apt-get install -y --no-install-recommends 0.0s
=> CACHED [3/7] RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && locale-gen ja_JP.UTF-8 0.0s
=> CACHED [4/7] RUN touch /var/log/mysqld.log && chown mysql:adm /var/log/mysqld.log 0.0s
=> CACHED [5/7] RUN mkdir /var/mysql && chown mysql:adm /var/mysql && rm -rf /etc/mysql/conf.d 0.0s
=> CACHED [6/7] COPY ./my.cnf /etc/mysql/ 0.0s
=> CACHED [7/7] RUN chmod 644 /etc/mysql/my.cnf 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => exporting manifest sha256:24bfc8f6b67d686af6bd38a28590f23503024532835f5b21cafea44fc82ca815 0.0s
=> => exporting config sha256:cceef464a75dd3403d8911953d7d64b4c14bf2470838e7f9e4c0649eee64c09d 0.0s
=> => exporting attestation manifest sha256:4191413e51a26ea048c3d8e133f6ce78e92471b67eff0b2177ed8111314ecbfd 0.0s
=> => exporting manifest list sha256:c6c2418cc2172314204aa68709516a1cd3694b4ace6426784f8654699b74421d 0.0s
=> => naming to docker.io/library/mysql:v1.0.0 0.0s
どうやらいけたっぽい
nayataiyounoMacBook-Air:mysql nayataiyou$ docker images
[省略】
mysql v1.0.0 c6c2418cc217 59 minutes ago 184MB
まとめ
こうした些細なことでも、知っているかどうかで解決までの時間が大きく変わると思います。今回の経験は良い学びになりましたし、初めて遭遇するトラブルでも、似たような事象が発生した際に「前にもこんなことがあったなぁ〜」と思い出して対応できることが増えると思います。やはり、小さな知識や経験の積み重ねは大切だと改めて実感しましたね!
もくもく会を開催いただいた株式会社ギークフィード様ありがとうございました!
とても快適な環境で勉強させていただきました。
年明けも開催するとのことなので、気になる方はぜひ参加してみましょう!
■参考リンク