【初心者向け】Dockerの使い方|基本をコマンド例付きで解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年9月)

✔当記事はこんな方におすすめです

「Dockerってどう使うの?」

「Dockerの基本的な使い方を学びたい」

「Dockerを使った具体的な例を見たい」

✔当記事で解説すること

  • Dockerの基本的な操作方法
  • Dockerの利用方法とその応用
  • Dockerの使用例を通じた理解深化

当記事では、Dockerの基本概念から、より具体的な実例に基づく使い方まで、詳細に解説していきます。

ぜひ最後までお読みいただき、Dockerの使い方をマスターしましょう。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Docker入門

こちらでは、Dockerについての基本をお伝えしていきます。

Dockerの役割やその特徴、そしてDockerを構成するエコシステム、そして基本的な用語についても触れていきます。

  • Dockerの役割とは?
  • コンテナ vs ハイパーバイザ型仮想化
  • Dockerの機能とエコシステム
  • Docker用語集と説明

Dockerの役割とは?

Dockerは、開発から運用までのライフサイクル全体をカバーするオープンソースのプラットフォームです。

その主な役割は、アプリケーションを「コンテナ」という隔離された環境で実行することで、一貫性と再現性を保つこと。

開発者はあらかじめ定義した環境でコードを書き、そのままの状態でどのマシンでも実行できます。

コンテナ vs ハイパーバイザ型仮想化

コンテナとハイパーバイザ型仮想化は、どちらもアプリケーションを隔離した環境で動作させる技術ですが、その実装方法に大きな違いがあります。

  • ハイパーバイザ型仮想化:各VM(仮想マシン)が独立したOSを必要とする
  • コンテナ:ホストのOSの一部を共有しながら、名前空間という仕組みを使い各コンテナを隔離

この結果、コンテナはより軽量で高速な実行を可能にします。

Dockerの機能とエコシステム

Dockerは、以下のような基本的なコンテナのライフサイクルを管理する機能を提供します。

  • コンテナの作成
  • 起動
  • 停止
  • 削除

Dockerは単なる技術ではなく、エコシステムとして成り立っています。

Docker Hubはその一部で、パブリックまたはプライベートなイメージを共有するための中央リポジトリを提供します。

Dockerで覚えておくべき主な用語

Dockerの学習にあたって必要な用語を見ていきましょう。

用語説明使用例解説
記事
DockerfileDockerイメージを作成するためのスクリプト。
各命令は、イメージの新しいレイヤーを作成します。
FROM ubuntu:20.04Dockerfileの書き方
Imageコンテナを実行するための静的なスナップショット。
アプリケーション、依存関係、ランタイムを含むことができます。
docker pull nginxDockerイメージの基本
ContainerDockerイメージからインスタンス化された実行環境。docker run nginxDocker Containerについて
DockerHubDockerイメージを公開・共有するためのクラウドベースのレジストリサービス。docker push username/image-nameDockerHubとは?
Volumeホストとコンテナ間でデータを永続的に保存・共有するためのメカニズム。docker volume create myvolumeDockerボリュームの基本
Port Mappingホストのポートとコンテナのポートを関連付けること。docker run -p 8080:80 nginx
Docker Compose複数のコンテナを定義・実行するためのツール。
YAMLファイルでサービスを定義します。
docker-compose upDocker Composeの基本
Docker SwarmDockerのネイティブなクラスタリングとオーケストレーションツール。docker swarm init
LayerDockerイメージは複数のレイヤーで構成されています。
各レイヤーはDockerfileの命令ごとに作成されます。
Dockerfile内のRUN, COPY などの命令で新しいレイヤーが作成される。
RegistryDockerイメージを保存するためのサービス。
Docker Hubは最も有名なレジストリの一つです。
docker push registry-url/image-name

この一覧はDockerの基本的な用語をカバーしていますが、Dockerのエコシステムは非常に広大であり、多くの高度な機能やツールが存在します。

Dockerの強み

こちらでは、Dockerの主要な利点、とくにコードによるインフラ管理(Infrastructure as Code:IaC)とイミュータブル・インフラについてお伝えします。

これらの理解を深めることで、Dockerの真価を理解する手助けとなるでしょう。

  • コードによるインフラ管理(IaC)
  • イミュータブル・インフラ

コードによるインフラ管理(IaC)

Dockerは、コードによるインフラ管理(IaC)を実現します。

IaCとは、インフラ環境をコードで定義し、そのコードを通じてインフラのプロビジョニングと管理をおこなうアプローチのこと。

Dockerでは、Dockerfileというファイルでアプリケーションとその依存環境をコード化します。

例えば、以下は簡単なPythonアプリケーションのDockerfileの一例です。

