Dockerとは

Build, Ship, and Run Any App, Anywhere

「Build, Ship, and Run Any App, Anywhere(どこでも、どんなアプリでも、構築・出荷・実行する)」 というスローガンと、港の荷役作業員(Dock Worker)がコンテナをテキパキと船に積み込む姿に由来しているのが Docker(ドッカー) です。

これらを一言でいうと、「アプリケーションの開発・実行環境を『コンテナ』という箱に詰め込んで、どこでも全く同じように動かせる仕組み」 のことです。

1. なぜ「Dock Worker(港湾労働者)」が由来なのか?

昔の貿易船は、荷物の形がバラバラ(樽、袋、箱など)で、積み込みや管理がめちゃくちゃ大変でした。しかし、「標準規格のコンテナ」が登場したことで、中身が何であれ同じように船やトラックに積めるようになり、物流が激変しました。

Dockerもこれと全く同じことをITの世界でやっています。

  • 昔: 「自分のパソコンでは動くのに、本番サーバーに持っていくと動かない!」(OSやバージョンの違いによるトラブル)
  • Docker: アプリも、それが動く環境(ライブラリなど)も、すべて「コンテナ」という規格の箱に詰め込む。

港湾労働者(Docker)がコンテナを運ぶように、どんな環境へも一瞬でアプリを運んで動かせるようになったのです。

2. スローガン「Build, Ship, Run」の本当の意味

🏗️ Build(構築)

アプリを動かすために必要な「プログラム」「設定ファイル」「ミドルウェア」などをすべてセットにした「イメージ(設計図)」を作ります。

🚢 Ship(出荷)

作ったイメージをクラウドや別のサーバーへ送ります。コンテナの中身は完全にパッケージ化されているので、移動中に壊れる心配がありません。

🏃 Run(実行)

受け取った場所でコンテナを起動します。Windowsでも、Macでも、Linux(AWSやGCPなど)でも、「全く同じ環境、全く同じ挙動」でアプリが爆速で動き出します。

3. 従来の「仮想化」と何が違うの?

よく「VirtualBox」や「VMware」などの仮想マシン(VM)と比較されますが、Dockerは圧倒的に軽くて速いのが特徴です。

比較項目従来の仮想マシン(VM)Docker(コンテナ)
仕組み1つのパソコンの中に、別のOS(ゲストOS)を丸ごと立ち上げる。ホスト(元)のOSをみんなで共有し、プロセスだけを隔離する。
起動時間数分(OSの起動を待つため)数秒〜一瞬
軽さギガバイト(GB)単位で重いメガバイト(MB)単位で超軽量

💡 例えるなら:

従来の仮想マシンが「1つの土地に、何棟も独立した**一軒家(OS)を建てる」イメージだとすれば、Dockerは「1つの大きなシェアハウス(OS)の中で、完全にプライベートな個室(コンテナ)**を割り振る」イメージです。水道や玄関(OSの核)は共有するので、安くて手軽に部屋を増やせます。

Docker=基本的にLinux環境を動かすものである。

4. Dockerは裏側ではLinuxが動いている

Dockerの「コンテナ」という技術は、もともとLinux OSが持っている特別な機能(隔離機能)を利用して作られたものだからです。

  • 名前空間(Namespaces): プロセスやネットワークを、まるで別のパソコンであるかのように分離する機能。
  • コントロールグループ(cgroups): CPUやメモリの使用量をコンテナごとに制限する機能。

これらはLinux独自の機能なので、Dockerコンテナの「中身(ベースとなるイメージ)」は、UbuntuやCentOS、AlpineといったLinuxディストリビューションになります。

5. じゃあ、なぜWindowsやMacでも動くの?

「でも、エンジニアはMacやWindowsで普通にDocker使ってるよね?」と思いますよね。

