RHEL 8 / CentOS8にDockerCEをインストールする方法

RHEL 8 / CentOS 8の最新バージョンでは、RedHatは独自のツール buildah podmanを構築しました。これらのツールは既存のドッカーイメージと互換性があり、作業中にデーモンと対話する必要はありません。特別な権限を申請しなくても、通常のユーザーと同じようにコンテナを作成できます。 (まだいくつかの制限があります。たとえば、許可なく記事を書く場合、コンテナポートをマップすることはできません。)

いくつかの特別なツールは、何があっても、まだ不足しています:まだ存在していない docker-compose。このチュートリアルでは、CentOS7の公式Dockerソースリポジトリを使用して、Rhel8に元のDockerCEをインストールして実行する方法を見ていきます。

このチュートリアルでは、次のことを学びます。

1.ソフトウェア要件と使用規則##

カテゴリ: ソフトウェア要件、規則、および使用されるバージョン
システム: RHEL 8 / CentOS 8
ソフトウェア: Dockerバージョン18.09.2
その他: root権限で、関連するコマンドを実行できます
規則: #-指定されたコマンドを実行するには、root権限が必要です。 rootユーザーは直接実行し、通常のユーザーはsudo実行を追加します。 $-指定されたコマンドは通常のユーザーが実行できます

2. Dockerとは何ですか?

Dockerは、アプリケーションの作成とリリースをコンテナにバンドルできるオープンソースプロジェクトです。コンテナは、ホストシステムから独立した標準化された環境であり、簡単に複製できます。 Red Hat Enterprise Linux 7では、Dockerが正式にサポートされています。同時に、Red Hatは、Dockerをサポートするための一連のツール buildah podmanを独自に開発しました。

サードパーティのソースリポジトリを使用することで、Docker CE(コミュニティバージョン)をインストールすることもできます。このガイドでは、このソースリポジトリをインストールします。 CentOS 7(RHELクローン)の場合、これはRed Hat EnterpriseLinuxのような公式サポートがないことを意味することに注意してください。このため、問題があります。これについては後で詳しく説明します。

3つ目は、サードパーティのソースを追加する##

DockerはRHEL8 / CentOS 8ではまだ利用できないため、このソフトウェアを入手するにはサードパーティのソースを追加する必要があります。ここでは、公式のDocker CE CentOSソースを使用します。この記事の執筆時点では、これがRHEL 8 / CentOS8にDockerCEをインストールする唯一の方法です。