# Pythonの公式イメージから
FROM python:3.7
# ワーキングディレクトリを設定
WORKDIR /app
# 必要なパッケージをコピー
COPY requirements.txt .
# パッケージをインストール
RUN pip install -r requirements.txt
# アプリケーションをコピー
COPY . .
# アプリケーションを起動
CMD ["python", "app.py"]

このDockerfileは、コンテナ内でPythonアプリケーションを動作させるための環境を完全にコード化しています。

イミュータブル・インフラ

イミュータブル・インフラは、一度デプロイされたらその状態を変更しないという考え方です。

新しいバージョンのアプリケーションをデプロイする際は、新しいイメージを作成し、新しいコンテナとしてデプロイします。

一貫性と再現性が保たれ、環境の変更による予期しない問題を避けられます。

新しいバージョンのアプリケーションをデプロイする場合は以下のコマンドです。

# 新しいバージョンのイメージを作成
docker build -t my-app:v2 .
# 新しいバージョンのコンテナをデプロイ
docker run -d -p 8080:8080 my-app:v2

このイメージはイミュータブルで、新しいバージョンのアプリケーションは新しいコンテナとしてデプロイされます。

これにより、開発と運用の間で環境の差異が生じることを防ぎます。

Dockerのインストールガイド

こちらでは、Dockerのインストール方法について詳しく説明します。

適切な方法でDockerをインストールすることが、その後の活用の第一歩となります。

  • Macでのインストール方法
  • Windowsでのインストール方法
  • Linuxでのインストール方法

詳しくはこちらでも解説しています。

Macでのインストール方法

MacでDockerをインストールするには、Docker Desktop for Macを利用します。

以下のコマンドを実行するか、直接Webサイトからダウンロードしてインストールしてください。

# Homebrewがインストールされていることを確認
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Dockerのインストール
brew cask install docker

インストールが完了したら、ApplicationsフォルダからDockerを開き、起動します。

Windowsでのインストール方法

WindowsでDockerを利用するには、Docker Desktop for Windowsを利用します。

公式サイトからインストーラーをダウンロードし、指示に従ってインストールしましょう。

ただし、Docker Desktopを利用するためには、WindowsのバージョンがProまたはEnterpriseで、かつHyper-VとContainersが有効化されている必要があります。

WindowsのPowerShellを開き、以下のコマンドを実行。

Hyper-VとContainersが有効かどうか確認してください。

# Hyper-VとContainersが有効化されているか確認
Get-WindowsOptionalFeature -Online | ? FeatureName -match 'Hyper-V' | ft
Get-WindowsOptionalFeature -Online | ? FeatureName -match 'Containers' | ft

必要であれば、以下のコマンドを利用してHyper-VとContainersを有効化します。

# Hyper-VとContainersの有効化
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All

これらの手順を経て、Docker Desktop for Windowsをインストールし、起動します。

Linuxでのインストール方法

Linuxでは、Docker EngineとDocker Composeを個別にインストールすることがおすすめです。

なぜならLinuxでもDocker Desktopは使えますが、未だベータ版だから。(2023年8月時点)

詳しくは以下の記事を参考にしてください。

Docker実行チェック

インストールが完了したら、Dockerが正しく動作するかを確認しましょう。

インストールが正しく完了したかを確認するために、以下のコマンドをターミナルまたはコマンドプロンプトに入力してください。

docker --version

出力が正しく表示されれば、Dockerは正しくインストールされ、動作していると言えます。

以下は例です。

Docker version 24.0.5, build ced0996

次に、Dockerが正常に動作していることを確認するために以下のコマンドを実行しましょう。

docker run hello-world

このコマンドは、Dockerが公式に提供しているhello-worldイメージを取得し、新しいコンテナを作成して実行します。

出力として「Hello from Docker!」などのメッセージが表示されれば、Dockerは正しく動作しています。

もしエラーが発生した場合は、再度インストール手順を確認し、問題を解決してください。

Docker基本操作:コンテナとイメージ

Dockerの稼働を確認したら、次に基本的な操作を学びましょう。

これらの基本操作をマスターすることで、Dockerの世界が一段と広がります。

  • 「hello-world」イメージの取得と解説
  • コンテナの作成と起動

「hello-world」イメージの取得と解説

先程稼働確認のために使ったhello-worldイメージは、最もシンプルなDockerイメージのひとつです。

以下のコマンドで再度取得してみましょう。

docker pull hello-world

このコマンドはDockerの公式イメージをDocker Hubから取得するもの。

pullコマンドについてはこちらで詳しく解説しています。

取得したイメージは、ローカルのDockerイメージリポジトリに保存されます。

取得したイメージの一覧は以下のコマンドで確認しましょう。

docker images

このコマンドを実行すると、hello-worldイメージを含む、すべてのローカルに存在するDockerイメージが一覧表示されます。

コンテナの作成と起動

Dockerイメージから新たなコンテナを作成するにはrunコマンドを使用します。

