(最終更新日:2023年7月)
✔このような方へ向けて書かれた記事となります
「DockerとUbuntuを組み合わせて使いたいが、どのように動かせば良い?」
「Docker上でのUbuntuの操作方法について学びたい」
「DockerとUbuntuを使った具体的なケースを教えて」
✔当記事を通じてお伝えすること
- DockerとUbuntuを組み合わせた基本的な使い方
- Docker上でのUbuntu操作のコツや応用方法
- DockerとUbuntuを利用した実践的な例
当記事では、DockerとUbuntuを組み合わせた環境の構築方法だけでなく、それを効果的に活用する方法まで、具体例を交えてわかりやすく解説しています。
最後までご覧ください。
DockerとUbuntuの基本概念
こちらでは、「Docker」と「Ubuntu」についてお伝えしていきます。
現代の開発環境をより効率的に構築・運用することが可能になるでしょう。
- Dockerとは?
- Ubuntuとは?
Dockerとは?
Dockerはコンテナ型の仮想環境を提供するツール。
アプリケーションの開発からデプロイまでを簡素化し、効率化できるものです。
Dockerを利用することで、異なるOSやハードウェア間でも、同一の環境を作り出すことが可能になります。
Dockerはその軽量性と速度からも、多くの開発者や企業に支持されています。
Ubuntuとは?
UbuntuはDebianをベースにしたLinuxディストリビューションのひとつです。
無料で使えることが多く、その使いやすさと高い安定性から広く用いられています。
以下のようなサービスがUbuntu上で使われるものです。
- Apache HTTP Server: ウェブサーバーとして広く使用されるサービスで、ウェブページやアプリケーションを提供する
- MySQL: データベースサーバーとして広く使用されるサービスで、データの保存や取得に利用される
- OpenSSH: セキュアなリモートアクセスを提供するサービスで、SSH経由でのリモート接続やファイル転送に使用される
- Nginx: 軽量で高パフォーマンスなウェブサーバーとして広く使用されるサービスで、Apacheと同様にウェブページやアプリケーションの提供に利用される
- Samba: ファイル共有サービスとして使用されるサービスで、Windowsとのファイル共有やプリンタ共有などをおこなえる
個人利用から企業のサーバー環境まで、幅広い用途に対応するため、世界中で非常に人気の高いOSとなっています。
Dockerの種類と選択
こちらでは、Dockerの種類についてお伝えします。
利用環境に合わせて適切なDockerの種類を選択することが重要です。
- Docker Engineとは
- Docker Desktopとは
- Docker Composeとは
- Docker EngineとDocker Desktopの違い
Docker Engineとは
Docker Engineは、コンテナ化技術を提供するオープンソースのプラットフォームです。
Docker Engineは主に以下の3つのコンポーネントから構成されています。
- Dockerデーモン(dockerd) : Docker Engineのバックエンドとして機能するプロセス。Docker CLIからのリクエストを受け取り、イメージ、コンテナ、ネットワーク、ボリュームなどのオブジェクトを管理します。
- Docker API : Dockerデーモンと他のソフトウェアがコミュニケーションを取るためのインターフェース。ユーザーやほかのソフトウェアはコマンドラインインターフェースやその他のツールからDockerデーモンと通信できます。
- Docker CLI(Command Line Interface) : Docker APIを使用してDockerデーモンと通信するためのコマンドラインツール。これによりユーザーはDocker Engineと対話し、イメージの作成、管理、実行などの操作できます。
Docker Engineはアプリケーションとその依存関係を一緒にパッケージ化が可能。
これらは「コンテナ」として知られ、Docker Engineを実行している任意のシステム上で、予測可能で再現性のある方法で実行できます。
これにより、「私のマシンでは動くけど本番環境では動かない」という問題を解消し、開発者がソフトウェアをより迅速に信頼性高くデリバリーすることを可能にします。
Docker Desktopとは
Docker Desktopは、WindowsまたはMacのPC上でDockerとDockerコンテナを簡単に使用するためのツールです。
Docker DesktopはDocker Engineを含んでいるだけでなく、GUIベースのダッシュボードや開発ツールの統合、Kubernetesとの統合などの追加機能を提供します。
以下は、Docker Desktopの主な特長です。
- Docker CLIとDocker Composeの統合:Docker Desktopは、Dockerコマンドラインインターフェース(CLI)とDocker Composeを含んでいます。これらを使用して、Dockerイメージをビルド、プル、プッシュし、Dockerコンテナを作成、実行、停止、削除できます。
- 簡単なKubernetesの統合:Docker DesktopにはKubernetesが組み込まれており、ユーザーは単一のノードのKubernetesクラスタをローカルで簡単に実行できます。
- Dev Environments:Docker Desktop 3.5.0から追加されたこの機能は、開発者がコードを共有し、新しい開発環境をすばやくセットアップするのを助けます。
- 自動更新:Docker Desktopは、新しいバージョンが利用可能になると自動的に更新します。ユーザーは常に最新のDockerとKubernetesのバージョンを使用して作業できます。
- Docker Hubとの統合:Docker HubはDockerイメージのリポジトリで、Docker Desktopから直接アクセスが可能。公開されているイメージの検索と管理、自分のイメージのプッシュとプルが容易になります。
- Docker Dashboard:GUIを使用してDockerコンテナとアプリケーションを管理できます。
Docker Desktopを使用することで、開発者はローカルの開発環境で簡単にDockerとKubernetesを使用し、アプリケーションの開発とテストを行うことができます。
Docker Composeとは
Docker Composeは、複数のDockerコンテナで構成されるアプリケーションを定義し、管理するためのツールです。
YAML形式の設定ファイル(**.yml)に各サービスの設定を記述することで、ひとつのコマンドでこれらのサービスを一緒に起動、停止、再起動が可能。
以下は、Docker Composeの主な機能と特徴です。
- サービス定義:各サービスはDockerfileまたはDockerイメージに基づいて定義され、それぞれのサービスはそれ自体がDockerコンテナであり、その内部でひとつ以上のプロセスを実行します。
- ネットワーキング:Docker Composeは自動的にサービス間のネットワークを設定します。これにより、各サービスはサービス名を使用してほかのサービスを参照できます。
- データボリューム:データの永続性を保つために、Docker Composeはデータボリュームをサポートします。これはDockerホスト上に保存され、コンテナが削除または再起動されてもデータが維持されます。
- 環境変数:環境変数を使用して、各サービスの設定をパラメータ化できます。同じdocker-compose.ymlファイルを異なる環境やデプロイシナリオで使用が可能になります。
Docker Composeは主に開発、テスト、ステージング環境で使用されますが、本番環境での使用も可能です。
ただし本番環境での使用には、より強力なオーケストレーションツールであるKubernetesのようなツールが一般的に推奨されます。
Docker EngineとDocker Desktop、Docker Composeの違い
それぞれのツールの特徴をまとめました。
ぜひ参考にしてください。
Docker Engine | Docker Desktop | Docker Compose | |
---|---|---|---|
目的 | Dockerコンテナの作成と実行を可能にする | WindowsやMacで簡単にDockerを使用する | 複数のDockerコンテナの定義と管理 |
対象OS | Linux、Windows、MacOS | Windows、MacOS | Linux、Windows、MacOS |
主な機能 | Dockerコンテナの作成と実行、イメージ管理 | Docker Engineを含む、GUIベースのダッシュボード、Kubernetesとの統合、開発ツールとの統合 | サービス定義、ネットワーキング、データボリューム管理、環境変数管理 |
コマンドライン支持 | はい | はい | はい |
GUI支持 | いいえ | はい | いいえ |
Kubernetes統合 | いいえ | はい | いいえ |
使用シーン | 一般的なDocker利用全般 | ローカルの開発とテスト環境、Kubernetesのローカル実行 | 複数コンテナからなるアプリケーションの開発、テスト、ステージング環境 |
ここで注意すべきは、これら3つのツールはそれぞれ異なる目的と機能を持つが、一緒に動作してより強力なDockerエコシステムを形成します。
例えば、Docker DesktopはDocker Engineを含み、Docker Composeと連携することで複数のコンテナからなるアプリケーションを簡単に開発、テストできる、などです。
UbuntuにDocker Engineをインストールする方法
こちらでは、UbuntuにDocker Engineをインストールする方法をお伝えします。
複数のインストール方法があり、それぞれの特徴を理解した上で、適切な方法を選びましょう。
- aptレポジトリを使ってDockerをインストールする
- Debianパッケージを使ってDockerをインストールする
- インストールスクリプトを使ってDockerをインストールする
aptレポジトリを使ってDockerをインストールする
aptレポジトリを利用すると、システムがDockerの新しいバージョンを自動的に検知し、アップデートが可能です。
コマンドラインから以下を実行します。
sudo apt-get update
sudo apt-get install docker-ce
Docker Engineをインストールできます。
Debianパッケージを使ってDockerをインストールする
Debianパッケージを使用することで、自分でパッケージをダウンロードし、手動でインストールが可能です。
公式サイトはこちら。
これはネットワーク接続が不安定な環境や、特定のバージョンを利用したい場合などに有効です。
公式サイトからダウンロードしたパッケージをdpkg
コマンドでインストールします。
dpkgコマンドの使い方はこちらで解説。
インストールスクリプトを使ってDockerをインストールする
Docker公式から提供されているインストールスクリプトを利用する方法もあります。
この方法を使用すると、必要なパッケージを自動的にダウンロードし、インストールできます。
ただし、スクリプトの内容を確認せずに実行することは、セキュリティ上推奨されません。
公式サイトをご覧ください。
Docker Engineの動作確認と権限設定
こちらでは、インストールの確認と動作確認について見ていきます。
コマンドラインツールなので、インストールされたか不安な方も多いでしょう。
- Ubuntu上でのDocker Engineの動作を確認する
- sudo権限なしでDockerを実行できる権限の設定方法
Ubuntu上でのDocker Engineの動作を確認する
Docker Engineが正しくインストールされ、動作していることを確認するには、ターミナル上で以下を実行しましょう。
docker run hello-world
このコマンドが成功し、”Hello from Docker!”と表示されれば、Docker Engineのインストールと動作は正常です。
sudo権限なしでDockerを実行できる権限の設定方法
UbuntuにDocker Engineをインストールしたら、ユーザをdockerグループに追加することをおすすめします。
なぜならsudo権限なしで、Dockerコマンドを実行できるようになるからです。
デフォルトの設定では、Dockerコマンドを実行する際にはsudo権限が必要となってしまいます。
以下がその手順です。
1.まず、ターミナルから以下のコマンドを実行し、現在のユーザーをdockerグループに追加します。
sudo usermod -aG docker $USER
2.このコマンドを実行した後、ログアウトして再ログインする、あるいは以下のコマンドを実行することで、新しいグループ設定が有効になります。
newgrp docker
これで、sudo権限なしでDockerコマンドを実行できるようになります。
再度docker run hello-world
コマンドを実行し、sudo権限なしで動作することを確認しましょう。
Docker Composeのインストールと利用
こちらでは、Docker Composeのインストール方法など、応用した使い方を見ていきましょう。
WordPress利用者向けのDevKinstaについても使い方がわかります。
- UbuntuにDocker Composeをインストールする
- DevKinstaの紹介(WordPress利用者向け)
UbuntuにDocker Composeをインストールする
Docker Composeは、複数のDockerコンテナを一元的に管理するツールです。
UbuntuにDocker Composeをインストールするには、以下のコマンドを実行します。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
上記のコマンドでDocker Composeのバージョン1.29.2をダウンロードし、実行可能な状態にします。
ダウンロードのURLは、Docker Composeの公式GitHubリリースページで最新のものを確認してください。
こちらのリンクはバージョンが古くなっている可能性があります。公式サイトからDocker Composeの最新バージョンを探してみてください。
DevKinstaの紹介(WordPress利用者向け)
DevKinstaは、WordPressのローカル開発環境を簡単に構築できるツールです。
Dockerを利用していますので、DockerとDocker ComposeがインストールされたUbuntu環境でも利用できます。
DevKinstaを使うと、プラグインやテーマの開発、データベースの管理、メール送信のテストなど、WordPressの開発を効率的におこなえます。
Dockerの基本的なコマンド
以下では、Dockerの基本的なコマンドについて解説していきます。
Dockerを実際に使ってみることで、その機能を体感できるでしょう。
- DockerイメージをDocker Hubから取得する
- Dockerイメージを使ってコンテナを起動する
- コンテナを停止および再起動する
- 作成済みのコンテナを管理する
DockerイメージをDocker Hubから取得する
Dockerでは、コンテナを作成するための設定が記述された「Dockerイメージ」を使用します。
イメージは、コンテナを作るための設計図のようなもの。
このDockerイメージは、Docker Hubというオンラインのリポジトリから無料で取得できるのです。
たとえば、Ubuntuのイメージを取得するには、以下のコマンドを使用します。
docker pull ubuntu:latest
docker pull
コマンドはDockerイメージを取得するためのコマンドで、ubuntu:latest
は取得したいイメージ名とタグを指定します。
ここでは、Ubuntuの最新版イメージを取得します。
公式サイトにはさまざまなバージョンが公開されているので、ぜひご覧ください。
Dockerイメージを使ってコンテナを起動する
次に、取得したDockerイメージを使って、コンテナを起動します。
以下のコマンドを実行します。
docker run -it --rm ubuntu:latest
コマンドの詳細です。
docker run
コマンド:コンテナを起動するためのコマンド-it
オプション:インタラクティブモード(ターミナルを開いて操作するモード)で起動するためのオプション--rm
オプション:コンテナ終了時にコンテナを自動的に削除するためのオプション
Ubuntuの中に入りたい時は、-itオプションは必須です。
覚えておきましょう。
コンテナを停止および再起動する
コンテナの停止や再起動は、docker stop
コマンドやdocker restart
コマンドを使用します。
以下が具体例です。
docker stop container_id_or_name
docker restart container_id_or_name
ここでcontainer_id_or_name
は停止や再起動したいコンテナのIDや名前を指定します。
作成済みのコンテナを管理する
Dockerでは、作成済みのコンテナを一覧表示したり、削除したりが可能です。
以下のコマンドを使用します。
docker ps -a # すべてのコンテナを一覧表示
docker rm container_id_or_name # コンテナの削除
すべてのコンテナを一覧表示するために使用されます。
コンテナの削除には docker rm コマンドを使用してください。
削除するコンテナのIDまたは名前を指定します。
まとめ
当記事では、Ubuntu環境下でのDockerの設定と基本的な操作方法について説明しました。
まとめると以下のとおりです。
- DockerとUbuntuの基本概念
- Dockerの種類と選択
- UbuntuにDocker Engineをインストールする方法
- Docker Engineの動作確認と権限設定
- Docker Composeのインストールと利用
- Dockerの基本的なコマンド
UbuntuでDockerを扱うことで、コンテナベースのアプリケーションの開発やテスト、デプロイが容易になります。
また、Docker Composeを使用することで複数のコンテナを一括で管理も可能です。
これらの機能は、効率的な開発環境の構築に不可欠。
当記事を参考に、Dockerの利用を始めてみてください。
これからもUbuntuとDockerを活用して、より良い開発環境を作っていきましょう。