Docker キャプテンは、開発者コミュニティのリーダーであり、それぞれの分野の専門家であり、Docker の知識を他の人と共有することに情熱を注いでいます。「From the Captain's Chair」は、あるキャプテンを詳しく見て、彼らとその経験について詳しく知るブログシリーズです。
本日は、ドイツで最も日照時間の長い都市、フライブルクを拠点とするドック船長、モハメド=アリ・アラビ氏にインタビューを行います。彼は「DockerとKubernetesのセキュリティ」は、 2025年間最優秀 DevOps 書籍の最終候補作品です。彼はソフトウェアエンジニア、講演者、コミュニティビルダーでもあり、 2022以来フライブルクでDockerミートアップを主催している。 モハマド・アリはイラン出身で、数学の学士号とコンピュータサイエンスの修士号を取得している。

キャプション:イスタンブールで開催されたドッカー・キャプテンズ・サミットにて。赤い帽子をかぶっているのが私です。
Dockerに初めて関わった経緯を教えていただけますか?
2015では、イランのテクノロジー企業である Cafe Bazaar でバックエンドエンジニアとして働いていました。バックエンドはDjangoで稼働していたので、プロジェクトを立ち上げようと奮闘しながら、丸一週間Django Reinhardtの音楽を聴き続けました。依存関係地獄のせいで、私は失敗していた。
同僚が何気なく「Dockerを使ってみたらどうですか?CIで使っていますよ」と言った。当時Dockerは2年しか経っておらず、私はそれまで一度も聞いたことがなかった。
それで、私は1週間姿を消してDockerを勉強していたのですが、気づいたら他のプロジェクトのためにCIパイプラインを作成していました。
キャプション:イランのカフェ・バザール。赤いTシャツを着ているのが私です(真ん中)。
Dockerキャプテンになろうと思ったきっかけは何ですか?
2018から2019の間、私はアムステルダムで働いていました。そこでは頻繁に技術系の交流会が開かれていて、アムステルダムのそういうところが大好きだった。私たちは2019年にフライブルクに戻り、私はより小さな会社で働き始め、そこでgit、CI/CDパイプライン、Dockerを導入しました。人々はGitやDockerに関する質問を私に持ち込んできた。そこで、後で自分の参考のために、それらをMediumのブログに書き留めておくことにしました。しかし、その内容がコミュニティにとって有益だと分かったので、書き続けました。一時期、私は毎週Gitに関するブログ記事を書いていた。
パンデミックが始まったとき、私は落ち込んでしまったので、フライブルクで交流会グループを立ち上げることにしました。そうでなければ、そのようなグループはどこにもなかったからです。私はオンラインのDockerコミュニティ・オールハンズとオンラインのKubeConに参加し、その間、初めてのミートアップを開催するための場所を探していました。
コーヒーを持って行きます!
2022で、私を採用しようとするCEOからLinkedInのメッセージが届きました。私は彼に「新しい契約を結んだばかりだけど、他のコラボレーションについても話し合えるよ」と伝えた。私たちはミーティングを設定し、私は「コーヒーを持参します!」と書きました。彼らのオフィスが私の住んでいる建物と同じ建物にあったからです。私はドッカーブランドのマグカップにコーヒー(ミルクの染みがついたカフェクレマ)を入れて、そこへ降りて行き、「こんにちは、ご近所さん!」と言いました。彼らは対面式のDockerミートアップを開催することで合意した。
私たちの最初のミートアップは11月2022に開催され、参加者はフランスのストラスブールから来たたった1人でした。結局、そこにいたのは彼と私の妻と私、創業者のひとりと彼女のボーイフレンド、そして会社のエンジニアだった。
2回目の集まりは、Docker Community All Handsを視聴する会でした。その時点で、私はDockerのブログに2つの記事を掲載し、そのイベントで講演を行い、最優秀Dockerコミュニティリーダーの称号を獲得していました。
私が2023年初頭にキャプテンに応募したとき、Dockerではすでに多くの人が私のことを知っていました。
来年の個人的な目標は何ですか?
教育とストーリーテリングにさらに力を入れていきたい。
私は最近、 1865フライブルクを舞台にしたファンタジー物語『黒い森の影』を出版しました。この物語は、物語を通してコンテナセキュリティを教えるものです。これは私が探求しているより大きなアイデアの一部です。つまり、複雑なDevOpsの概念を、ストーリー、ビジュアル、キャラクターを通して記憶に残るものにするということです。私が取り組んでいるもう一つのプロジェクトは、Dockerコマンドを紹介するワークショップシリーズ「Docker Commandos」です。
技術的な面では、DockerとKubernetesのセキュリティに関する第2版を執筆中で、特にDockerの強化イメージについて重点的に取り上げています。

