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:\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

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

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 命令

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习 Docker 的过程中,需要注意以下几点: 1. 熟悉 Docker 的基本概念和术语,如镜像、容器、仓等,这是进一步学习和使用 Docker 的基础。 2. 安装和配置 Docker,根据操作系统的不同,安装方法也有所不同,需要参考官方文档进行安装和配置。 3. 学习 Dockerfile 的使用Dockerfile 是用于构建 Docker 镜像的脚本文件,通过 Dockerfile 可以定义应用程序的运行环境、依赖关系、启动命令等信息。 4. 理解 Docker 镜像的概念和使用方法,Docker 镜像是用于创建 Docker 容器的基础,可以通过 Dockerfile 构建自定义的 Docker 镜像,也可以从仓中获取已有的 Docker 镜像。 5. 熟悉 Docker 容器的使用方法,Docker 容器是运行 Docker 镜像的实例,可以通过 Docker 容器启动、停止、删除、查看日志等操作来管理应用程序的运行状态。 6. 掌握 Docker Compose 的使用方法,Docker Compose 是用于定义和运行多个 Docker 容器的工具,可以通过 Docker Compose 统一管理多个容器,方便应用程序的部署和管理。 在使用 Dockerfile 的过程中,需要注意以下几点: 1. Dockerfile 中的每一条指令都会生成一个新的镜像层,因此需要尽量减少指令的数量和长度,以减小镜像的体积和构建时间。 2. 在编写 Dockerfile 时,可以使用 ARG 和 ENV 指令来定义环境变量,以方便后续的管理和配置。 3. 在构建 Docker 镜像时,可以使用 --no-cache 选项来避免使用缓存,以确保每次构建都是从头开始的。 4. 在编写 Dockerfile 时,需要考虑应用程序的安全性,例如禁止使用 root 用户、限制容器的资源使用等。 5. 在构建 Docker 镜像时,可以使用多阶段构建来减小镜像的体积,例如先构建一个包含构建工具和依赖项的镜像,再从中复制出应用程序的可执行文件来构建最终的镜像。 希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值