RHEL 8 /CentOS8の最新リリース。RedHatは独自のツールbuildah
を構築しました。 およびpodman
、既存のDockerイメージとの互換性を目指し、デーモンに依存せずに動作し、特別な権限を必要とせずに通常のユーザーとしてコンテナーを作成できるようにします(ただし、いくつかの制限があります。たとえば、執筆時点では、まだ不可能です。ホストポートを権限なしでコンテナにマップします。
ただし、一部の特定のツールはまだ不足しています。docker-compose
に相当します。 たとえば、まだ存在していません。このチュートリアルでは、CentOS7の公式Dockerリポジトリを使用して、Rhel8に元のDockerCEをインストールして実行する方法を説明します。
このチュートリアルでは、次のことを学びます。
- RHEL 8 /CentOS8でdocker-ceリポジトリを有効にする方法
- docker and docker-compose on RHEL 8 /CentOS8をインストールする方法
RHEL 8 /CentOS8にインストールされたDocker
使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
RHEL 8 / CentOS 8 | |
Dockerバージョン18.09.2 | |
root権限でコマンドを実行する権限。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
Dockerとは何ですか?
Dockerは、containers
内でのアプリケーションの作成と配布を可能にするオープンソースプロジェクトです。 、ホストシステムから独立して簡単に複製できる標準化された環境です。 Red Hat Enterprise Linux 7ではDockerが公式にサポートされていましたが、このオープンソースオペレーティングシステムの新しいリリースでは、RedHat自体が開発した一連の他のツールbuildah
に置き換えられました。 およびpodman
。
ただし、外部リポジトリを使用することで、Docker CE(Community Edition)をインストールすることは可能です。このチュートリアルでは、このリポジトリをインストールする方法を説明します。ただし、元々はCentOS 7
を対象としていたことに注意してください。 (RHELクローン)、DockerのコミュニティバージョンはRed HatEnterpriseLinuxを公式にサポートしていません。このため、問題が存在します。以下でそれらについて説明します。
外部リポジトリの追加
DockerはRHEL8/ CentOS 8では使用できないため、ソフトウェアを入手するには外部リポジトリを追加する必要があります。この場合、公式のDocker CE CentOSリポジトリを使用します。これは、執筆時点では、RHEL 8 /CentOS8にDockerCEをインストールする唯一の方法です。
dnf config-manager
ユーティリティを使用すると、特に、ディストリビューションのリポジトリを簡単に有効または無効にできます。デフォルトでは、appstream
のみ およびbaseos
リポジトリはRhel8で有効になっています。 docker-ce
も追加して有効にする必要があります レポ。このタスクを実行するために必要なのは、次のコマンドを実行することだけです。
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
次のコマンドの出力を確認することで、リポジトリが有効になっていることを確認できます。
$ sudo dnf repolist -v
上記のコマンドは、有効になっているすべてのリポジトリに関する詳細情報を返します。これは、この時点で表示されるはずです:
Repo-id : docker-ce-stable Repo-name : Docker CE Stable - x86_64 Repo-revision: 1549905809 Repo-updated : Mon 11 Feb 2019 06:23:29 PM CET Repo-pkgs : 30 Repo-size : 618 M Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable Repo-expire : 172,800 second(s) (last: Mon 18 Feb 2019 10:23:54 AM CET) Repo-filename: /etc/yum.repos.d/docker-ce.repo Repo-id : rhel-8-for-x86_64-appstream-rpms Repo-name : Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) Repo-revision: 1542158694 Repo-updated : Wed 14 Nov 2018 02:24:54 AM CET Repo-pkgs : 4,594 Repo-size : 4.9 G Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os Repo-expire : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:55 AM CET) Repo-filename: /etc/yum.repos.d/redhat.repo Repo-id : rhel-8-for-x86_64-baseos-rpms Repo-name : Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs) Repo-revision: 1542158719 Repo-updated : Wed 14 Nov 2018 02:25:19 AM CET Repo-pkgs : 1,686 Repo-size : 925 M Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os Repo-expire : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:56 AM CET) Repo-filename: /etc/yum.repos.d/redhat.repo Total packages: 6,310
docker-ceのインストール
docker-ce-stable
これで、リポジトリがシステムで有効になりました。リポジトリには、docker-ce
のいくつかのバージョンが含まれています パッケージ、それらすべてを表示するには、次を実行できます:
$ dnf list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
インストールするバージョンは何ですか?さて、RedHatはどういうわけかcontainerd.io
のインストールをブロックしたようです> 1.2.0-3.el7
、これはdocker-ce
の依存関係です 。このため、sudo dnf install docker-ce
を実行するだけです。 コマンド、動作しません。すぐにわかるように、この問題を回避することはまだ可能です。一度docker-ce
がインストールされていますが、別の問題が明らかになります。firewalld
である限り 、システムファイアウォールマネージャーが有効になっている、DNS resolution
Dockerコンテナ内は機能しません。
もちろん、これは重大な問題です。ただし、それでもインストールを続行する場合は、依存関係の問題を回避するために使用できる方法を次に示します。
- 特定のバージョンの
docker-ce
をインストールしますcontainerd.io
のインストール可能なバージョンが必要です パッケージ; -
--nobest
を提供してインストールを強制します オプション - 利用可能な最新の
containerd.io
をインストールします 手動でrpm;
特定のバージョンのdocker-ceをインストールする
docker-ce
のバージョンを作成している時点 問題なくインストールされるのは次のとおりです。
- docker-ce-3:18.09.1-3.el7
- docker-ce-18.06.3.ce-3.el7;
- docker-ce-17.12.1.ce-1.el7.centos
特定のバージョンをインストールするには、次のように完全修飾パッケージ名を指定するだけです。
$ sudo dnf install docker-ce-3:18.09.1-3.el7
–nobestオプションを使用してdocker-ceを強制的にインストールします
通常、パッケージをインストールするとき、利用可能な最良の候補がリポジトリから選択されます。この場合、たとえば、最新バージョンのdocker-ce
をインストールします。 試行されます(そして失敗します)。 --nobest
を使用する オプションで、この動作を変更して、docker-ce
の最初のバージョンを使用できます。 満足できる依存関係を持つものが「フォールバック」として選択されます。この場合、3:18.09.1-3.el7
。
$ sudo dnf install --nobest docker-ce Dependencies resolved. Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best candidate for the job - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded ======================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================= Installing: docker-ce x86_64 3:18.09.1-3.el7 docker-ce-stable 19 M Installing dependencies: containerd.io x86_64 1.2.0-3.el7 docker-ce-stable 22 M docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M container-selinux noarch 2:2.94-1.git1e99f1d.module+el8.0.0+4017+bbba319f rhel-8-for-x86_64-appstream-rpms 43 k tar x86_64 2:1.30-4.el8 rhel-8-for-x86_64-baseos-rpms 838 k libcgroup x86_64 0.41-19.el8 rhel-8-for-x86_64-baseos-rpms 70 k python3-policycoreutils noarch 2.8-16.1.el8 rhel-8-for-x86_64-baseos-rpms 2.2 M python3-libsemanage x86_64 2.8-5.el8 rhel-8-for-x86_64-baseos-rpms 127 k python3-setools x86_64 4.2.0-2.el8 rhel-8-for-x86_64-baseos-rpms 598 k checkpolicy x86_64 2.8-2.el8 rhel-8-for-x86_64-baseos-rpms 338 k python3-audit x86_64 3.0-0.10.20180831git0047a6c.el8 rhel-8-for-x86_64-baseos-rpms 85 k policycoreutils-python-utils noarch 2.8-16.1.el8 rhel-8-for-x86_64-baseos-rpms 228 k Skipping packages with broken dependencies: docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M Transaction Summary ======================================================================================================================================================= Install 12 Packages Skip 1 Package Total download size: 85 M Installed size: 351 M Is this ok [y/N]:
利用可能な最新のcontainerd.ioパッケージを手動でインストールします
最新バージョンのdocker-ce
を厳密にインストールする必要がある場合 、必要なバージョンのcontainerd.io
をインストールできます 手動で、実行して:
$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
パッケージがインストールされたら、最新のdocker-ce
をインストールするだけです。 :
$ sudo dnf install docker-ce Dependencies resolved. ======================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================= Installing: docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M Installing dependencies: docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M tar x86_64 2:1.30-4.el8 rhel-8-for-x86_64-baseos-rpms 838 k libcgroup x86_64 0.41-19.el8 rhel-8-for-x86_64-baseos-rpms 70 k Transaction Summary ======================================================================================================================================================= Install 4 Packages Total download size: 65 M Installed size: 275 M Is this ok [y/N]:
containerd.io
なので、このオプションはあまり便利ではありません。 パッケージはdocker-ce
の依存関係としてインストールされません したがって、後者がシステムからアンインストールされたときに自動的に削除されることはありません。
docker-ce
のインストールに使用する方法は何でも 、前に述べたように、DNS resolution
を行うために Dockerコンテナ内で作業するには、firewalldを無効にする必要があります(システムの再起動も必要になる場合があります):
$ sudo systemctl disable firewalld
dockerデーモンを起動して有効にします
一度docker-ce
がインストールされている場合は、dockerデーモンを起動して有効にする必要があります。これにより、起動時に自動的に起動されます。実行する必要のあるコマンドは次のとおりです。
$ sudo systemctl enable --now docker
この時点で、次を実行してデーモンがアクティブであることを確認できます。
$ systemctl is-active docker active
同様に、次のコマンドを実行することで、起動時に有効になっていることを確認できます。
$ systemctl is-enabled docker enabled
docker-composeのインストール
Docker composeは、環境の各部分(PHP、Apache、MariaDB)が専用のコンテナーによって提供されるLAMPスタックに基づくアプリケーションなど、マルチコンテナーアプリケーションを管理できる非常に便利なパッケージです(興味がある場合)このテーマでは、Dockerベースのランプスタックの作成に関するチュートリアルをご覧ください)。このパッケージはRhel8では利用できません。また、Rhelツールで使用できる同等のパッケージもありません。ただし、さまざまな方法でインストールすることができます。読み続けて、自分に最適なものを決定するだけです。
グローバルインストール
docker-compose
をインストールする方法 グローバルにインストールするか、シングルユーザーのみにインストールするかによって異なります。執筆時点では、グローバルにインストールする唯一の方法は、プロジェクトのgithubページからバイナリをダウンロードすることです。
$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
バイナリがダウンロードされたら、それを/usr/local/bin
に移動します そしてそれを実行可能にします:
$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose
/usr/local
階層はランダムに選択されません。このディレクトリ構造は、システムパッケージマネージャーでインストールされたソフトウェアから確実に分離するために、ローカル管理者が手動でインストールしたファイル(たとえば、ソースからコンパイルされたソフトウェア)に使用されるように作成されています。
通常のユーザーがdocker
の一部である場合、docker関連のコマンドを実行することは可能ですが group(docker-ceをインストールすると、グループは自動的に作成されます)。デフォルトでは、セキュリティ上の理由から、root権限で実行する必要があります。 /usr/local/bin
なので、後者を実行する必要がある場合 ディレクトリがrootユーザーのPATH
にありません 、場所を指定してバイナリを呼び出すか、/usr/local/bin
を追加する必要があります PATH
へ 自体。最初のオプションは、この場合に推奨するオプションです。
ユーザーごとのインストール
ユーザーがdocker
の一部である場合 グループであるため、dockerコマンドを実行できます。docker-compose
Pythonパッケージとして利用可能ですが、pip
を使用してインストールすることもできます 、Pythonパッケージマネージャー。まず、pip自体がインストールされていることを確認します:
$ sudo dnf install python3-pip
docker-composeを取得するには、次のコマンドを実行します:
$ pip3.6 install docker-compose --user
ルートとしてpipを実行してパッケージをグローバルにインストールできる場合でも、これは推奨されておらず、強くお勧めしません。
Dockerのテスト
dockerとdocker-composeをインストールしました。すべてが期待どおりに機能することを確認するために、イメージの作成とコンテナーの実行を試みることができます。この場合、公式のhttpd
を使用します。 1。次のコマンドを起動するだけです。
sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd
httpd
以降 イメージはローカルに存在しません。自動的にフェッチされてビルドされます。最後に、それに基づくコンテナがフォアグラウンドで起動されます(停止すると自動的に削除されます)。 It works!
が表示されるはずです。 ブラウザ経由でマシンのIPに到達したときのメッセージ。
結論
Red Hat Enterprise Linux 8はDockerをサポートしていません。このディストリビューションでは、buildah
などのRedHat独自のツールに置き換えられています。 およびpodman
、Dockerと互換性がありますが、実行するためにサーバー/クライアントアーキテクチャは必要ありません。可能な場合はネイティブツールを使用することを常にお勧めしますが、何らかの理由で元のDockerをインストールすることをお勧めします。このチュートリアルでは、Docker CE
をインストールする方法を説明しました。 Rhel8では、100%互換性のあるクローンであるCentOS7の公式Dockerリポジトリを使用します。
これは理想的なソリューションではありません。これまで見てきたように、現時点では、DockerをRHEL8で動作させるためにいくつかの回避策が必要です。いくつかの新しい問題が発生した場合、または上記の問題に対するより良い解決策が見つかった場合、この記事はそれに応じて更新されます。しばらくお待ちください。