Docker for windows 可以用docker在windows中部署VC 之类。

2024-05-15 00:32
文章标签 部署 windows docker vc

本文主要是介绍Docker for windows 可以用docker在windows中部署VC 之类。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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程序。

代码如下:

 
  1. #include"stdafx.h"

  2. #include<iostream>

  3.  
  4. int main()

  5. {

  6. std::cout<<"Hello LMW"<<std::endl;

  7. int k;

  8. std::cin>>k;

  9. return 0;

  10. }

并用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一定要完整。

 

这篇关于Docker for windows 可以用docker在windows中部署VC 之类。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990294

相关文章

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压