Dockerは、コンテナーを使用したアプリケーションの作成、構築、実行を容易にするために設計されたオープンソースツールです。 Dockerコンテナーはランタイムとして機能し、必要なすべての依存関係とライブラリーを備えているため、同じアプリケーションを他のOSでも実行できます。現在、コンテナベースのアプリケーションが広く使用されています。時間と労力を節約し、すべてのOSプラットフォームで手間のかからないアプリケーションを実行するために、Dockerコンテナーが広く採用されています。この記事では、Ubuntu20.04にDockerをインストールしてNginxコンテナを実行する方法を学習します。
Ubuntu 20.04へのDockerのインストールは、シンプルで簡単なプロセスです。 UbuntuでDockerリポジトリを更新し、GPGキーを取得し、Dockerパッケージと依存関係をインストールする必要があります。
前提条件
- 新しくインストールされたUbuntu20.04
- パッケージをインストールするためのSudo特権アカウント。
UbuntuにDockerをインストールする
Ubuntu 20.04の公式Dockerリポジトリを使用して、最新バージョンのDockerをインストールできます。このためには、公式のDockerリポジトリのGPGキーをシステムに追加し、リポジトリ構成をAPTソースに追加する必要があります。
DockerGPGキーをダウンロード
次のコマンドを実行してGPGキーを追加します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
DockerGPGキーをシステムリポジトリに追加
システムに公式のDockerリポジトリを追加して構成します。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
システムリポジトリの更新
次に、次のコマンドを使用して、APTパッケージを更新して新しいDockerパッケージを含めます。
$ sudo apt update
Dockerをインストールする
これで、次のコマンドを使用してDockerパッケージをインストールできます。
$ sudo apt install docker-ce
Dockerパッケージのインストール中に、インストーラーパッケージがsystemdをトリガーして、Dockerサーバーを自動的に有効にして起動します。次のコマンドを使用して、Dockerサービスのステータスを確認します。
Dockerステータスの確認
Dockerサービスがアクティブかどうかを確認するには、次のコマンドを実行します。
$ sudo systemctl is-active docker
Dockerサービスが有効になっているかどうかを確認するには、次のコマンドを実行します。
$ sudo systemctl is-enabled docker
Dockerサービスのステータスを確認するには、次のコマンドを実行します。
$ sudo systemctl status docker
Dockerを停止、起動、または再起動します
Dockerサービスを制御するために使用できる他のsystemctlコマンドは次のとおりです
$ sudo systemctl stop docker # stop docker service
$ sudo systemctl start docker # start docker service
$ sudo systemctl restart docker # restart docker service
Dockerのバージョンを確認する
dockerのバージョンを確認するには、次のコマンドを実行します。
$ docker version
Dockerを使用してNginxコンテナを実行する
DockerコンテナでNginxを実行するのは、非常にシンプルで簡単です。 DockerハブからNginxイメージをプルし、静的ファイルのWebサーバーとして機能するNginxコンテナーを作成する必要があります。最新のNginxイメージをプルするには、次のコマンドを実行します。
$ sudo docker pull nginx
Dockerイメージを一覧表示するには、次のコマンドを実行します:
$ sudo docker images
プルされたイメージからコンテナを実行するには、次のコマンドを実行します。
$ sudo docker run -d --name nginx-server -p 80:80 nginx
ここで、
d=コンテナをデタッチモードで実行する
name=作成するコンテナの名前
p=ポートコンテナはホストにマッピングされます
次のような出力が得られます:
$ 7ef30a6599d0a7f9618883441fdd2a683e7205287d09f92dcd3b63f4892551e7
出力には、Nginxイメージを使用して作成されたコンテナIDが表示されます。
実行中のコンテナを一覧表示するには、次のコマンドを実行します。
$ sudo docker ps -a
ターミナルで次のようなステータスのコンテナを見つけることができます:
Nginxはポート80のDockerコンテナで実行されています。ブラウザでURLhttp:// your-server-ipに移動すると、Nginxのインストールを確認できます。
Nginx用のDockerボリュームを作成する
作成したばかりのコンテナーは、コンテナー自体にすべてのNginx構成ファイルと静的ファイルをラップしています。何かを変更したりファイルを置き換えたりする必要がある場合は、毎回Dockerコンテナにアクセスする必要があります。同様に、コンテナを削除すると、すべてのファイルと構成ファイルも削除されます。この問題を軽減するには、ホストにDockerボリュームを作成し、コンテナーにマップして構成とWebファイルを保護する必要があります。この例では、ボリューム名としてnginx-dataを使用しています。あなたはあなた自身の仮定を持つことができます。
Dockerボリュームを作成するには、次のコマンドを実行します。
$ sudo docker volume create nginx-data
次のコマンドを実行して、Dockerボリューム情報を取得します。
$ sudo docker volume inspect nginx-data
次のような出力が得られます:
簡単にアクセスできるように、Dockerボリュームディレクトリのシンボリックリンクを作成できます。シンボリックリンクを作成するには、次のコマンドを実行します。
$ ln -s /var/lib/docker/volumes/nginx-data/_data /nginx
次に、永続データストレージを使用してNginxコンテナを起動します。
$ sudo docker run -d --name nginx-server -p 80:80 -v nginx-data:/usr/share/nginx/html nginx
どこで、
d=デタッチモードでコンテナを実行する
name=作成するコンテナの名前
p=ホストにマッピングされるポート
v=Dockerボリュームの名前
コンテナは永続データストレージで開始されました。次のように出力としてコンテナIDを取得します:
$ 3067684b1133a2c7e36381574ea9af3ebbb79dd2504f63ae3569bb059b74d905
次に、データ永続ディレクトリで利用可能なコンテンツを確認します。
$ ls /var/lib/docker/volumes/nginx-data/_Data
次の出力が端末に表示されます:
/ var / lib / docker / bytes / nginx-data / _data
にあるindex.htmlファイルの内容を変更しましょう$ sudo vi /var/lib/docker/volumes/nginx-data/_data/index.html
HTMLコードを変更して、ファイルを保存します。ブラウザでURLをナビゲートすると、Nginxのコンテンツが次のように変更されていることがわかります。
結論
この記事では、Dockerをインストールし、DockerハブからDockerイメージをプルし、コンテナーでアプリケーションを実行する方法を学習しました。また、Dockerコンテナを使用して永続データストレージとマップを作成する方法も学習しました。