Setting the language and region settings in a Windows Docker Container(在 Windows Docker 容器中设置语言和区域设置)
问题描述
我正在创建一个基于 mcr.microsoft.com/dotnet/framework/runtime:4.8
基础映像的 docker 容器.
I'm creating a docker container based on the mcr.microsoft.com/dotnet/framework/runtime:4.8
base image.
此图像设置为 en_US
,这意味着所有 Windows 语言和区域设置以及默认位置都设置为美国.
This image is set to en_US
, meaning that all the Windows language and region settings and default location is set to United States.
我需要做的是将其更改为 en_GB
并将默认用户的位置更改为 United Kindom
因为我有一个具有依赖关系的 .Net 应用程序在使用它来将数据输出到 Excel 的第 3 方库上.但是到目前为止,我尝试过的任何东西似乎都无法更改语言和区域设置.
What I need to do is to change this to en_GB
and change the location to United Kindom
for the default user because I have a .Net application which has a dependency on a 3rd party library that uses this to output data to Excel. However nothing I've tried seems to be able to change the language and region settings thus far.
到目前为止我尝试过的事情:
Things I have tried so far:
- 尝试使用
intl.cpl
国际设置导入设置并更新默认用户:
- Attempted to use the
intl.cpl
International Settings to import the settings and update the default user:
UKRegion.xml 的内容:
Contents of UKRegion.xml:
- 在
powershell
脚本中启动应用程序之前设置值:
- Setting the values before starting the application in a
powershell
script:
设置容器并附加后,我可以看到 Get-WinHomeLocation
已更新,Get-WinUserLanguageList
显示 en_GB
作为选项,但是,来自 Get-WinSystemLocale
的 Windows 的默认语言仍然返回 en-US
After setting up the container and attaching I can see that Get-WinHomeLocation
has updated, Get-WinUserLanguageList
shows en_GB
as an option, however the default language for windows from Get-WinSystemLocale
still returns en-US
我还考虑过从 en-GB Windows Server Core 基本映像构建自己的基本映像并运行 Microsoft 运行的框架设置以创建 Framework runtime 4.8 映像,但 Microsoft 似乎没有发布 en-GB 基本映像图片!
I also considered building my own base image from the en-GB Windows Server Core base image and running the framework setup that Microsoft runs to create the Framework runtime 4.8 image, but Microsoft don't seem to publish an en-GB base image!
还有其他人遇到过这个吗?你是怎么解决的?还有其他建议吗?
Has anyone else come across this? How did you resolve it? Any other suggestions?
推荐答案
答案是Docker容器在使用进程隔离时会从宿主机继承语言设置.因此,根据需要更改主机的语言设置.在 PowerShell 中,要设置区域,您可以这样做:
The answer is that a Docker container inherits language settings from the host when using Process Isolation. So, change the host's language settings as desired. In PowerShell, to set the Region you can do this:
现在运行 Docker:
Now run Docker:
在 Docker 外壳中:
Within the Docker shell:
这篇关于在 Windows Docker 容器中设置语言和区域设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!