在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个小时….. )