mtm*_*ald 94 ubuntu debian docker
我正在运行一个Ubuntu Docker容器.我有一个挪威语键盘,需要使用挪威语字符(øæå).
我的终端字符编码设置为UTF-8,我使用SSH连接到我的容器.但是,我无法输入挪威字符,也无法复制和粘贴挪威字符,也不能使用CTL + SHIFT + U + 00f8.
我试过了:
locale-gen nb_NO.UTF-8
Run Code Online (Sandbox Code Playgroud)
但没有改变.如何在Docker容器中设置区域设置和键盘?
use*_*097 139
在你的Dockerfile中添加改编自的东西
# Set the locale
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
这是从该主题的非常好的帖子中提取出来的
http://jaredmarkell.com/docker-and-locales/
mix*_*xel 85
使用Debian的人也必须安装locales包.
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_US.UTF-8
ENV LANG en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
这个答案对我帮助很大.
and*_*wsh 50
只需添加
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
Run Code Online (Sandbox Code Playgroud)
进入你的Dockerfile.基本操作不需要任何其他操作.同时,locale-gen不接受任何争论,这就是为什么使用它的"修复"都不起作用的原因.
Jea*_*ean 21
我实际上碰巧遇到了同样的问题,但是所提供的答案都没有100%与debian一起使用:最新,即使它们提供了很好的提示.
最大的区别是你应该确保安装了locales 和 locales-all,后者已经包含了en_US.UTF-8,所以你不必使用local-gen或dpkg-reconfigure生成它.
这是我在Dockerfile中完成的工作:
FROM debian:latest
RUN apt-get update
RUN apt-get install -y locales locales-all
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
Dag*_*ahl 16
运行命令时指定这些环境变量:
docker run -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -it --rm <yourimage> <yourcommand>
Run Code Online (Sandbox Code Playgroud)
没有必要修改Dockerfile.
当我不希望 Docker 映像的用户更改它们时,我不喜欢使用 Docker 环境变量。
只需将其放在 one 中的某个位置即可RUN。如果您没有生成 UTF-8 语言环境,则可以执行以下命令集:
export DEBIAN_FRONTEND=noninteractive
apt-get update -q -q
apt-get install --yes locales
locale-gen --no-purge en_US.UTF-8
update-locale LANG=en_US.UTF-8
echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | debconf-set-selections
echo locales locales/default_environment_locale select en_US.UTF-8 | debconf-set-selections
dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
提示:浏览容器文档论坛,例如Docker 论坛。
这是debian 和 ubuntu的解决方案,将以下内容添加到您的 Dockerfile 中:
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
你们不需要那些复杂的东西来在 Ubuntu/Debian 上设置语言环境。你甚至不需要/etc/local.gen文件。
简单地locale-gen会做所有事情而作者只是错过了locales包。
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
&& locale-gen "en_US.UTF-8"
ENV LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
我发现这是最简单和最有效的。我确认它适用于 Ubuntu 16.04。
| 归档时间: |
|
| 查看次数: |
76411 次 |
| 最近记录: |