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

Dockerをはじめよう!

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for MIKIO KUBO MIKIO KUBO
May 22, 2025
220

 Dockerをはじめよう!

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

Avatar for MIKIO KUBO

MIKIO KUBO

May 22, 2025
Tweet

More Decks by MIKIO KUBO

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