在Docker中更改区域设置停止执行许多命令?

如何当我更改我的区域设置在Dockerfile中使用此…

ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 

…所以我可以通过这个来实现语言环境的变化…

 LANG= LANGUAGE= 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= 

..这个..

 LANG=en_US.UTF-8 LANGUAGE=en_US:en 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 

然后我遇到了这样的问题 ,没有执行任何命令:

root@820760edeb77:/# irb bash: irb: command not found

但是,如果我将这些更改放到语言环境中,并将它们保留在重build后的容器之后,那么一切都按预期工作。

 # ENV LANG en_US.UTF-8 # ENV LANGUAGE en_US:en # ENV LC_ALL en_US.UTF-8 

root@820760edeb77:/# irb 2.3.1 :001 >

我不太清楚会导致这个问题的原因,更改的语言环境禁止命令的工作,但怀疑这可能只是在Docker容器中的区域设置的这种变化的副作用,可能不是真正的问题?

所以我只是想通了,事实certificate,我在Docker中使用了错误的语言环境types,这与这个问题有关。

一个小的,但关键的区别C vs en_US

WRONG

 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 

RIGHT

 ENV LANG C.UTF-8 ENV LANGUAGE C.UTF-8 ENV LC_ALL C.UTF-8 

任何人都可以告诉我,为什么Docker使用C作为语言环境,VS en_US ,或任何其他?

现在Ruby / irb已经成功地工作了( 虽然我的生命已经损失了4个小时…..