为Windows Service 2019 使用 Docker

引言
最近收到领导通知,甲方需要将原来的服务器迁移到新的服务器。
原来的服务器上安装了很多的服务,每次重启之后总是有很多的问题需要人工大量的进行干预。
这次迁移的还是Windows服务器于是这次打算使用Docker给以后减少点麻烦。
有的项目必须跑在Windows环境中,吐槽。

准备工作

操作系统: Windows Service 2019
指导手册: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server

开始安装

安装Hyper-V

通过服务器管理器->添加角色和功能进行安装。
在选择服务器角色界面选择 Hyper-V ,之后一直下一步即可。

为Windows Service 2019 使用 Docker

安装容器

Install-WindowsFeature -Name containers

安装Docker

  1. 打开提升的 PowerShell 会话,从 PowerShell 库安装 Docker-Microsoft PackageManagement 提供程序。
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

如果系统提示安装 NuGet 提供程序,还请键入 Y 进行安装。
如果在打开 PowerShell 库时遇到错误,则可能需要将 PowerShell 客户端使用的 TLS 版本设置为 TLS 1.2。 为此,请运行以下命令:

Set the TLS version used by the PowerShell client to TLS 1.2.

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
  1. 使用 PackageManagement PowerShell 模块安装最新版本的 Docker。
Install-Package -Name docker -ProviderName DockerMsftProvider

PowerShell 询问是否信任包源”DockerDefault”时,键入 A 以继续进行安装。
3. 在安装完成后,请重启计算机。

Restart-Computer -Force

安装docker-compose

可以通过链接查询最新的docker-compose 【https://github.com/docker/compose/releases】 再使用Powershell执行下方命令进行安装。

Invoke-WebRequest https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-windows-x86_64.exe -UseBasicParsing -OutFile $env:ProgramFiles\docker\docker-compose.exe

切换内核(此方法有问题)

安装完后,默认为Windows内核容器,可手工切换至Linux内核容器,但个人认为意义并不大,完全可以在服务器上通过Hyper-V管理器安装一个Linux虚拟机,在虚拟机内跑Linux下的Docker,实现同时拥有两种内核的Docker服务,然后再通过Docker自带的Swarm进行统一管理,Swarm会根据镜像的类型自动发布到相应内核的Docker上去。
切换到Linux内核容器

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service Docker

切换到Windows内核容器

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", $null, "Machine")
Restart-Service Docker

更新Docker

  1. 使用以下命令检查安装的版本:
Get-Package -Name Docker -ProviderName DockerMsftProvider
  1. 使用以下命令查找当前版本:
Find-Package -Name Docker -ProviderName DockerMsftProvider
  1. 准备好升级后,运行以下命令:
Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force
  1. 最后,运行以下命令以启动 Docker:
Start-Service Docker

卸载Docker

准备你的系统以删除 Docker

在卸载 Docker 之前,请确保系统上没有运行任何容器。
运行以下 cmdlet,检查是否有正在运行的容器:

Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force

Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}

最好在删除 Docker 之前也从系统中删除所有容器、容器映像、网络和卷。 为此,可以运行以下 cmdlet:

docker system prune --volumes --all

正式卸载

使用 Uninstall-Package 和 Uninstall-Module cmdlet 从系统中删除 Docker 模块及其相应的程序包管理提供程序,如以下示例所示:

Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

清理 Docker 数据和系统组件

在卸载 Docker 后,需删除 Docker 的默认网络。这样,在卸载 Docker 后,这些网络的配置就不会保留在系统上。 为此,可以运行以下 cmdlet:

Get-HNSNetwork | Remove-HNSNetwork
PowerShell
在 Windows Server 2016 上删除 Docker 的默认网络。
</code></pre>
<p>Get-ContainerNetwork | Remove-ContainerNetwork</p>
<pre><code class="language-powershell">运行以下 cmdlet,从系统中删除 Docker 的程序数据:

Remove-Item "C:\ProgramData\Docker" -Recurse

重启系统:

Restart-Computer -Force

已知问题

  • 当执行命令的时候如果提示 npipe 连接失败。
    error during connect: This error may indicate that the docker daemon is not running.: Get “http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/json”: open //./pipe/docker_engine: The system cannot find the file specified.
