docker使用笔记-windows平台镜像构建及使用 - Go语言中文社区

docker使用笔记-windows平台镜像构建及使用


前言

上一篇 docker使用笔记-windows平台安装及配置 记录了在windows平台下的安装和配置。由于项目组业务的需求,需要在windows平台的docker下运行包含有vs2015运行时库的程序。这篇文章就记录一下在windows server 2016的环境下使用docker的过程。

一、 安装docker

在windows server 2016平台下安装docker和win10平台下基本一致,参考 docker使用笔记-windows平台安装及配置 。其中开启Hyper-V功能略有不同,其他的都是一样的。
我们默认完成安装后,

  • 已经切换到windows平台下的docker镜像使用
  • 已经修改了镜像加速

二、准备工作

相比linux平台来说,在docker hub上windows平台下的镜像并不是很多,可以在docker hub上过滤一下看看,我这边列举几个和本文相关的:

 microsoft/windowsservercore
 microsoft/nanoserver

上面microsoft/nanoserver是Windows Server 2016的一套终极精简部署版。点击 nanoserver和server2016 查看的差异。
我这边使用的是 microsoft/windowsservercore 为了避免不必要的麻烦。

1、拉去镜像

点击此处 查看microsoft/windowsservercore的介绍。打开windows server 2016的命令行,在命令行使用命令:

docker pull mcr.microsoft.com/windows/servercore:ltsc2016

拉取镜像,如图(我的环境上已经拉去下来了):
在这里插入图片描述

2、准备测试程序

1)编译测试程序
我在我的物理机上写了一个测试程序,用来测试是否能够在docker上正确的运行程序。代码:

#include <iostream>
using namespace std;
int main()
{
	cout << "hello world, c++" << endl;
	return 0;
}

编译之后生成了一个helloworld.exe的可以执行程序,且是在x64的平台下。通过使用dumpbin.exe查看依赖项,我将改程序依赖的所有dll都整理到了一个文件夹中。
2)查看依赖项:

进入x64的dumpbin目录下
在这里插入图片描述
执行命令:dumpbin.exe /DEPENDENTS C:UsersAdministratorDesktophelloworldhelloworld.exe
查看依赖
在这里插入图片描述

再根据上面的依赖项的名字将所有的dll拷贝到文件夹servercore中:
在这里插入图片描述

然后将该文件夹拷贝到windows server 2016的环境上去备用。至此,我们的准备工作基本完成了。

三、构建镜像

1、dockerfile什么是dockerfile?
在上一步的test文件夹下,创建一个名为 dockerfile 的文件(注意全名就是dockerfile,并无任何的后缀),编译以下内容:

FROM microsoft/windowsservercore

# 添加vc_redist.x64.exe 下载路径,并安装
ADD https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe /vc_redist.x64.exe
RUN C:vc_redist.x64.exe /quiet /install

# 设置工作目录
WORKDIR /servercore

COPY / .

CMD helloworld.exe

结构如下:
在这里插入图片描述

2、构建镜像

在cmd命令行中进入目录 D:servercore ,看到已经下载下的镜像有:
在这里插入图片描述
在当前目录下,使用命令

docker build -t servercore:latest  .

构建一个名字为 servercore tag为latest的docker镜像,注意最后面的一个 . ,执行的过程如下:
在这里插入图片描述
新构建出的镜像文件
在这里插入图片描述

四、测试镜像

构建出镜像之后,我们运行镜像即可,应该能够在控制台打印出一行 hello world, c++的字样:
在这里插入图片描述

到此,我们成功在docker上运行了使用vs运行库的程序。

参考链接:
Docker for Windows部署VC++编译的EXE程序方法
Dockerfile 中的 COPY 与 ADD 命令

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_30549833/article/details/85208504
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:22:42
  • 阅读 ( 1489 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