キャプション: ドッカーコマンドーパック
そしてコミュニティ面では、フライブルクのミートアップをより継続的で、より広範なエコシステムと繋がるものへと発展させていきたいと考えています。既にOpen Container Initiative支部にもなっていますが、より幅広い層にアピールするためにJavaユーザーグループ(JUG)を立ち上げることも検討しています。
もしあなたがテクノロジー業界で働いていたら、代わりに何をしていましたか?
おそらく私は論理学を研究する数学の教授になっていただろう。私はイランで、数学的論理を用いて自然言語をモデル化する範疇文法を研究する修士課程を修了していません。私のコンピュータサイエンスの修士論文も、基本的には数理論理学に関するものでした。
あるいは、私は古代言語の研究者になっていただろう。私は古代ペルシア語の楔形文字と、現在完全には解読されていないパフラヴィー語(Unicodeに追加予定)を読むことができます。もし私が技術関係の仕事 していなかったら、 残りの質問 に答えることに時間を費やしていたでしょう。
Dockerコミュニティとのコラボレーションで思い出に残るストーリーを共有できますか?
『DockerとKubernetesのセキュリティ』という書籍の出版は、Dockerコミュニティの協力なしには実現しなかったでしょう。物語はこうだ。
私がDocker Captainになって間もなく、技術系出版社のPacktから連絡があり、一緒に本を書いてみないかと誘われました。最初は断りました。自分には本を書くだけの知識がないと感じていたからです。しかし、彼らの主張は非常に説得力があった。
それから2年後、私は原稿を書き終え、それをフェンス越しに投げ捨てた。彼らが魔法のように仕事をしてくれるのを待っている間に、組織再編が行われ、最終的に私の役職を優先することはできないと言われました。彼らは私に「新しい出版社を探せばいい」と書いてきた。新しい出版社を見つけた。それは私自身だった。

