Window10に日本語対応CentOS7のdockerコンテナを作ってみた

環境（2018/10/13 更新）
Windows 10 Pro 1709(16299.192)
Docker version 17.12.0-ce, build c97c6d6　⇒　Version 18.06.1-ce-win73 
CentOS Linux release 7.4.1708 (Core)　⇒　CentOS Linux release 7.5.1804 (Core)

# １．「Docker for Windows」のインストール

### ドキュメントURL
https://docs.docker.com/docker-for-windows/
### ダウンロードURL
https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows
### インストール手順
-「Get Docker for Windows [Stable]」をクリック
-「Docker for Windows Installer.exe」を開く
### 追加の設定（yum installのTimeOut回避）
1.タスクバー上のDocker アイコンを右クリック
![DockerMenu.png](https://qiita-image-store.s3.amazonaws.com/0/214982/92919c33-fdb2-bd3a-ab62-ec8408b7af47.png)

2.「Settings...」メニューを選択
3.「Settings」画面で「Network」メニューを選択
4.「DNS Server」Fixed:8.8.8.8を選択し、Applyボタンクリック
![setting.png](https://qiita-image-store.s3.amazonaws.com/0/214982/96d01605-a1e4-bac9-06e0-b99ef48aa626.png)



# ２．「CentOS7」の「Dockerイメージ」をダウンロード
### ダウンロード手順
####「PowerShell」を開く
#### docker pullでcentosのイメージをダウンロード
```
PS C:\Users\UserName> docker pull centos
```
※centosのminimalインストールのイメージがダウンロードできる

# ３．日本語環境をインストールした「Dockerイメージ」の作成
### イメージ作成手順
####「Dockerfile」を作成
```:Dockerfile
FROM centos
LABEL maintainer "michiru <0ashina0@gmail.com>"

# CentOS ProjectのGPG公開鍵をインストールする
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

# インストール済みのパッケージをアップデート＆キャッシュのクリア
RUN yum -y update && yum clean all


# 言語を日本語に設定
RUN localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
RUN echo 'LANG="ja_JP.UTF-8"' >  /etc/locale.conf
ENV LANG ja_JP.UTF-8


# 日付を日本語に設定
RUN echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock 
RUN rm -f /etc/localtime
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


# manをインストールする前に、manファイルをインストールするように設定変更
RUN sed -i -e"s/^tsflags=nodocs/\# tsflags=nodocs/" /etc/yum.conf


# manと、man-pagesをインストール
RUN yum -y install man
RUN yum -y install man-pages.noarch
RUN yum -y install man-pages-ja.noarch

```

# ４．イメージ作成
### 「Dockerイメージ」の作成

```
PS C:\Users\UserName> docker build ./ -t centosjp
```


# ５．確認
### 「Dockerコンテナ」の作成＆起動

```
PS C:\Users\UserName> docker run -it centosjp
```

### 日本語化の確認

```:CentOSで実行
[root@bcffc13a8539 /]# date
2018年  2月  3日 土曜日 10:57:54 JST
[root@bcffc13a8539 /]#
```

### 日本語manの確認

```:CentOSで実行
[root@bcffc13a8539 /]# man ls
```
![man.png](https://qiita-image-store.s3.amazonaws.com/0/214982/a55a0faa-a6f6-1532-0b81-4e9d197c4a5c.png)

# メモ
1) yum -y groupinstall "Japanese Support" で、日本語化するのは過去(CentOS6?)の話。yumグループに"Japanese Support"はありません。yum grouplistで確認できます。
Refer to [CentOS7のyumグループを確認する](https://qiita.com/0ashina0/items/5ea5371a7c2b6a452474)

2) yum -y reinstall glibc-common等は、必要ありません。CentOSのminimalに日本語のファイルが入っています。

```
[root@7c49cec1ae6a locales]# ls -l /usr/share/i18n/locales/ja_JP
-rw-r--r-- 1 root root 222115 11月 30 18:23 /usr/share/i18n/locales/ja_JP
[root@7c49cec1ae6a locales]#
```

ただし、localedef コマンドで、日本語ロケールをコンパイルする必要があります。
*localedef の引数がja_JP.UTF-8なのに、locale -aはja_JP.utf8となっているのは、locale-archive に書き込む際に，アルファベットは小文字に，アルファベットと数字以外は無視するようにしているから* 

```:日本語ロケールをコンパイル
[root@254298d02f70 /]# locale -a | grep ja_JP
[root@254298d02f70 /]# localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
[root@254298d02f70 /]# locale -a | grep ja_JP
ja_JP.utf8
[root@254298d02f70 /]#
```

export LANG="ja_JP.UTF-8"すると、日本語ロケールに変更できる。

```:日本語ロケールに変更
[root@7ab3dc1e9b5a /]# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
[root@7ab3dc1e9b5a /]# export LANG="ja_JP.UTF-8"
[root@7ab3dc1e9b5a /]# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
[root@7ab3dc1e9b5a /]#
```

3) ワーニング回避のため、CentOS ProjectのGPG公開鍵をインストールする手順を追加した。

```:発生したNOKEYワーニング
warning: /var/cache/yum/x86_64/7/base/packages/less-458-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
```

```:dockerfileに追加したGPG公開鍵をインストールする手順
# CentOS ProjectのGPG公開鍵をインストールする
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
```