以下のコマンドを使ってhello-worldイメージから新たなコンテナを作成し、起動してみましょう。

docker run hello-world

このコマンドを実行すると以下がおこなわれます。

  1. Dockerはローカルにhello-worldイメージが存在するかを確認
  2. 存在しなければ、自動的にDocker Hubからイメージを取得
  3. そして新たなコンテナを作成し、起動

起動中のコンテナの一覧は以下のコマンドで確認できます。

docker ps

これらのコマンドを覚えておくことで、Dockerの基本的な操作ができるようになります。

イメージ、コンテナ作業、コマンド理解

Dockerの基本操作を理解したら、コンテナの操作方法をお伝えしていきます。

この章を通して、Dockerをもっと深く理解できるでしょう。

  • コンテナ内操作
  • コンテナの停止
  • コンテナからイメージ作成
  • コンテナとイメージの削除

コンテナ内操作

Dockerコンテナの内部に入り、直接コマンドを実行することも可能です。

その際にはexecコマンドを使用しましょう。

以下の例では、動作中のcontainer_idというコンテナにbashシェルを開くためのコマンドを示しています。

docker exec -it container_id /bin/bash

コンテナの停止

起動中のDockerコンテナを停止するにはstopコマンドを使用します。

以下のコマンドはcontainer_idというコンテナを停止するものです。

docker stop container_id
Dockerコンテナを停止する方法|一括停止のコマンド例付き
Dockerを停止する方法について詳しく知りたいですか?Dockerの停止はコンテナの管理やリソースの節約のために重要な操作です。当記事では、Dockerを停止する具体的なコマンドラインをコード付きで丁寧に解説しています。特にDockerの初心者の方にとって、見逃せません。

コンテナからイメージ作成

既存のコンテナから、新しいDockerイメージを作成することも可能です。

その際にはcommitコマンドを使用します。

以下は、container_idというコンテナからnew_image_nameという名前の新しいイメージを作成するものです。

docker commit container_id new_image_name

コンテナとイメージの削除

不要になったコンテナやイメージは削除できます。

コンテナを削除するにはrmコマンド、イメージを削除するにはrmiコマンドを使用しましょう。

docker container rm container_id
docker rmi image_id

これらのコマンドを理解し、使えるようになることで、Dockerの操作により自由度と効率性が加わります。

コンテナ運用技術

Dockerコンテナをうまく管理するためには、特権モードや名前付きボリュームなどのコンテナ運用技術を知ることが重要です。

  • 特権モード
  • 名前付きボリューム

特権モード

特権モードとは、コンテナ内からホストマシンのリソースに直接アクセスできるようにするモードです。

このモードは、コンテナ内のプロセスがホストマシン上で完全なシステムアクセス権を持つため、セキュリティ上のリスクも伴います。

以下は、特権モードでコンテナを実行する例です。

docker run --privileged -it ubuntu /bin/bash

名前付きボリューム

Dockerの名前付きボリュームは、コンテナ間でデータを共有したり、データを永続化したりするためのものです。

名前付きボリュームは以下のコマンドで作成できます。

docker volume create myvolume

Volumeについてはこちらの記事もご覧ください。

そして、コンテナを起動する際にボリュームをマウントすることで、コンテナからボリュームにアクセスできます。

docker run -v myvolume:/data ubuntu

これらの技術を理解し、使えるようになることで、より複雑なDockerの運用が可能です。

Dockerコマンドの省略形と完全形

Dockerコマンドには長い形式と短い形式があります。

例えば、以下の2つは同じコマンドです。

docker ps
docker container ls

前者が省略形、後者が完全形です。

省略形はより短く、タイプしやすいですが、完全形の方が直感的で理解しやすいです。

どちらを使うかは好みや状況によるでしょう。

まとめ

当記事では、Dockerの基本的な役割からコマンド、運用技術について学習してきました。

  • Dockerは、コードを実行するための環境をコンテナとしてパッケージ化するツール
  • 開発環境から本番環境まで、どの環境でも同じ動作をすることを保証できる
  • ハイパーバイザ型仮想化とは異なり、リソースのオーバーヘッドが少なく、起動が速いのが特徴

Dockerコマンドは、コンテナの作成、起動、停止、削除などをおこなうために使用します。

基本的な操作のためのコマンドは以下のとおりです。

  • docker run:コンテナを作成し、起動します。
  • docker ps:稼働中のコンテナを一覧表示します。
  • docker stop:コンテナを停止します。
  • docker rm:コンテナを削除します。

Dockerは、開発環境の統一、微サービスアーキテクチャの実装、CI/CDパイプラインの構築など、さまざまなシーンで活用できます。

特権モードや名前付きボリュームなどの運用技術を使うことで、さらに柔軟な運用が可能です。

ぜひこの知識を活用し、Dockerの可能性を最大限に引き出してください。

タイトルとURLをコピーしました