1. 程式人生 > >docker使用筆記-windows平臺映象構建及使用

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