WindowsやMacでDocker(Docker Desktopなど)をインストールすると、実は自動的にバックグラウンドで軽量なLinuxの仮想マシンが立ち上がっています。

  • Windowsの場合:WSL 2(Windows Subsystem for Linux) という仕組みを利用して、Windowsの中でLinuxを爆速で動かし、その上でDockerを動かしています。
  • Macの場合: macOS専用の軽量な仮想化技術を使って、裏でLinuxを動かし、その上でDockerを動かしています。

つまり、私たちがWindowsやMacのターミナルで docker run と打ったとき、指示は裏にいるLinuxに送られ、そこでLinuxコンテナが起動しているのです。

6. なぜこの仕組みが最高なのか?

これの何が嬉しいかというと、「開発環境(自分のパソコン)」と「本番環境(クラウドサーバー)」を100%一致させられる点にあります。

現在、Webアプリケーションを動かす本番サーバー(AWS、GCP、さくらのVPSなど)のほとんどはLinuxです。

  • 昔: Macでプログラムを書いて、Linuxサーバーにデプロイしたら、OSの違いのせいでバグが出た。
  • 現在: Macの上で「Linuxコンテナ」を動かして開発し、その「Linuxコンテナ」をそのままLinuxサーバーに持っていくので、絶対に同じように動く。

「Dockerとは基本的にLinux環境を動かすものである」という認識は、Dockerのトラブルシューティングや、高度な使い方をする上で非常に重要な大前提になります。

💡 Google Cloud とは?

GCP(Google Cloud Platform)の、現在の正式名称Google Cloud(グーグル・クラウド)です!

2022年頃からブランド名がシンプルになり、現在は「GCP」ではなく「Google Cloud」と呼ぶのが公式の正しい名称となっています(ただ、エンジニアの間では今でも癖で「GCP」と呼ぶ人がたくさんいます)。

「Googleが自社のサービス(検索・YouTube・マップ・Gmailなど)を動かしている世界最強のITインフラを、一般の企業や個人開発者にも有料(一部無料)で切り売りしてくれるサービス」

パソコンを1台も持っていなくても、インターネットとブラウザさえあれば、世界最先端のサーバー、データベース、AI技術を数クリックで手に入れることができます。

🏆 なぜ数あるクラウドの中で「Google Cloud」が選ばれるのか?

競合であるAmazonの「AWS」やMicrosoftの「Azure」と比べて、Google Cloudには独自の強みが3つあります。

1. データ分析とAI(Geminiなど)が圧倒的に強い

Googleといえば検索やデータ解析のプロです。 テラバイト、ペタバイト級の超巨大データを数秒で検索できる 「BigQuery」 や、最新の生成AI(Gemini)を自分のシステムに組み込める 「Vertex AI」 は、競合他社が嫉妬するレベルの圧倒的な性能を持っています。

2. コンテナ(Docker)との相性が世界一

今や世界標準となったコンテナ管理技術「Kubernetes」を開発したのはGoogleです。そのため、 「Cloud Run」 のように、Dockerコンテナを最も簡単かつ低コストで動かせる仕組みが整っています。

3. Google専用の爆速ネットワーク網

Googleは世界中の海底に自前の光ファイバーケーブルを敷き詰めています。Google Cloudを使うということは、その「Google専用の超高速・超安定ネットワーク」に乗っかってアプリを世界中に配信できるということです。

🛠️ 私たちが使うときのイメージ

Google Cloudという巨大なサービス群は、いわば「ITのレゴブロック」です。

  • アプリのプログラム(Docker)を動かすブロック ── Cloud Run ◀── アプリのプログラム(脳みそ)
  • データを安全に保存するブロック ── Cloud SQL◀── データベース(金庫)
  • 画像や動画ファイルを置いておくブロック ── Cloud Storage
  • データを爆速で分析するブロック ── BigQuery

これら必要なブロックだけをレンタルして繋ぎ合わせることで、個人開発の小さなWebサイトから、メルカリや任天堂のような数千万人が使う大規模サービスまで、あらゆるものを形にすることができます。

SystemAI

Posted by zzz