Docker 服务器端计算机上的Linux容器

Docker 服务器端计算机上的Linux容器,docker,windows-server-2019,Docker,Windows Server 2019,我在我的red hat Linux上创建了一个docker映像。 基本映像是centos映像,上面安装了应用程序。我能够在多台Linux机器上的dockers上运行映像 然后,我保存了该映像,然后在安装了所有最新更新的windows server 2019计算机上复制了该映像 然后我使用 docker load -i img.tar 当我尝试运行容器时,我得到以下错误 PS C:\Users\manish\Desktop\docker> docker run -dit --name

我在我的red hat Linux上创建了一个docker映像。 基本映像是centos映像,上面安装了应用程序。我能够在多台Linux机器上的dockers上运行映像

然后,我保存了该映像,然后在安装了所有最新更新的windows server 2019计算机上复制了该映像

然后我使用

docker load -i img.tar 
当我尝试运行容器时,我得到以下错误

PS C:\Users\manish\Desktop\docker> docker run -dit  --name manish22ct   docker_22_oct:1.0
99d061211a5cc682408a2556946266e0df2596f3a4d233a557d99e28cd24371e
C:\Program Files\Docker\docker.exe: 
Error response from daemon: container 99d061211a5cc682408a2556946266e0df2596f3a4d233a557d99e28cd24371e encountered an error during CreateContainer:
failure in a Windows system call: The virtual machine or container JSON document is invalid. (0xc037010d)



extra info: {"SystemType":"container","Name":"99d061211a5cc682408a2556946266e0df2596f3a4d233a557d99e28cd24371e","Owner":"docker","LayerFolderPath":"C:\\ProgramData\\docker\\lcow\\99d061211a5cc682408a2556946266e0df2596f3a4d233a557d99e28cd24371e","Layers":[{"ID":"cf1935b5-650d-57cc-81f0-469ceb110edf","Path":"C:\\ProgramData\\docker\\lcow\\04f407aadd6912e3bc76dcd858a2754acbf5a378ccef8a11ec1079c070900a4e\\layer.vhd"},{"ID":"fe9ae0e9-ed92-51ea-b423-098275f00ed8",

尽我所能回答我自己的问题,以防对某人有所帮助

我发现Linux和windows的docker守护进程是不同的。对于Linux 其由dockerhub提供,但对于windows,其由Microsoft提供。我从dockerhub下载的一些图像,如Cassandra,也不能直接在windows上运行,但在Linux上运行得非常好

有时这些图像也会运行

如果您的图像没有在这两个平台上运行,则图像层中存在妨碍您在windows上运行的内容

对于windows,我发现RUN命令是应该避免的。 检查dockerfile并删除所有RUN命令,然后将所有这些命令移到shell文件中,比如runMe.sh。在这个shell文件中所有命令的末尾,不要忘记包含tail-f/dev/null

因为dockerfile中只允许有一个CMD CMD(/runMe.sh>/runMe.log 2>&1) 是dockerfile中唯一剩下的RUN和CMD指令集


创造你的形象。它可以在Windows和Linux上运行。

嘿,你解决了这个问题吗?如果是,你能把答案贴出来吗?