このチュートリアルは、Docker関連の記事シリーズの続きであり、最も頻繁に使用されるDockerコマンドについて説明しています。 Dockerの概要を簡単に説明してから、サーバーへのDockerのインストールにジャンプします。次に、Dockerコンテナ、イメージ、ボリュームを管理するために必要なすべてのコマンドについて説明します。このガイドに従って10分でプロのDockerユーザーになりましょう。
Dockerとは
Docker は、アプリケーションを開発、出荷、および実行するためのオープンプラットフォームです。これは、デスクトップからクラウドまで、アプリをパッケージ化して共有するための標準的なデファクトです。
その目標を達成するために、Dockerはコンテナを使用しています。
コンテナには次の特徴があります。
- コンテナは、ソフトウェアと必要なすべてのライブラリのパッケージです。
- 起動されるとすぐに、コンテナがアプリケーションのランタイム環境を決定します。
- コンテナは仮想マシンよりも軽量であるため、はるかに高速に起動できます。
- コンテナは、複数のレイヤーで構成されるイメージの形式で配布されます。複数のコンテナでこれらのレイヤーを再利用できます。
上記の機能により、次のことが可能になります。
- 展開用の分離された環境を構築します。
- アプリケーションを数分で起動します。
Dockerは、ソフトウェア開発プロセスのすべてのステップを簡素化および自動化するのに役立ちます。
Dockerの重要な機能は次のとおりです。
- Dockerには巨大なコミュニティがあります。
- Dockerは、ソフトウェアを配布するためのシンプルで軽量な方法です。
- Dockerには、考えられるすべての目的のためのコンテナの巨大なパブリックリポジトリがあります。
- Dockerは開発と運用のコストを削減します。
- Dockerの構成は簡単で迅速です。
- Dockerはアプリケーションの分離を提供します。
- Dockerイメージには、バージョン管理されたレイヤーがあります。
- Dockerはコンテナ管理のすべてのステップを自動化します。
Dockerは、Linux、macOS、およびWindowsオペレーティングシステムにインストールできます。
Dockerをインストールする
このセクションでは、LinuxオペレーティングシステムにDocker CE(コミュニティエディション)パッケージをインストールする方法について説明します。
AWSクラウドを使用している場合は、CloudFormationを使用したEC2インスタンスへのDockerの自動インストールに関する記事をお勧めします。
Ubuntu/DebianにDockerをインストールする
デフォルトでは、UbuntuまたはDebianのデフォルトリポジトリには最新バージョンのDockerCEパッケージが含まれていません。そのため、DockerCE公式リポジトリをシステムに追加する必要があります。
リポジトリを追加する前に、次のコマンドを実行して、必要な依存関係をいくつかインストールします。
apt-get install apt-transport-https ca-certificates curl software-properties-common curl -y
すべての依存関係をインストールした後、次のコマンドを使用してDockerGPGキーをインポートします;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
次に、次のコマンドを使用して、DockerCE公式リポジトリをAPTソースファイルに追加します。
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
リポジトリが追加されたら、リポジトリキャッシュを更新する必要があります。次のコマンドで更新できます:
apt-get update -y
リポジトリが最新になったら、次のコマンドを実行して、最新バージョンのDockerCEをシステムにインストールします。
apt-get install docker-ce -y
上記のコマンドは、Docker CEパッケージをシステムにインストールし、サービスを自動的に開始します。
次のコマンドを実行して、インストールされているDockerCEのバージョンを確認できます。
docker --version
次の出力にDockerバージョンが表示されます。
Docker version 19.03.13, build 4484c46d9d
システムからDockerパッケージを削除する場合は、次のコマンドを実行します。
apt-get remove docker-ce
CentOS/RHELにDockerをインストールする
CentOSまたはRHELオペレーティングシステムの場合、システムにDockerCEリポジトリをインストールする必要があります。以下に示すように、DNFコマンドを使用して、DockerCEリポジトリを追加して有効にすることができます。
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Docker CEリポジトリーが追加されたら、次のコマンドを実行して、DockerCEの使用可能なすべてのバージョンを一覧表示できます。
dnf list docker-ce --showduplicates | sort -r
次の出力で完全なリストを取得する必要があります:
docker-ce.x86_64 3:19.03.13-3.el8 docker-ce-stable
Docker CE Stable - x86_64 54 kB/s | 3.8 kB 00:00
CentOS-8 - Extras 14 kB/s | 8.1 kB 00:00
CentOS-8 - Base 4.6 MB/s | 2.2 MB 00:00
CentOS-8 - AppStream 4.7 MB/s | 5.8 MB 00:01
Available Packages
次に、次のコマンドを実行して、最新バージョンのDockerCEをインストールします。
dnf install docker-ce --nobest
Dockerがインストールされたら、次のコマンドを使用してインストールされたバージョンを確認します。
docker --version
次の出力が得られるはずです:
Docker version 19.03.13, build 4484c46d9d
Dockerサービスを開始するには、次のコマンドを実行します。
systemctl start docker
Dockerサービスを停止するには、次のコマンドを実行します。
systemctl stop docker
次のコマンドを実行して、Dockerに関する詳細情報を表示することもできます。
docker info
次の出力が表示されます。
システムからDockerパッケージを削除する場合は、次のコマンドを実行します。
dnf remove docker-ce
Dockerを使用したコンテナーの管理
docker container
コマンドは、コンテナのライフサイクルを管理するために使用されます。コンテナを実行するためのイメージがない場合、Dockerはレジストリに移動してダウンロードします。
Dockerコンテナを実行する
次の構文を使用して、Dockerレジストリからイメージをダウンロードし、コンテナを作成します。
docker container run [your-image-name]
たとえば、次のコマンドを実行して、ApacheWebサーバーコンテナを作成します。
docker container run httpd
次の出力が得られるはずです:
オプション--rm
を使用できます Docker runコマンドを使用して、コンテナーが終了した後にコンテナーを削除します。
docker container run --rm httpd
Dockerコンテナシェルに接続
オプション-it
を使用できます Dockerのrunコマンドを使用して、Apacheコンテナを作成して起動し、インタラクティブなbashシェルにアタッチします。
docker container run -it httpd /bin/bash
次の出力が得られるはずです:
これで、コンテナ内で任意のコマンドを実行できます。
オプション-td
を使用できます Docker runコマンドを使用して、Apacheコンテナーを作成および開始し、実行を継続します。
docker container run -td httpd
次の出力が得られるはずです:
Dockerコンテナ名を設定する
オプション--name
を使用できます Docker runコマンドを使用して、次の構文を使用してコンテナー名を割り当てます。
docker container run --name [container-name] -td [image-name]
たとえば、Apacheイメージから新しいコンテナを作成し、apacheweb
という名前を割り当てます。 次のコマンドを使用します:
docker container run --name apacheweb -td httpd
外部マシンのコンテナプロセスにアクセスする場合は、コンテナポートを外部ネットワークに公開できます。
この場合、オプション-p
を使用できます 以下に示すように、Dockerコマンドを使用して特定のポートを公開します。
docker container run -p [host-port]:[container-port] --name [container-name] -dit [image-name]
たとえば、Apacheウェブサーバーコンテナを作成し、コンテナポート80をポート 8080に公開します。 次のコマンドを使用します:
docker container run -p 8080:80 --name apacheweb -dt httpd
これで、URL http:// localhost:8080 を使用して、コンテナ内で実行されているApacheWebサーバーにアクセスできます。 。
システムで実行中および停止中のすべてのコンテナーを一覧表示するには、次のコマンドを実行します。
docker ps -a
次の出力にすべてのコンテナが表示されます。
システムで実行中のコンテナのみを一覧表示するには、次のコマンドを実行します。
docker ps
次のコマンドを使用してコンテナを一覧表示することもできます。
docker container ls
Dockerコンテナの統計を表示する
apacheweb
という名前の実行中のコンテナ(CPUとメモリの使用率、ネットワークとディスクI / O)のライブ統計を表示するには 、次のコマンドを実行します:
docker stats apacheweb
次の出力が表示されます。
apachewebという名前の実行中のコンテナ内で実行中のすべてのプロセスを一覧表示するには 、次のコマンドを実行します:
docker top apacheweb
次の出力が表示されます。
Dockerコンテナログを表示する
apachewebという名前の実行中のコンテナのログを表示するには 、次のコマンドを実行します:
docker logs apacheweb
次の出力が表示されます。
Dockerコンテナの開始、停止、一時停止
apachewebという名前の実行中のコンテナを停止するには 、次のコマンドを実行します:
docker container stop apacheweb
apachewebという名前のコンテナを起動するには 、次のコマンドを実行します:
docker container start apacheweb
apachewebという名前のコンテナを一時停止するには 、次のコマンドを実行します:
docker container pause apacheweb
Dockerコンテナを再起動または強制終了します
apachewebという名前の実行中のコンテナを再起動するには 、次のコマンドを実行します:
docker container restart apacheweb
apachewebという名前の実行中のコンテナを強制終了します 、次のコマンドを実行します:
docker container kill apacheweb
実行中のコンテナに接続するには、次のコマンドを実行します。
docker container exec -it apacheweb /bin/bash
実行中のコンテナ内でコマンドを実行するには、次のコマンドを実行します。
docker container exec -it apacheweb ls
Dockerイメージの管理
このセクションでは、Dockerイメージを管理するために最も一般的に使用されるコマンドをいくつか紹介します。
Dockerレジストリからイメージをダウンロードまたはプルするには、次の構文を使用します。
docker pull [image-name]
たとえば、次のコマンドを使用して、DockerレジストリからNginxWebサーバーイメージをプルできます。
docker pull nginx
次の出力が得られるはずです:
既存のイメージをDockerレジストリにアップロードする場合は、次の構文を使用します。
docker push [image-name]
DockerTheRegistryにログイン
まず、次のコマンドを使用してDockerレジストリにログインする必要があります。
docker login
ログインしたら、次のコマンドを実行してNginxイメージのIDを取得し、次のコマンドでイメージにタグを付けます。
docker images
出力:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 3 weeks ago 133MB
httpd latest 3dd970e6b110 3 weeks ago 138MB
Dockerイメージにタグを追加
次に、次のコマンドで画像にタグを付けます。
docker tag f35646e83998 amaksimov/nginx
場所:
-
f35646e83998
画像ID、 amaksimov Dockerレジストリ名とnginx 画像の名前です。
次に、次のコマンドを使用してNginxイメージをDockerレジストリにプッシュします。
docker push amaksimov/nginx
次の出力が表示されます。
次の構文を使用して、既存のコンテナからイメージを作成することもできます。
docker commit [container-name] [new-image-name]
たとえば、Apacheコンテナからイメージを作成し、次のコマンドを実行します。
docker commit apacheweb apache-image
次のコマンドを実行して、既存のイメージをtarアーカイブに保存するには:
docker save apache-image > apache-image.tar
Dockerイメージの履歴
次のコマンドを使用して、Dockerイメージの履歴を印刷できます。
docker history apache-image
次の出力が得られるはずです:
次の構文を使用して、Dockerイメージを削除できます。
docker rmi [image-name]
たとえば、Apacheイメージを削除する場合は、httpd
を使用しているコンテナを停止する必要があります。 画像:
docker container stop apacheweb
docker rm apacheweb
まず、apache-image
を削除する必要があります 画像:
docker rmi apache-image
その後、httpd
を削除します 次のコマンドを使用した画像:
docker rmi httpd
時間の経過とともに、手動で作成されたイメージとコンテナは、サーバーに混乱をもたらす可能性があります。すべてをクリーンアップする方法については、Dockerのよくある質問をご覧ください。
Dockerボリュームの管理
新しいコンテナを作成し、一部のデータを保存し、コンテナを削除すると、データは失われます。この場合、ホストシステム上にボリュームを作成し、このボリュームを使用してコンテナを起動できます。コンテナを削除した後、ボリュームからデータを取得できます。 Dockerボリュームを使用して、複数のコンテナー間でデータを共有することもできます。
このセクションでは、最も一般的に使用されるdocker volume
例を含むコマンド。
Dockerボリュームを作成
datavolume
という名前の新しいボリュームを作成するには 次のコマンドを使用します:
docker volume create datavolume
作成したボリュームを一覧表示するには、次のコマンドを実行します。
docker volume ls
次の出力が表示されます。
Dockerボリューム情報を印刷する
ボリュームに関する詳細情報を印刷するには、次のコマンドを実行します。
docker inspect datavolume
次の出力が表示されます。
apachewebという名前の新しいコンテナを作成し、ホストシステムのデータボリュームをコンテナの/ mntディレクトリにマウントするには、次のコマンドを実行します。
docker run -it --name apacheweb1 --mount source=datavolume,destination=/mnt -td httpd
ボリュームを削除するには、次のコマンドを実行します。
docker volume rm datavolume
未使用のDockerイメージをすべて削除するには、次のコマンドを実行する必要があります。
docker rmi $(docker images -a -q)
次のコマンドを実行すると、終了したすべてのDockerコンテナを削除できます。
docker rm $(docker ps -a -f status=exited -q)
すべてのDockerコンテナを停止するには、次を実行する必要があります:
docker stop $(docker ps -a -q)
停止したすべてのDockerコンテナを削除するには、次を実行する必要があります:
docker rm $(docker ps -a -q)
すべての未使用のDockerイメージ、コンテナー、ボリューム、ネットワークを削除する方法
未使用のDockerリソースをすべて削除するには、次のコマンドを使用できます。
docker system prune
すべてのDockerリソース(使用済みおよび未使用)を完全に削除するには、次のコマンドを実行します:
docker system prune -a
上記のガイドでは、最も一般的に使用されるDockerコマンドとその使用法について例を挙げて学習しました。これが日常のタスクの実行に役立つことを願っています。