キャプション:WeAreDevelopersカンファレンスでのDockerブース
私はDockerキャプテンたちに作業内容のレビューを依頼し始めました。私はベータ版をフライブルクの小さなコミュニティに配布しました。そして発売されると、多くのDockerキャプテン、Dockerの従業員、そしてDockerコミュニティのメンバーが、本を購入したり、口コミで広めたりすることで私を応援してくれました。
現在お気に入りのDocker製品や機能は何ですか、そしてその理由は何ですか?
シャイ・フルードが深淵に潜んでおり、ジャック・ザ・ビットコインマイナーが脆弱なサーバーすべてに暗号通貨マイナーをインストールしているため、Dockerの強化イメージが必要です。そのため、エコシステムはオープンソースでCVEフリーの基本イメージセットを必要としています。そしてこれは、有料顧客だけでなく、すべての人に提供されるべきです。なぜなら、私たちは皆、同じ船に乗っているからです。
キャプション:ビットコインマイナーのジャックが守護者のゴードと戦っている
最近解決したトリッキーな技術的課題について教えていただけますか?
技術的な問題自体は通常それほど難しくないが、解決策を設計するのは難しい。過剰設計なのか、それとも解決策が単純すぎて将来性がないのかを判断するのは難しい。先週、新しいマイクロサービスを設計していたのですが、その際に、自分のソリューションを安全に保つためにいくつかのルールを設定しました。
- 決定は延期できるべきだ。まだ決定を下さないでください。リポジトリ用のインターフェースを導入し、その実装を注入しました。そのため、後で別のデータベースを使用することになった場合でも、新しい実装を追加し、コードを1行変更するだけでサービスに注入できます。
- 物事には一つのやり方しかないべきだ。プロジェクトをローカルで実行する方法が3つある場合、それらは最終的に同期が取れなくなり、すべてが動作しなくなるでしょう。メインとなるソリューションを1つ選択してください。Docker Compose、Devcontainers、ローカルのnpm startをすべて同時に実行しないでください。
- すべてを自動化せよ。手作業で行う場合、ミスが発生しやすく、時間もかかります。デプロイメントで、SSHでサーバーに接続し、コミットハッシュを変更し、Docker Composeサービスを再起動するという手順を踏んでいるなら、それは間違ったやり方です。
- AIを信用してはいけない。私はクロード・コードを使っているのですが、半分くらいの確率で「それはやらないで、こうしなさい」と訂正しなければなりません。もしあなたがキッチンでコーヒーを飲みながら、AIにコードを書かせているとしたら、それは大惨事を招くことになるでしょう。研究によると、AIが生成したコードのかなりの部分は安全ではないことが示されている。
- 全てをテストしてください。すべてにCIチェックを追加する。私は、フォーマット、リンティング、テストの実行、カバレッジの確認、Dockerイメージの脆弱性のチェック、さらにはコミットメッセージの作成といった作業を担当していました。コミットメッセージに基づいて、セマンティックバージョニングを使用してバージョンを自動的に更新し、新しいリリースをトリガーします。
すべての開発者に知っておいてほしいDockerのヒントは何ですか?
ビルド時にSBOM認証を生成するのは非常に簡単です。CLIでフラグを渡すか、CIジョブに新しい引数を設定するか、Docker Bakeを使用している場合は2行のコードを追加するだけです。
キャプション: SBOM の認証により CVE の発見が容易になります
CLIを使用する:
$ docker buildx build --sbom=true -t <image> .
Docker Bakeを使用している場合:
variable "TAG" {
default = "latest"
}
variable "REPOSITORY" {
default = "mithra-backend"
}
group "default" {
targets = ["backend"]
}
target "backend" {
context = "."
dockerfile = "Dockerfile"
tags = ["${REPOSITORY}:${TAG}"]
attest = [
{
type = "provenance"
mode = "max"
},
{
type = "sbom"
}
]
}
そして、以下の方法で構築できます。
$ docker bake
そしてCIでは:
- name: Build and push with docker bake
uses: docker/bake-action@v5
with:
files: ./docker-bake.hcl
push: true
まだDocker Bakeを使っていないなら、検討してみる価値はある。これにより、Dockerビルドがより美味しくなります。
キャプション:アスガルドでベーキングコンテストを行うドッカーコマンドー
実生活で非技術的なオブジェクトをコンテナ化できるとしたら、それは何でしょうか、そしてその理由は何ですか?
私は世界のスナップショットを作成し、どのバージョンに住みたいかを選択できるようにするだろう。現実逃避のために『フォールアウト:ニューベガス』をプレイすることがある。皮肉な話だ。しかし、少なくとも大型エンジンは搭載されている。
オンラインでどこであなたを見つけられますか?
私のウェブサイトにはすべてのリンクが掲載されています: aerabi.com
LinkedInは私の主なソーシャルメディアプラットフォームです。ぜひフォローしてください: /in/aerabi 。
そして、昔ながらのTwitterが恋しくなった時は、時々BlueSky( @aerabi.com )に記事を書きます。
ラピッドファイアの質問
猫か犬か?
ホモ・サピエンス
朝型人間か夜型人間か?
吸血鬼
好きなホッとする食べ物は?
フェセンジャーン、でもそれが何かわからないなら、寿司
友人があなたを表す言葉を一言で表現しますか?
クレイジー
最近始めた趣味は?
ダークファンタジーを執筆する。正直なところ、最近は単に「ノンフィクション」と呼んでいます。
