当前位置:   article > 正文

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

docker from windwos

前言

上一篇 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
  • 1
  • 2

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

1、拉去镜像

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

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

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

2、准备测试程序

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

#include <iostream>
using namespace std;
int main()
{
	cout << "hello world, c++" << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

进入x64的dumpbin目录下
在这里插入图片描述
执行命令:dumpbin.exe /DEPENDENTS C:\Users\Administrator\Desktop\helloworld\helloworld.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

2、构建镜像

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

docker build -t servercore:latest  .
  • 1

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

四、测试镜像

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/47960
推荐阅读
相关标签
  

闽ICP备14008679号