結論
以下のDockerfileをビルドすれば、言語が日本語でタイムゾーンが日本時間のコンテナができます。
〇 CentOS7
FROM centos:7
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 && \
yum -y update && \
yum clean all && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 && \
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ENV LANG="ja_JP UTF-8" \
LANGUAGE="ja_JP:ja" \
LC_ALL="ja_JP.UTF-8" \
TZ="Asia/Tokyo"
〇 CentOS8
FROM centos:8
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial && \
dnf -y upgrade && \
dnf -y install glibc-locale-source && \
dnf clean all && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 && \
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ENV LANG="ja_JP UTF-8" \
LANGUAGE="ja_JP:ja" \
LC_ALL="ja_JP.UTF-8" \
TZ="Asia/Tokyo"
環境
使い方・確認
上記Dockerファイルがあるディレクトリでコンテナイメージをビルドします。
その後コンテナを立てて、date
で日本語化とタイムゾーン設定が反映されていることを確認します。
〇CentOS7
$ docker build -t centos:7-ja .
$ docker run -dit --name centos7-ja centos:7-ja
$ docker exec centos7-ja date
2020年 9月 26日 土曜日 19:37:24 JST
〇CentOS8
$ docker build -t centos:8-ja .
$ docker run -dit --name centos8-ja centos:8-ja
$ docker exec centos8-ja date
2020年 9月 26日 土曜日 19:42:03 JST
余談
日本語化に必要な設定を把握したくて作りました。
以下は作業してるうちに知ったことのメモです。
-
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
の意味
rpmパッケージの署名です。rpmパッケージの完全性を確認するために必要です。これを実施していないと、yum update
で以下のようなwarningが出る可能性があります。
とはいえエラーが出たところで勝手に上記と同様の操作をしてくれるので、必ず書かなければいけない訳ではありません。不必要なエラーでびっくりしないために実施しています。
warning: /var/cache/yum/x86_64/7/updates/packages/bind-license-9.11.4-16.P2.el7_8.6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
-
yum clean all
の意味
yum update
で生成されたキャッシュをクリアします。以下に示す通り、yum clean all
をやるかやらないかでイメージサイズが全然違います。両者の違いはyum clean all
を行ったか否かのみです。
今回の記事ではyum update
にくっつけましたが、最後のyum update
およびyum install
より後にないと意味がないので、RUN
コマンドの最後の方に置いておくとメンテが必要になりにくくて良いかと思います。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7-ja-without-clean 3f6ba3d02f45 5 minutes ago 352MB
centos 7-ja-with-clean fa93ef373ec3 6 minutes ago 284MB
参考
-
Window10に日本語対応CentOS7のdockerコンテナを作ってみた
man
の日本語化についても解説されています。