GNU/Linux >> Linux の 問題 >  >> Cent OS

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

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

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
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で動作させるためにいくつかの回避策が必要です。いくつかの新しい問題が発生した場合、または上記の問題に対するより良い解決策が見つかった場合、この記事はそれに応じて更新されます。しばらくお待ちください。


Cent OS
  1. CentOS 7 /RHEL7にDockerをインストールする方法

  2. CentOSにDockerをインストールする方法

  3. CentOS / RHEL / Fedora に docker をインストールする方法

  1. CentOS7にDockerをインストールする方法

  2. CentOS7にDockerComposeをインストールする方法

  3. CentOS8にDockerをインストールする方法

  1. CentOS7にRancherをインストールする方法

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

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