Docker for Windows部署VC++编译的EXE程序方法

1 前言

 因为想在项目中构建微服务来管理不同单位开发的分析算法,所以选择了Docker+Kubernets的方案。之前一直有个疑惑:有的单位开发的算法是采用Visual Studio编译的,这种windows平台下生成的exe程序能在Docker中部署吗?这个疑问源自对Docker的不了解,一直以为其是Linux下的东西,但是通过查看多方资料,得出的结论是肯定的,可以直接通过Docker for Windows来实现,只是用这种方式的人很少而已,国内的博客上似乎很少,几乎找不到相关的东西,坑太多需要自己去填。

2 环境配置

首先需要在Docker Store下载Docker CE for Windows,地址:https://store.docker.com/editions/community/docker-ce-desktop-windows,这里需要先注册后下载。下载后的安装就一路默认即可,中间有个地方可能需要根据自己的情况选择:Switch to Windows Container。据说安装的时候需要开启Hyper-V,因为我的电脑一直开启着的所以没有遇到这方面的提示,安装完后会要求重启计算机。

安装完毕后,电脑右下角的托盘中就会有灰色小鲸鱼的小图标了(不太明白为什么是灰色而不是蓝色),这时一般我们会配置镜像加速,我选择的是阿里云镜像加速,地址:https://dev.aliyun.com/search.html,登陆后,点击管理中心--镜像加速(左侧),这时你可以看到【您的专属加速地址】,把这个地址拷贝下来。再右键点击计算机右下角托盘里面的小鲸鱼,选择Setting\Daemon,把刚才的地址放到Daemon的Json对象的registry-mirros数组中,这个数组的元素是string,所以记得在自己的地址上打上“”符号,最后apply,重启docker即可。

3 VC++程序部署

这是我使用windows版本的docker的主要目的,也是绕了我不少时间的地方。Microsoft提供了两个基础的镜像用于构建Windows APP部署的Docker:microsoft/nanoserver和microsoft/windowsservercore,如果你了解下这两个镜像就会知道他们非常庞大,前者1G多,后者10G多,明白人一上来可能就会选择镜像大小小的nanoserver作为基镜像,但是在我自己的实际测试中,nanoserver构建的镜像在跑C++程序时,既不报错也不按照程序原本的设计打印输出信息,折磨人得很。原因的话应该是这个基镜像中缺少一些基础环境dll,我尝试在里面安装vc_redist也不能解决,我认为这是最坑的地方。最后我采用了microsoft/windowsservercore,编译了一个基础的HelloWorld程序。

代码如下:

#include"stdafx.h"
#include<iostream>

int main()
{
    std::cout<<"Hello LMW"<<std::endl;
    int k;
    std::cin>>k;
    return 0;
}

并用VS2015编译输出了Hello.exe,这个时候虽然有了exe但是这基镜像中的环境中依然缺少一些环境库(可能是没有安装vc_redist吧),这个时候通过vs的dumpbin.exe程序来查看exe依赖的所有的dll,并把这些dll和exe一起copy到docker镜像中才行。使用dumpbin.exe的命令是:dumpbin.exe /DEPENDENTS Hello.exe(注意正确的路径)。在C:\Windows\System32中找到这些dll即可。

把exe和dll放到一个文件夹中,本文中放在了test文件下,并编写dockerfile

FROM microsoft/windowsservercore
COPY test C://test
WORKDIR c://test
CMD Hello.exe

构建docker:

docker build –t test .

即可完成docker的构建,运行docker:docker run test,即可看到输出“Hello LMW”。

至此docker中部署VC++程序就完成了,主要需要注意的是采用windowsservercore作为基镜像,并注意依赖的dll一定要完整。

 

后记:有朋友私信我问windows下docker相关的问题,这还真是不好讲,因为我写完这篇博客后,就放弃在windows下使用docker,转战linux了。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker for Windows Installer.exe 是一款用于在Windows操作系统上安装Docker容器平台的可执行文件。Docker是一种开源的应用容器解决方案,可以帮助开发人员更轻松地构建、打包、分发和运行应用程序Docker for Windows安装程序的作用是通过简单的点击操作帮助用户在Windows系统中安装并配置Docker平台。这意味着用户无需手动进行安装过程的各种复杂操作,只需下载该可执行文件,双击运行后,系统将自动安装Docker所需的组件和依赖项,而不需要用户手动下载和安装。 Docker for Windows Installer.exe 功能强大,它包含了Docker Engine、Docker Compose、Docker Machine等工具,这些工具可以帮助用户快速搭建、运行和管理容器环境。它还提供了图形化用户界面,用户可以通过界面进行容器创建、启动、停止、删除等操作,轻松管理容器和镜像。 使用Docker for Windows,开发人员可以更加高效地进行应用程序的开发和测试,因为Docker提供了独立、可移植的容器环境,可以将应用程序和依赖项打包成一个独立的容器,并在不同的环境中运行。这样,开发人员无需担心应用程序在不同环境中的兼容性问题,大大提高了开发和测试的效率。 总结来说,Docker for Windows Installer.exe是一个方便、简单的安装程序,它帮助Windows用户快速安装和配置Docker容器平台,提供了一套完整的工具和界面,方便用户进行应用程序的开发、测试和部署Docker的使用还能够提高应用程序的可移植性和可靠性,减少了因环境变化导致的问题,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值