可以考虑一下方式处理: 在 C:\ProgramData\Docker\config\daemon.json 文件中增加 "npipe://"
类似一下配置
{
    "hosts": ["tcp://0.0.0.0:2375","npipe://"]
}

吐槽

Original: https://www.cnblogs.com/ykbb/p/16290184.html
Author: 一块白板
Title: 为Windows Service 2019 使用 Docker

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610805/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 手把手教你搭建一个SpringBoot工程

    手把手教你搭建一个SpringBoot工程 首先进入Spring官网,下载Demo工程 像这样设置好 点击下载 将工程导入Idea并打开 在 application.propert…

    Linux 2023年6月14日
    0123
  • 【计算机取证篇】镜像挂载利器-Arsenal Image Mounter

    Arsenal Image Mounter是一款非常优秀的磁盘挂载工具,在Microsoft Windows中可以将磁盘映像的内容作为”真实磁盘”挂载到系统…

    Linux 2023年6月13日
    0130
  • CenterOS对防火墙和端口号的操作

    1 防火墙设置 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:systemctl disable fir…

    Linux 2023年6月7日
    096
  • Linux下 lsof 命令详解

    lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: …

    Linux 2023年6月13日
    0105
  • K8S的apiVersion版本详解

    1. 背景 Kubernetes的官方文档中并没有对apiVersion的详细解释,而且因为K8S本身版本也在快速迭代,有些资源在低版本还在beta阶段,到了高版本就变成了stab…

    Linux 2023年6月14日
    081
  • 正则表达式

    正则表达式 字符 作用 . 点号 匹配任意一个且只有一个字符 [] 匹配[]集合内的任意一个字符 [^] 匹配不包含^后的任意字符 星号 重复前一个字符(连续出现)0次或N次 . …

    Linux 2023年6月6日
    0116
  • 编译iPhone静态库的Makefile实例(与Shell脚本一起完成)

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/cy568searchx/p/5735419.htmlA…

    Linux 2023年5月28日
    0116
  • Laxcus远程终端

    Laxcus集群操作系统的远程终端越来越象Linux的VIM了,除了界面风格之外,在用户使用的命令上也在向VIM靠近,原因嘛也不难理解,毕竟Laxcus是一个分布式的操作系统,处理…

    Linux 2023年6月6日
    0120
  • 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day02

    HTML5 第二天 一、rotate 2d旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转 使用步骤: 给元素添加转换属性 transform 属性值为 rotate(&amp…

    Linux 2023年6月8日
    0116
  • Linux的文件结构和基本分类

    (注:此笔记默认操作系统为centOS7) Windows下的文件都是以盘符开头的,Linux中没有盘符,所有文件都在根目录下。 cd /进入根目录 ls /显示根目录下的文件查看…

    Linux 2023年6月7日
    096
  • spring boot实现不同生产环境下的文件配置

    spring boot项目开发时不同开发环境,打包生成不同的文件。(避免生产环境得到开发环境时的配置文件) 配置不同生产环境 本文适用于开发环境下需要打包项目至生产环境,避免开发环…

    Linux 2023年6月7日
    095
  • [ Shell ] 用 while + case 实现 GetOptions 效果

    https://www.cnblogs.com/yeungchie/ 可以用 getopt,但我还是喜欢自己写这个过程,便于我控制更多细节。 下面要实现的效果是,从命令行参数中分析…

    Linux 2023年6月7日
    0108
  • Bitmap在Redis中的应用(转)

    原文:https://cloud.tencent.com/developer/news/387248 作者:一叶而不知秋 作为铺垫,我们先来介绍一些Bitmap的相关内容: 位图主…

    Linux 2023年5月28日
    096
  • [转]最值得拥有的免费Bootstrap后台管理模板

    Original: https://www.cnblogs.com/haowuji/p/7490519.htmlAuthor: 下-个路口Title: [转]最值得拥有的免费Boo…

    Linux 2023年6月13日
    0109
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    Linux 2023年6月13日
    094
  • 数据库配置和前端项目创建

    1、封装Response utils.py/exception from rest_framework.response import Response class APIResp…

    Linux 2023年6月14日
    0101
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球