服务器2019计算机上的Linux容器

时间:2020-10-22 09:58:27

标签: 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 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",

1 个答案:

答案 0 :(得分:1)

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

我发现 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 上运行。