Dockerは、コンテナー内でソフトウェアを実行するために使用されるツールです。含まれているソフトウェアはどのシステムでも同じように実行される必要があるため、開発者とユーザーがオペレーティングシステムとの互換性や依存関係について心配する必要がない優れた方法です。
Dockerは、Fedoraおよび他のほとんどのLinuxディストリビューションにダウンロードしてインストールできます。ただし、Red HatはディストリビューションでDockerのネイティブサポートを提供していないため、Fedoraにインストールするのは少し難しい場合があります。代わりに、RedHatはDockerの代わりとなるPodmanのサポートを推進しています。これにより、Dockerのインストールが少し難しくなりますが、Fedoraでは引き続き可能です。
このガイドでは、DockerをFedoraにインストールする方法と、コンテナー化されたソフトウェアのインストールを開始する方法を示します。 Dockerをインストールしたら、ディストリビューションのパッケージマネージャーを使用してアプリをダウンロードするのとほぼ同じ方法でDockerを使用してソフトウェアパッケージをインストールできます。 Dockerを使用することの違いは、すべてがより自動化され、互換性と依存関係が潜在的な問題ではなくなったことです。
このチュートリアルでは、次のことを学びます。
- Dockerのインストール方法
- Dockerを起動し、起動時に自動的に実行する方法
- rootなしでDockerを実行する方法
- Dockerイメージを検索する方法
- Dockerイメージをインストールする方法
- Dockerイメージを実行する方法
- さまざまなコマンドを使用してDockerを監視する方法
- Dockerコンテナを自動的に起動する方法

カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
システム | Fedora Linux |
ソフトウェア | Docker |
その他 | rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 |
コンベンション | # –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
FedoraにDockerをインストールする
Red Hatはいくつかの障害を抱えているため、単純なdnf install
でDockerをインストールすることはできません。 指図。最初にDockerリポジトリをシステムに追加してから、Fedoraにデフォルトでインストールされているいくつかの競合するパッケージをアンインストールする必要があります。
-
dnf-plugins-core
をインストールすることから始めます パッケージがまだシステムにない場合に備えて。これにより、dnfリポジトリを管理し、公式のDockerリポジトリを追加できるようになります。$ sudo dnf -y install dnf-plugins-core
- 次に、次のコマンドを使用してDockerリポジトリをシステムに追加します。
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
- Dockerのインストールを開始する前に、
podman
を削除する必要があります およびbuildah
Dockerと競合し、インストールが禁止されるため、システムからのパッケージ。$ sudo dnf remove podman buildah
- 最後に、次のコマンドを実行して、必要な3つのDockerパッケージをインストールできます。
$ sudo dnf install docker-ce docker-ce-cli containerd.io
- インストールが完了したら、Dockerサービスを開始し、オプションで、システムが再起動されるたびに実行できるようにします。
$ sudo systemctl start docker.service $ sudo systemctl start containerd.service $ sudo systemctl enable docker.service $ sudo systemctl enable containerd.service
- 次のコマンドを入力して、Dockerがインストールされていることを確認し、現在のバージョンに関する情報を収集できます。
$ sudo docker version
- 次のように入力することで、現在実行されているDockerコンテナの数を確認し、Dockerの構成済みオプションの一部をすばやく簡単に確認する方法もあります。
$ sudo docker info


rootなしでDockerを実行する
デフォルトでは、sudo
を使用する必要があります または、Dockerコマンドを実行するときはいつでもrootにログインします。この次の手順はオプションですが、現在のユーザーとしてDockerを実行する機能が必要な場合は、次のコマンドを使用してアカウントをdockerグループに追加します。
$ sudo usermod -aG docker $USER
これらの変更を有効にするには、システムを再起動する必要があります。
$ reboot
Dockerイメージの検索
これで、Dockerを使用してイメージをインストールする準備が整いました。インストールするイメージの名前がすでにわかっている場合は、次のセクションに進むことができます。 Dockerを介して目的のソフトウェアを検索する必要がある場合は、次のコマンド構文を使用できます。
$ docker search [name]
たとえば、人気のあるWebサーバーソフトウェアであるnginxを検索してみましょう。
$ docker search nginx

