admin管理员组文章数量:1565292
前言
上一篇 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/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:\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/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 命令
版权声明:本文标题:docker使用笔记-windows平台镜像构建及使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727149442a1099436.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论