Dockerは、 container と呼ばれる軽量のスタンドアロンパッケージを作成、デプロイ、管理できるツールです。 。これらのコンテナには、アプリケーションの実行に必要なコード、ライブラリ、ランタイム、システム設定、および依存関係があります。
このガイドでは、 YUMを使用してさまざまなLinuxディストリビューションにDockerEngineをインストールする方法について説明します。 またはDNF CentOSやFedoraを含むパッケージマネージャー、およびDockerイメージの取得と実行。
始める前に
-
サポートされているLinuxディストリビューションを実行しているLinuxサーバーにコマンドラインでアクセスできることを確認してください。そうでない場合は、「はじめに」および「コンピュートインスタンスのセットアップとセキュリティ保護」ガイドに従って、新しいLinodeを作成してください。
注 このガイドは、root以外のユーザーを対象としています。昇格された特権を必要とするコマンドには、接頭辞として sudo
が付けられます 。sudo
に慣れていない場合 コマンドについては、ユーザーとグループのガイドを参照してください。 -
次のDockerガイドを確認して、Docker、その利点、およびいつ使用するかについて理解を深めてください。
- Dockerの概要
- Dockerを使用する時期と理由
Dockerエンジンのインストール
Docker Engineは、Dockerコンテナーをデプロイするときに使用される基盤となるコンテナー化ソフトウェアです。次の手順では、 YUMを使用してCentOSとFedoraにDockerをインストールします パッケージマネージャー。
サポートされているディストリビューション: CentOS 7、CentOS 8(AlmaLinuxやRockyLinuxなどのRHEL 8の他の派生物を含む)、およびFedora 32(およびそれ以降)
注 YUM パッケージマネージャーはDNFに置き換えられました CentOS 8とFedoraでは、 yum
コマンドは、DNFへのシンボリックリンクとして引き続き存在します。そのため、これらの手順は引き続き意図したとおりに機能します。
-
Dockerが現在インストールされていないことを確認します。パッケージが見つからないことを示す出力は、無視しても問題ありません。
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
yum-utilsをインストールします
yum-config-manager
を含むパッケージ 。これにより、dnf-plugins-core
が自動的にインストールされます DNFを使用する場合。sudo yum install yum-utils
-
yum-config-manager
を使用して、Dockerリポジトリを追加します 。これは自動的にdnf config-manager
にマップされます DNFを使用する場合のコマンド。次のコマンドで、[url]
を置き換えます ディストリビューションのリポジトリのURLを使用:sudo yum-config-manager --add-repo [url]
- RHEL / CentOSおよび派生物:
https://download.docker.com/linux/centos/docker-ce.repo
- Fedora 32以降:
https://download.docker.com/linux/fedora/docker-ce.repo
- RHEL / CentOSおよび派生物:
-
Docker Engineとその他の必要なパッケージをインストールします:
sudo yum install docker-ce docker-ce-cli containerd.io
このステップの間に、GPGキーを受け入れるように求められる場合があります。指紋は
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
である必要があります 。これらの詳細を確認し、 yと入力します 受け入れる。
これらのディストリビューションの追加のインストール手順は、Dockerのドキュメントに記載されています:
- CentOSにDockerエンジンをインストールする
- FedoraにDockerエンジンをインストールする
Dockerの起動とテスト
Docker Engineをインストールしたら、Dockerを起動し、テストイメージを実行してすべてが機能していることを確認します。
-
Dockerサーバーが実行されていることを確認します。
sudo systemctl start docker
-
オプションで、サーバーの起動時に起動するようにDockerを構成します。このDockerインストール内で本番アプリケーションを実行する場合は、これをお勧めします。
sudo systemctl enable docker sudo systemctl enable containerd
-
「hello-world」イメージを実行して、Dockerが正しくインストールされていることを確認します。
sudo docker run hello-world
成功した場合、Dockerはhello-worldイメージをダウンロードして実行し、成功メッセージを出力する必要があります。他のテキストの中でも、出力には次のようなメッセージが含まれている必要があります。
Hello from Docker! This message shows that your installation appears to be working correctly.
非rootユーザーによるDockerの管理
デフォルトでは、sudo
Dockerコマンドを実行するにはが必要ですが、 dockerと呼ばれる新しいグループ 、インストール中に作成されました。 Dockerデーモンが起動すると、 docker用のUnixソケットが開きます。 グループメンバー。
続行する前に、制限されたユーザーアカウントを持っていることを確認してください。 sudoグループに属しています。制限付きユーザーアカウントをまだ作成していない場合は、ガイド「コンピュートインスタンスまたはLinuxユーザーとグループの設定と保護」を参照してください。
-
以下のコマンドを入力して、 dockerにユーザーを追加します グループ、 [user]を置き換えます 制限付きユーザーアカウントの名前で。
sudo usermod -aG docker [user]
-
制限付きユーザーとしてシステムにログインします。
-
制限付きユーザーが
docker
を実行できることを確認しますsudo
のないコマンド 「hello-world」イメージをもう一度実行します。docker run hello-world
出力には、前の出力と同様の成功メッセージが表示されます。
注意 docker groupは、rootユーザーと同様の特権を付与します。システムのセキュリティにどのように影響するかについて詳しくは、DockerのドキュメントにあるDocker DaemonAttackSurfaceガイドをご覧ください。 root権限を使用せずにDockerデーモンを実行するには、「Dockerデーモンをroot以外のユーザーとして実行する(ルートレスモード)」の手順に従います。
構成ファイルのロードによるエラーの解決
ユーザーがsudo docker
を実行した場合 グループに参加する前のコマンドでは、次のように構成ファイルのロードに失敗する場合があります。
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
問題は、ホームディレクトリ(〜/ .docker)の.dockerディレクトリがsudo
によって付与された権限で作成されたことです。 。
考えられる修正は2つあります。
-
.docker
を削除します ホームディレクトリからのディレクトリ。 Dockerは自動的に再作成しますが、カスタム設定はすべて失われます。 -
.docker
の権限を変更します コマンドを使用したディレクトリ:sudo chown example_user:example_user /home/example_user/.docker -R sudo chmod g+rwx "/home/example_user/.docker" -R
Dockerイメージを使用したコンテナーのデプロイ
Dockerイメージは、コンテナーを作成するための手順と仕様を含むテンプレートです。 Dockerを使用するには、最初にイメージを取得するか、dockerfileを作成して独自のイメージを作成する必要があります。詳細については、Dockerの概要を参照してください。
画像の一覧表示
システム上のすべてのイメージを一覧表示するには、次のコマンドを実行します。これにより、 hello-worldが出力されます。 前の手順で使用した画像、およびすでに取得している可能性のある追加の画像。
docker images
画像の検索
画像は、Docker Hub(Dockerの公式レジストリ)などのDockerレジストリに保存されます。そのWebサイトで画像を参照するか、次のコマンドを使用してDockerレジストリを検索できます。次のコマンドで、[keyword]
を置き換えます nginx など、検索するキーワードを使用します またはapache 。
docker search [keyword]
画像の取得
画像を見つけたら、サーバーにダウンロードします。次のコマンドで、[image]
を置き換えます 使用する画像の名前を使用します。
docker pull [image]
たとえば、公式のnginxイメージをプルダウンするには、次のコマンドを実行します:docker pull nginx
。
イメージの実行
次に、docker run
を使用して、イメージに基づいてコンテナを作成します 指図。繰り返しますが、[image]
を置き換えます 使用する画像の名前を使用します。
docker run [image]
イメージがまだダウンロードされておらず、Dockerのレジストリで利用できる場合、イメージは自動的にサーバーにプルダウンされます。
Dockerコンテナの管理
コンテナの一覧表示
システムで実行されているすべてのアクティブな(および非アクティブな)Dockerコンテナーを一覧表示するには、次のコマンドを実行します。
docker ps -a
出力は次のようになります。このサンプル出力は、hello-world
を示しています。 コンテナ。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5039168328a5 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago magical_varahamihira
コンテナの開始
[ID]
を置き換えて、次のコマンドでDockerコンテナを起動します 開始するコンテナに対応するコンテナIDを使用:
docker start [ID]
コンテナの停止
[ID]
を置き換えて、次のコマンドでDockerコンテナを停止します 停止するコンテナに対応するコンテナID:
docker stop [ID]
一部の画像(hello-world
など) image)実行後、自動的に停止します。ただし、他の多くのコンテナは、明示的に停止するように命令されるまで実行を継続するため、これらのコンテナをバックグラウンドで実行することをお勧めします。このような場合、このコマンドが役立ちます。
コンテナの削除
[ID]
を置き換えて、次のコマンドでDockerコンテナを削除します 削除するコンテナに対応するコンテナID:
docker rm [ID]
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- DockerのWebサイト
- Dockerのドキュメント
- containerdのWebサイト