はじめに
2019年9月24日に、ついに CentOS 8 がリリースされました。
CentOS 8では、yum
コマンドが廃止されdnf
コマンドが採用されました。その他にも変更点が多いです。詳しくは下記記事を参照してください。
xn--o9j8h1c9hb5756dt0ua226amc1a.com
この記事では、その最新の CentOS 8 を Docker にインストールし、さらに nginx をインストールして動作させる方法をご紹介します。
CentOS 8のインストール
CentOS 8 の Docker コンテナを作成するには、centos:8
のイメージを使用します。
CentOS で使用できるイメージは以下のページを参照してください。
CentOS 8 のイメージをダウンロードして起動します。後ほど nginx を起動するので、ポート番号の設定も行っています。
$ docker run -d -p 8080:80 --name centos8 centos:8 /sbin/init
CentOS 8 のコンテナにログインして、バージョンを確認します。
$ docker exec -it centos8 /bin/bash # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
CentOS 8 がインストールされていることが確認できます。
nginx のインストール
CentOS 8 からyum
コマンドが廃止されdnf
コマンドが採用されましたが、yum
コマンドがpython2ベース、dnf
コマンドがpython3ベースである以外は、さほど使い方は変わらないようです。
なお、yum
コマンドもdnf
コマンドのラッパーとして使用できるので、あまり困らないかもしれないですね。
先ほどのコンテナへのログイン状態を維持した状態で、下記コマンドを実行して nginx をインストールします。
# dnf -y update # dnf install -y nginx
下記コマンドを実行して、nginx を起動します。
# nginx
下記コマンドで動作確認をします。レスポンスが長いので内容は割愛しますが、レスポンスが返ってきていればOKです。
# curl localhost
ホストOS(Windows or Mac etc)側のブラウザで、http://localhost:8080
でアクセスし以下の画面が表示されれば正しく設定がされています。
終了処理
下記コマンドでコンテナからログアウトします。
# exit
Docker コンテナを停止して、コンテナを削除します。(コンテナ名を使用してますが、コンテナIDでももちろんOK)
$ docker stop centos8 $ docker rm centos8
Dockerfileで環境を構築する
毎回、nginx をインストールするのは面倒なので、Dockerfile を使用して nginx のイメージを作成します。
Dockerfile を適当なディレクトリに作成します。
Dockerfile
FROM centos:8 RUN dnf -y update RUN dnf install -y nginx ENTRYPOINT /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
1点注意事項があり、nginx はデフォルトではバックグラウンドで実行されますが、それだとコンテナを Docker に終了されていまいます。そのため、nginx をフォアグラウンドで実行する必要があります。
ネットで調べていると、nginx の起動は以下のようにするという情報が多かったですが、CentOS 8 では ENTRYPOINT
のように記述する必要がありました。
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
Dockerfile を同じディレクトリで下記コマンドを実行して、Docker イメージを作成します。
$ docker build -t centos8-nginx .
Docker イメージができたら、下記コマンドで Docker コンテナを起動します。
$ docker run -d -p 8080:80 --name centos8-nginx centos8-nginx /sbin/init
先ほどと同じように、http://localhost:8080/
にブラウザでアクセスし正しく画面が表示されればOKです。
終了処理も忘れずに行いましょう。
$ docker stop centos8-nginx $ docker rm centos8-nginx
おわりに
nginx がなかなか起動しなくて手こずりましたが、CentOS 8 そのものは思ったより問題なく使用することができました。
CentOS 8は意外と恐れる必要はないかもしれないですね。
それよりは、Docker のコマンドを忘れてしまい、調べ直すのに時間がかかってしまいました。💦