Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dockerをはじめよう!

Avatar for MIKIO KUBO MIKIO KUBO
May 22, 2025
11

 Dockerをはじめよう!

初心者向けかんたんdocker入門

Avatar for MIKIO KUBO

MIKIO KUBO

May 22, 2025
Tweet

Transcript

  1. はじめに - Docker ってなんだろう? Docker ( ドッカー) とは? 一言で言うと「 コンテナ型仮想化」という技術を使って、アプリケーション(ソフト)を動かすための「

    環 境」を簡単に作ったり、配布したりできる仕組みです。 なんだか難しそうですね… 大丈夫、少しずつ理解していきましょう! なぜDocker が注目されているの? 「私のPCでは動いたのに、あなたのPCでは動かない…」 「開発環境を作るのが毎回大変…」 こんな悩みを解決してくれる、魔法のようなツールなんです! 2
  2. Docker を理解するためのキーワード 1. コンテナ (Container) Dockerの中心的な概念。アプリケーションとその実行に必要なもの(ライブラリ、設定ファイルなど)を全部 ひとまとめにした「 軽量な箱」のようなもの。 この箱ごとどこへでも持っていけて、どこでも同じように動かせます。 2.

    イメージ (Image) コンテナを作るための「 設計図」や「 テンプレート」のようなもの。 OS、ミドルウェア、アプリケーションなどが含まれています。 イメージがあれば、同じコンテナを何個でも作れます。 3. Dockerfile ( ドッカーファイル) 自分だけのオリジナルなイメージを作るための「 指示書」や「 レシピ」のようなもの。 テキストファイルに、どんなOSを使い、どんなソフトを入れ、どんな設定をするか、などを順番に書いていき ます。 4. Docker Hub ( ドッカーハブ) 世界中の人が作ったDockerイメージが公開されている「 イメージ置き場」(レジストリ)。 ここから便利なイメージをダウンロードしてすぐに使えます。GitHubのDocker版のようなイメージです。 3
  3. Docker を使うメリット - なぜ便利なの? 環境構築が超簡単! 「このソフトを動かすには、あれとこれをインストールして…」という面倒な作業が不要に。 Dockerイメージを使えば、数コマンドで必要な環境がすぐに手に入ります。 「どこでも同じように動く」を実現! 自分のPC、他の人のPC、サーバーなど、Dockerが動く環境ならどこでも同じようにアプリケーションを動か せます。

    「私の環境では動いたのに…」問題が激減します。 PC を汚さずに試せる! コンテナは独立した空間なので、色々なソフトを試しても、自分のPC本体の環境を汚しません。 不要になったらコンテナを削除するだけでOK。 チーム開発がスムーズに! チームメンバー全員が同じDockerイメージを使うことで、開発環境の差異によるトラブルを防げます。 軽量で高速! 従来の仮想マシン(Virtual Machine)に比べて、起動が速く、必要なリソースも少ないです。 4
  4. Docker のインストール - まずは準備から Dockerを使うには、まずお使いのPCにDocker Desktopをインストールする必要があります。 Windows の場合: Docker Desktop

    for Windows を公式サイトからダウンロードしてインストール。 WSL が必要 Mac の場合: Docker Desktop for Mac を公式サイトからダウンロードしてインストール。 Linux の場合: 各ディストリビューション(Ubuntu, CentOSなど)に合わせたDocker Engineのインストール手順が公式サイ トにあります。 公式サイト: https://www.docker.com/products/docker-desktop/ インストール後、Docker Desktopを起動して、クジラのアイコンがタスクトレイ(Windows)やメニューバー (Mac)に表示されれば準備OKです! 5
  5. Docker を使ってみよう! - Hello World! インストールが完了したら、さっそくDockerを体験してみましょう! お決まりの「Hello World」をDockerで実行します。 1. ターミナル(コマンドプロンプトやPowerShell

    、Mac のターミナル.app )を開きます。 2. 以下のコマンドを入力してEnterキーを押します。 docker run hello-world docker run : 「Dockerさん、コンテナを実行してください」という命令。 hello-world : 実行するイメージの名前。 何が起きるの? 1. Dockerはまず、あなたのPC(ローカル)に hello-world というイメージがあるか探します。 2. なければ、Docker Hubから自動的にダウンロードしてきます。 3. ダウンロードした hello-world イメージを元にコンテナを作成し、実行します。 4. コンテナが「Hello from Docker!」のようなメッセージを表示して終了します。 簡単ですね! これでDockerの第一歩は完了です 6
  6. Docker イメージを探して使ってみよう - Docker Hub 「 hello-world 以外にも色々なイメージを使いたい!」 そんな時は、Docker Hub

    で公開されているイメージを探してみましょう。 Docker Hub: https://hub.docker.com/ 例:Web サーバー (nginx) のイメージを使ってみる nginx (エンジンエックス) は、よく使われる高性能なWebサーバーソフトウェアです。 1. ターミナルで以下のコマンドを実行します。 docker run -d -p 8080:80 --name my-nginx nginx -d : バックグラウンドでコンテナを実行(デタッチモード) -p 8080:80 : PCの8080番ポートをコンテナの80番ポートに接続(ポートフォワーディング) これにより、PCのブラウザから http://localhost:8080 でアクセスできるようになります。 --name my-nginx : コンテナに my-nginx という名前をつける nginx : 使用するイメージ名 2. ブラウザで http://localhost:8080 にアクセスすると、nginxのウェルカムページが表示されるはずです! 7
  7. 動いているコンテナを確認・停止・削除 (1) 動いているコンテナの一覧を表示: docker ps -a オプションをつけると、停止中のコンテナも表示します ( docker ps

    -a )。 コンテナを停止する: docker stop <コンテナID または コンテナ名> 例: docker stop my-nginx コンテナを削除する: (停止しているコンテナのみ削除可能) docker rm <コンテナID または コンテナ名> 例: docker rm my-nginx 8
  8. Dockerfile でオリジナルイメージを作る - 基本 Docker Hubにあるイメージを使うだけでなく、自分でカスタマイズしたイメージも作れます。 そのための設計図が Dockerfile です。 簡単な例:Python

    の実行環境を作るDockerfile 1. 作業用のフォルダを作成します (例: my-python-app )。 2. そのフォルダの中に、 Dockerfile という名前のファイル(拡張子なし)をテキストエディタで作成し、以下のよ うに記述します。 # ベースとなるイメージを指定 (Python 3.9の公式イメージ) FROM python:3.9-slim # 作業ディレクトリを指定 (コンテナ内のフォルダ) WORKDIR /app # 必要なファイルをコンテナにコピー (今回は例として省略) # COPY . . # コンテナ起動時に実行するコマンド CMD ["python", "--version"] 10
  9. Dockerfile の主な命令: FROM : ベースにするイメージを指定します。 WORKDIR : コンテナ内での作業ディレクトリを設定します。 COPY :

    ホストPCのファイルをコンテナ内にコピーします。 RUN : イメージをビルドする際にコンテナ内で実行するコマンド(例: RUN apt-get update && apt-get install -y vim )。 CMD : コンテナ起動時にデフォルトで実行されるコマンド。 EXPOSE : コンテナが外部に公開するポート番号を指定します。 11
  10. Dockerfile からイメージをビルド&実行 作成した Dockerfile から、実際にDockerイメージを作ってみましょう。 これを「 ビルド (build)」と呼びます。 1. ターミナルで、

    Dockerfile があるフォルダに移動します。 2. 以下のコマンドを実行してイメージをビルドします。 docker build -t my-python-image . docker build : 「Dockerさん、イメージをビルドしてください」 -t my-python-image : 作成するイメージに my-python-image という名前 (タグ) をつけます。 . (ドット): Dockerfileがある場所 (カレントディレクトリ) を指定します。 3. ビルドが完了したら、作成したイメージを使ってコンテナを実行します。 docker run my-python-image CMD ["python", "--version"] で指定した通り、Pythonのバージョン情報が表示されれば成功です! これで、あなただけのオリジナルDockerイメージができました! 12
  11. Docker Compose - 複数のコンテナをまとめて管理 アプリケーションは、Webサーバー、データベース、アプリケーション本体など、複数のコンテナが連携して動くこと がよくあります。 そんな時に便利なのが Docker Compose (

    ドッカー コンポーズ) です。 Docker Compose とは? 複数のコンテナを定義し、まとめて起動・停止・管理するためのツールです。 docker-compose.yml というYAML形式の設定ファイルに、各コンテナの設定(使用イメージ、ポート、環境 変数など)を記述します。 13
  12. 簡単な docker-compose.yml の例 (Web アプリとDB) version: '3.8' # Composeファイルのバージョン services:

    # ここに複数のサービス(コンテナ)を定義 webapp: # サービス名 (任意の名前) image: my-custom-webapp-image # Webアプリのイメージ ports: - "8000:8000" # ホストの8000番をコンテナの8000番に depends_on: # 依存関係 (dbサービスが起動してからwebappを起動) - db db: # サービス名 image: postgres:13 # PostgreSQLデータベースの公式イメージ environment: # 環境変数 POSTGRES_USER: user POSTGRES_PASSWORD: password Docker Compose の主なコマンド: docker-compose up -d : 設定ファイルに基づいてコンテナをバックグラウンドで起動 docker-compose down : 起動しているコンテナを停止・削除 docker-compose ps : サービスの状態を表示 docker-compose logs <サービス名> : サービスのログを表示 14
  13. Docker を使う上での心構えとTips イメージはなるべく小さく! 不要なファイルやツールを含めないように意識しましょう。 alpine 系の軽量なベースイメージを使うのも有効です。 Dockerfile のキャッシュをうまく使おう! Dockerfileの各行はキャッシュされるので、変更の少ない行を上に書くとビルドが速くなります。 機密情報(パスワードなど)をイメージに含めない!

    環境変数やVolumeマウントなどを使って、外部から渡すようにしましょう。 1 コンテナ1 プロセスが基本! 一つのコンテナには、一つの役割(例:Webサーバーだけ、DBだけ)を持たせるのが推奨されます。 公式イメージを活用しよう! Docker Hubには多くの公式イメージがあり、セキュリティ的にも信頼性が高いものが多いです。まずはこれ らをベースに考えましょう。 15
  14. まとめ - Docker で開発をもっと楽しく! Dockerは、アプリケーションの実行環境を「 コンテナ」として簡単に作成・配布・実行できる仕組みです。 イメージ (設計図) と Dockerfile

    (指示書) が重要な役割を果たします。 Dockerを使うことで、 環境構築の手間を大幅に削減し、「どこでも同じように動く」を実現できます。 docker run でコンテナを実行し、 docker build でオリジナルイメージを作成できます。 複数のコンテナは Docker Compose で管理すると便利です。 Dockerを使いこなして、開発をもっと効率的に、もっと楽しくしましょう! 16
  15. 次のステップ - Docker をさらに活用するために 色々な公式イメージを試してみよう! WordPress, Node.js, Python, Ruby, MySQL,

    PostgreSQL など、興味のあるものをDocker Hubで探して動かし てみましょう。 自分のアプリケーションをDocker 化してみよう! 簡単なWebアプリやスクリプトなどをDockerfileを使ってイメージ化し、コンテナで実行してみましょう。 Volume マウントを理解しよう! ホストPCのフォルダとコンテナ内のフォルダを同期させる仕組みです。データの永続化や開発時のコード変更 の即時反映に便利です。 ネットワーク設定を学ぼう! コンテナ間の通信や、外部からのアクセス制御など、より高度な設定が可能です。 Docker Compose で複雑な構成に挑戦! Dockerの世界は広大です。少しずつステップアップしていきましょう! 17
  16. Q&A / よくある質問 Q. Docker と仮想マシン (VM) の違いは? A. VMはOSごと仮想化するのに対し、DockerコンテナはOSのカーネルを共有し、アプリケーションとその依

    存関係だけを分離します。そのため、Dockerの方が軽量で起動も高速です。 Q. Docker Desktop は有料ですか? A. Docker Desktopは、個人利用や小規模なビジネス(従業員250人未満かつ年間収益1000万ドル未満)では 無料です。大規模な企業は有料サブスクリプションが必要です。 Q. Windows Home でもDocker は使えますか? A. はい、WSL 2 バックエンドを使用することで、Windows 10/11 Home Editionでも Docker Desktop を利用 できます。 Q. コンテナを消したらデータも消えちゃいますか? A. 基本的には消えます。データを永続化したい場合は、「Volume (ボリューム)」や「Bind Mount (バインド マウント)」という仕組みを使って、データをコンテナの外(ホストPCや専用のデータ領域)に保存する必要 があります。 Q. Dockerfile の命令の順番は重要ですか? A. はい、非常に重要です。ビルド時のキャッシュ効率や、イメージのレイヤー構造に影響します。 18