最近更新了最新版的Docker Desktop,发现下载了镜像却用原来的方式无法启动容器还会报错,最终才发现原来是Docker Desktop现在支持两种方式的容器一种是window容器,一种是linux容器。而Docker Desktop默认是启动的window容器,所以我下载下来的镜像都是无法用原来方式启动的。我用java(已经升级成openjdk)的镜像做演示。启动容器我没注意到容器的类型,所以我还是用原来linux容器启动,之后就报错了,看了报错描述才发现当前容器是window容器。
1.报错信息
#这种方式只能liunx容器执行不退出
docker run --name=java -d 7c4ed54e0ee8 tail /dev/null
报错信息:docker: Error response from daemon: container 9d8382d7769bea80a76e1081eebc38e9ad8562e19849e5aab941cace41380dfb encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2)
[Event Detail: Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail: Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail: onecore\vm\compute\management\orchestration\vmhostedcontainer\processmanagement.cpp(173)\vmcomputeagent.exe!00007FF74C769FAB: (caller: 00007FF74C71E19A) Exception(2) tid(38c) 80070002 The system cannot find the file specified.
CallContext:[\Bridge_ProcessMessage\VmHostedContainer_ExecuteProcess]
Provider: 00000000-0000-0000-0000-000000000000].

2.正常启动
通过上面的描述我发现是window容器,所以我切换成了window方式启动发现启动正常
#创建并启动容器
docker run --name=java -d 7c4ed54e0ee8 ping -t 127.0.0.1
#进入容器
docker exec -it 715abf8e2397 cmd

3.Docker Desktop切换容器
在Docker Desktop中就可以直接切换容器类型。

3.修改镜像远程库地址
在Setings >> Docker Engine中配置以下内容然后点击保存
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}
https://registry.docker-cn.com是Docker中国区官方镜像地址
http://hub-mirror.c.163.com是网易地址
https://docker.mirrors.ustc.edu.cn是中国科技大学地址
本文介绍了DockerDesktop最新版本支持的两种容器类型:Windows容器和Linux容器,并详细阐述了因容器类型不同导致的启动错误及解决方法。此外,还提供了修改镜像远程库地址的方法以提高下载速度。

5143

被折叠的 条评论
为什么被折叠?



