RHEL 8 / CentOS 8の最新バージョンでは、RedHatは独自のツール buildah
と podman
を構築しました。これらのツールは既存のドッカーイメージと互換性があり、作業中にデーモンと対話する必要はありません。特別な権限を申請しなくても、通常のユーザーと同じようにコンテナを作成できます。 (まだいくつかの制限があります。たとえば、許可なく記事を書く場合、コンテナポートをマップすることはできません。)
いくつかの特別なツールは、何があっても、まだ不足しています:まだ存在していない docker-compose
。このチュートリアルでは、CentOS7の公式Dockerソースリポジトリを使用して、Rhel8に元のDockerCEをインストールして実行する方法を見ていきます。
このチュートリアルでは、次のことを学びます。
カテゴリ: | ソフトウェア要件、規則、および使用されるバージョン |
---|---|
システム: | RHEL 8 / CentOS 8 |
ソフトウェア: | Dockerバージョン18.09.2 |
その他: | root権限で、関連するコマンドを実行できます |
規則: | #-指定されたコマンドを実行するには、root権限が必要です。 rootユーザーは直接実行し、通常のユーザーはsudo実行を追加します。 $-指定されたコマンドは通常のユーザーが実行できます |
Dockerは、アプリケーションの作成とリリースをコンテナにバンドルできるオープンソースプロジェクトです。コンテナは、ホストシステムから独立した標準化された環境であり、簡単に複製できます。 Red Hat Enterprise Linux 7では、Dockerが正式にサポートされています。同時に、Red Hatは、Dockerをサポートするための一連のツール buildah
と podman
を独自に開発しました。
サードパーティのソースリポジトリを使用することで、Docker CE(コミュニティバージョン)をインストールすることもできます。このガイドでは、このソースリポジトリをインストールします。 CentOS 7
(RHELクローン)の場合、これはRed Hat EnterpriseLinuxのような公式サポートがないことを意味することに注意してください。このため、問題があります。これについては後で詳しく説明します。
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
これで、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のインストールを続行する場合は、依存関係の問題を回避するいくつかの方法があります。
docker-ce
をインストールします。これらのバージョンのdockerには、インストール可能な containerd.io
パッケージのみが必要です。--nobest
オプションを指定すると、インストールプロセスが強制的に続行されます。containerd.io
rpmパッケージを手動でインストールしますこの記事を書いている時点で、問題なくインストールできる docker-ce
のバージョンは次のとおりです。
特定のバージョンをインストールするには、パッケージのフルネームを指定するだけで済みます。次に例を示します。
$ sudo dnf install docker-ce-3:18.09.1-3.el7
通常、パッケージをインストールするときは、ソースリポジトリから利用可能な最適なバージョンが選択されます。この例では、最新バージョンの 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]:
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
docker-ce
のインストールが完了したら、Dockerデーモンを起動して有効にする必要があります。これにより、次にシステムが起動したときに、Dockerはシステムに従って自動的に起動します。次のコマンドを実行する必要があります。
$ sudo systemctl enable --now docker
この時点で、次のコマンドを実行して、デーモンが正常に実行されているかどうかを確認します。
$ systemctl is-active docker
active
同様に、次のコマンドを実行して、システムで起動するかどうかを確認することもできます。
$ systemctl is-enabled docker
enabled
Docker composeは、複数のコンテナアプリケーションを管理できる非常に便利なソフトウェアパッケージです。たとえば、 LAMP
に基づくアプリケーションの場合、環境のすべての部分(PHP、Apache、[MariaDB](https://cloud.tencent.com/product/tdsql?from=10680))はクリアコンテナによって提供されます。このパッケージは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-ceのインストール時に自動的に作成されます)に参加すると、docker関連のコマンドを実行できますが、セキュリティ上の理由から、root権限で実行する必要があります。 / usr / local / bin
はルートユーザーの PATH
環境変数にないため、バイナリソフトウェアの場所を指定するか、 / usr / local / bin
を PATH
に追加する必要があります。ここでは、前の方法をお勧めします。
ユーザーが docker
ユーザーグループのメンバーである場合、dockerコマンドを実行できます。 docker-compose
hはpythonパッケージも提供するため、 pip
を使用してインストールすることもできます。まず、pipがインストールされていることを確認します。
$ sudo dnf install python3-pip
docker-composeを取得するには、次のコマンドを実行します。
$ pip3.6 install docker-compose --user
rootを使用してpipを実行し、このパッケージをグローバルにインストールできる場合でも(docker-compose)、このアプローチは推奨されておらず、推奨されていないことに注意してください。
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