ご覧のとおり、nginxの公式画像が1つあります(OFFICIAL
で示されます)。 列)単にnginx
と呼ばれます 。他にも利用可能なリリースがあり、それらの説明を読んで、公式イメージとの違いを確認する必要があります。
Dockerイメージをインストールする
インストールするイメージが決まったら、次のコマンドを使用して、目的のソフトウェアをダウンロードするようにDockerに指示できます。例として、hello-world
をインストールします Dockerがイメージを正常にダウンロードして実行できるようにするために使用できるパッケージ。
$ docker pull hello-world

上のスクリーンショットの出力は、Dockerが指定したイメージを見つけてダウンロードできたことを示しています。
Dockerイメージの実行
イメージがダウンロードされたので、次のコマンドを使用してイメージを実行します。
$ docker run hello-world

Dockerの監視
Dockerには、イメージで何が起こっているか、イメージが使用しているシステムリソースの数などを確認するための多くのオプションがあります。次のコマンドは、Dockerとインストールされているイメージを監視するのに役立ちます。
実行中のDockerコンテナを確認し、現在のステータスを確認するには、次のように入力します。
$ docker container ls

インストールされているすべてのDockerイメージのリストを表示するには、次のように入力します。
$ docker images

実行中のイメージの現在のCPU、RAM、およびネットワーク使用量を確認するには、次のように入力します。
$ docker stats

Dockerのネットワーク構成を確認するには、次のように入力します。
$ docker network ls

コンテナを自動的に起動します
コンピューターの起動時にDockerサービスが自動的に開始されるようにする方法を見てきました。その手順をスキップした場合は、ここにもう一度コマンドがあります。
$ sudo systemctl enable docker.service $ sudo systemctl enable containerd.service
Dockerサービスを制御して、自動的に開始することもできます。これらの動作を制御するためのいくつかのコマンドを次に示します。 nginx
を使用します これらのコマンドのサンプルソフトウェアとして。
- 新しいコンテナを起動し、停止またはDockerが再起動しない限り自動的に再起動するように設定するには、次のコマンドを実行します。
$ docker run -d --restart unless-stopped nginx
- コンテナがすでに実行されている場合は、このコマンドを使用して、コンテナが自動的に再起動することを確認します。
$ docker update --restart unless-stopped nginx
- 次のコマンドを使用して、明示的に停止しない限り、すべてのコンテナーが自動的に再起動されるようにすることもできます。
$ docker update --restart unless-stopped $(docker ps -q)
- 手動で停止した場合でも、コンテナを常に再起動するには、
always
を使用しますunless stopped
の代わりにオプション 。$ docker update --restart always nginx
-
on-failure
を使用することもできます エラーが発生した場合にのみコンテナの自動再起動を許可するオプション。$ docker update --restart on-failure nginx
- 最後に、コンテナをデフォルト設定に戻すように構成します。つまり、自動再起動は行われません。
no
を使用します。 オプション。$ docker update --restart no nginx
トラブルシューティング
パーミッションエラーや「Dockerデーモンに接続できません」など、Dockerで問題が発生した場合、Docker開発者は、多数の一般的な問題をチェックするために実行できる便利なスクリプトを用意しています。ダウンロードして実行する方法は次のとおりです。
$ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh $ bash ./check-config.sh

まとめ
RHEL、ひいてはFedoraはDockerをネイティブにサポートしていませんが、このガイドで説明したように、Dockerを起動して実行することは可能です。 podmanやbuildahなどのRHELネイティブツールはDockerと互換性がありますが、実行するためにサーバー/クライアントアーキテクチャは必要ありません。可能な場合はネイティブツールを使用することを常にお勧めしますが、何らかの理由で元のDockerをインストールすることをお勧めします。