Docker locale設定のerrror
Docker image作成時に起きたlocaleに関するerrorを解決しました。
ググっても「Ubuntuの日本語化」に記事ばかりで遠回りになってしまい、しばらくうまく行きませんでした。
最終的に解決法がわかったのでこの記事に書いておきます。
環境
hostOS: macOS & ubuntu(どちらでも同じ症状)
Docker version: 19.03.8
元にしたDocker image: ubuntu:18.04(公式)
hub.docker.com
症状
# docker run -it hogehoge manpath: can't set the locale; make sure $LC_* and $LANG are correct bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
使っている分には影響はなかったがなんか気持ち悪い。
調べてみるとlocale(言語設定)の問題らしい。
# locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8
正しく設定できていないとのこと。
使えるlocaleを確認すると…
# locale -a C C.UTF-8 POSIX
え…デフォルトに英語ないの??!…公式imageなのに…
解決法1
Dockerfikeに以下の記述を追加
# locale RUN apt-get update RUN apt-get install -y locales RUN locale-gen en_US.UTF-8
これでen_US.UTF-8の環境が構築されるのでerrorが消える。
解決法2
コンテナ内で以下のコマンドを叩く
# apt-get update # apt-get install -y locales # locale-gen en_US.UTF-8
これで起動時のerrorも消えてスッキリしました。
↓解決後
# locale LANG=ja_JP.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 # locale -a C C.UTF-8 en_US.utf8 POSIX
ちゃんと追加されてますね。