dnf config-managerツールを使用すると、他の些細なことを心配することなく、Linuxディストリビューションのソースを簡単に有効または無効にできます。デフォルトでは、Rhel8では appstreamおよび baseosソースのみが有効になっています。 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 201906: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,800second(s)(last: Mon 18 Feb 201910: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 8for x86_64 - AppStream Beta(RPMs)
Repo-revision:1542158694
Repo-updated : Wed 14 Nov 201802: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,400second(s)(last: Mon 18 Feb 201910: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 8for x86_64 - BaseOS Beta(RPMs)
Repo-revision:1542158719
Repo-updated : Wed 14 Nov 201802: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,400second(s)(last: Mon 18 Feb 201910:23:56 AM CET)
Repo-filename:/etc/yum.repos.d/redhat.repo
Total packages:6,310

3.1、 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

どのバージョンをインストールしますか? docker-ceが依存する containerd.ioのバージョン番号が 1.2.0-3.el7より大きい場合、インストールプロセスが終了した理由がわかりません。したがって、 sudo dnf installdocker-ceコマンドを実行するだけでは正しく機能しません。この問題を解決した後、別の問題が発生します。システムファイアウォールマネージャの firewalldが有効になっているため、DockerコンテナのDNS解決は正しく機能しません。

もちろん、これは深刻な問題です。ただし、とにかく、Dockerのインストールを続行する場合は、依存関係の問題を回避するいくつかの方法があります。

3.1.1、 指定されたバージョンのdocker-ce ####をインストールします

この記事を書いている時点で、問題なくインストールできる docker-ceのバージョンは次のとおりです。

特定のバージョンをインストールするには、パッケージのフルネームを指定するだけで済みます。次に例を示します。

$ sudo dnf install docker-ce-3:18.09.1-3.el7

3.1.2 --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]:

3.1.3 利用可能な最新の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をアンインストールしても、 containerd.ioは自動的に削除されません。

先に述べたように、「docker-ce」のインストールにどの方法を使用しても、Dockerコンテナ内で「DNS解決」が正常に動作するようにするには、firewalldを無効にする必要があります(これにはシステムの再起動が必要になる場合があります)

$ sudo systemctl disable firewalld

第4に、dockerデーモンをオンにして有効にします##

docker-ceのインストールが完了したら、Dockerデーモンを起動して有効にする必要があります。これにより、次にシステムが起動したときに、Dockerはシステムに従って自動的に起動します。次のコマンドを実行する必要があります。

$ sudo systemctl enable --now docker

この時点で、次のコマンドを実行して、デーモンが正常に実行されているかどうかを確認します。

$ systemctl is-active docker
active

同様に、次のコマンドを実行して、システムで起動するかどうかを確認することもできます。

$ systemctl is-enabled docker
enabled

5、docker-compose ##をインストールします

Docker composeは、複数のコンテナアプリケーションを管理できる非常に便利なソフトウェアパッケージです。たとえば、 LAMPに基づくアプリケーションの場合、環境のすべての部分(PHP、Apache、[MariaDB](https://cloud.tencent.com/product/tdsql?from=10680))はクリアコンテナによって提供されます。このパッケージはRhel8では利用できず、同様のRhelツールも利用できません。いずれにせよ、私たちはそれをインストールする多くの方法があります:読んであなたに合ったものを選んでください:

5.1 グローバルインストール###

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-ceのインストール時に自動的に作成されます)に参加すると、docker関連のコマンドを実行できますが、セキュリティ上の理由から、root権限で実行する必要があります。 / usr / local / binはルートユーザーの PATH環境変数にないため、バイナリソフトウェアの場所を指定するか、 / usr / local / bin PATHに追加する必要があります。ここでは、前の方法をお勧めします。

5.2 シングルユーザーインストール###

ユーザーが dockerユーザーグループのメンバーである場合、dockerコマンドを実行できます。 docker-composehはpythonパッケージも提供するため、 pipを使用してインストールすることもできます。まず、pipがインストールされていることを確認します。

$ sudo dnf install python3-pip

docker-composeを取得するには、次のコマンドを実行します。

$ pip3.6 install docker-compose --user

rootを使用してpipを実行し、このパッケージをグローバルにインストールできる場合でも(docker-compose)、このアプローチは推奨されておらず、推奨されていないことに注意してください。

6、Dockerをテストします##

dockerとdocker-composeをインストールし、すべてが期待どおりに実行されていることを確認します。イメージを作成してコンテナを実行してみることができます。ここでは、公式の httpdミラーを使用します。次のコマンドを実行するだけです。

sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd

httpdミラーはローカルに存在しないため、自動的に取得および構築されます。最後に、それに基づくコンテナがフォアグラウンドで実行されています(停止すると自動的に削除されます)。ローカルコンピュータのブラウザでローカルIPを入力すると、「動作します!」というメッセージが表示されます。

セブン、まとめ##

Red Hat Enterprise Linux 8はDockerをサポートしていません:このリリースでは、DockerはRedHat独自のツール buildah podmanに置き換えられました。これらのツールはDockerと互換性がありますが、実行するためにサーバー/クライアントアーキテクチャを必要としません。通常はローカルツールを使用することをお勧めしますが、何らかの理由で元のDockerをインストールする必要があります。このチュートリアルでは、Docker製のCentOS 7の公式ソースリポジトリを使用して、Rhel8に Docker CEをインストールする方法を説明しました(100%互換)。

これは完全なソリューションではありません。DockerがRHEL8で正常に実行されるようにするために、手動で実行する必要がある場合があります。使用中に問題が見つかった場合、またはより良い解決策が見つかった場合は、この記事を更新します。

Recommended Posts

RHEL 8 / CentOS8にDockerCEをインストールする方法
CentOS7にDockerをインストールして使用する方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOS8にMariaDBをインストールする方法
CentOS7にMongoDBをインストールする方法
CentOS8にApacheをインストールする方法
CentOS8にPHPをインストールする方法
CentOS8にMongoDBをインストールする方法
CentOS 8 / RHEL8にCockpitをインストールして使用する方法
Linuxにdockerをすばやくインストールする方法(Centosバージョン)
Ubuntu18.04にDockerComposeをインストールする方法
CentOS8にApacheMavenをインストールする方法
CentOS7にApacheKafkaをインストールする方法
[グラフィック]セントスにtomcatをインストールする方法
R&D:CentOS7にPython3をインストールする方法
CentOS7にGCCコンパイラをインストールする方法
centos6.5にDockerをインストールします
centos7.0にオフラインJDK1.8をインストールする方法
CentOS7はDockerCEをインストールします
Ubuntu14.04にDockerを使用してPrometheusをインストールする方法
CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVisualStudioコードをインストールする方法
CentOSLinuxにRPMパッケージをインストールする方法
Ubuntu20.04にDockerをインストールして使用する方法
CentOS8にVNCをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
CentOS8にNode.jsとnpmをインストールする方法
centos7.2.1511にjdk1.8.0_151とmysql5.6.38をインストールする方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にCurlをインストールして使用する方法
CentOS8にVirtualBoxクライアント拡張機能をインストールする方法
centosにtomcatをインストールおよびアンインストールする方法