为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)

大家都在看

  • C语言怎么给函数添加形参的默认值

    如果不是机缘巧合,当年转到C++之后,恐怕很难再有机会还写C的代码。面向对象在现代coding中,就像圣经一样,在码农的口中自带光环,code起来左一个语法糖,右一个范式编程,各种…

    Linux 2023年6月6日
    097
  • Docker容器网络配置

    Docker容器网络配置 1、Linux内核实现名称空间的创建 1.1 ip netns命令 可以借助 ip netns命令来完成对 Network Namespace 的各种操作…

    Linux 2023年6月7日
    090
  • Linux如何让修改的配置生效?

    因为一般情况下服务只在启动时读取配置文件,修改配置文件后如果不重启服务,服务无法检测到被修改的内容,还会保持原来的配置。所以我们要重启服务来让服务重新读取配置文件。 (1)方法一:…

    Linux 2023年6月8日
    069
  • Kubenertes-实战入门

    实战入门 Namespace Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现 多套环境的资源隔离。 默认情况下,kubernetes集群中…

    Linux 2023年6月13日
    082
  • windows版本rabbitmq安装及日志level设置

    1.DirectX Repair 安装缺失的C++组件,不安装缺失的组件会造成第二部安装erl文件夹缺少bin文件夹2.安装otp_win64_23.1 1.配置 ERLANG_H…

    Linux 2023年6月7日
    0170
  • Linux之Keepalived高可用

    一、高可用介绍 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。 硬件通常使用:F5 软件通常使用:Ke…

    Linux 2023年6月14日
    0131
  • Kafka 配置文件详情

    kafka的配置分为 broker、producter、consumer三个不同的配置 一 、BROKER 的全局配置 最为核心的三个配置 broker.id、log.dir、zo…

    Linux 2023年6月8日
    076
  • Linux 0.11源码阅读笔记-文件管理

    Linux 0.11源码阅读笔记-文件管理 文件系统 生磁盘 未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件。 磁盘分区 生磁盘可以被分区,分区…

    Linux 2023年5月27日
    085
  • 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day03

    HTML5 第三天 一、 认识 3D 转换 3D 的特点 近大远小 物体和面遮挡不可见 三维坐标系 x 轴:水平向右 — 注意:x 轴右边是正值,左边是负值 y 轴:垂…

    Linux 2023年6月8日
    0103
  • sed语句用法

    sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要…

    Linux 2023年6月6日
    081
  • 5.9 Linux Vim批量注释和自定义注释

    使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符 #再退回命令模式,非常麻烦。 连续行的注释其实可以用替换命令来完…

    Linux 2023年6月7日
    081
  • gerrit系统如何配置访问控制

    .版本:v0.3作者:河东西望日期:2022-7-13. gerrit系统的上手使用有两个难点: 想要上手使用gerrit的同仁们,搭建部署好gerrit系统之后,会发现gerri…

    Linux 2023年6月7日
    083
  • 九、磁盘管理

    (一)磁盘基础知识磁盘–硬盘(机械,固态) 磁盘结构https://www.jianshu.com/p/cf100e39ccdf 扇区、磁道、柱面 扇区默认大小是512…

    Linux 2023年6月7日
    0104
  • 大数据集群服务启停脚本/常用端口/时间同步

    1、整体启动/停止HDFS start-dfs.sh/stop-dfs.sh 2、整体启动/停止YARN start-yarn.sh/stop-yarn.sh 1、分别启动/停止H…

    Linux 2023年6月8日
    078
  • (转)WEB页面导出为Word文档后分页&横向打印的方法

    WEB页面导出为Word文档后分页&横向打印的方法title >HEAD >/// * * @param {Object} cont 要导出的html元素内容的…

    Linux 2023年6月7日
    0109
  • Jmeter 使用Json提取请求数据

    使用Json提取器可以提取请求响应数据 Json提取器 位置: 后置处理器-》Json提取器 使用介绍 1,变量名 变量名,其他部分引用方式: ${变量名}若提取多个变量,多个之间…

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