window server 2019安装docker

参考资料:

https://bbs.huaweicloud.com/blogs/176232

https://www.cnblogs.com/yankliu-vip/p/Docker-on-Windows-Server-2019.html

一、联网安装

官方提供的方法

(1)步骤一:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force 
#这一步骤是安装DockerMsftProvider模块,如没有NuGet程序,则会提示你安装,NuGet是包管理程序,这个必须要你安装,无法跳过

(2)步骤二:

Install-Package -Name docker -ProviderName DockerMsftProvider 
#利用上述安装的模块来安装docker包,这一步会下载一个docker的zip包

总结一下:按照官网这种方式来安装,首先你要安装NuGet程序,然后安装DokcerMsftProvider,最后利用DokcerMsftProvider来安装docker,这一步还是会下载docker的zip包,最最主要的就是这最后一步,前面下载程序没什么好说的,这最后一步到底干了什么?其实主要做了如下5件事情:

(1)下载docker的zip包(里面是一堆的exe程序,包含了服务端dockerd和客户端docker等一系列的docker程序)

(2)解压docker zip包到 C:\Program Files\Docker 目录,创建 C:\ProgramData\Docker\config 目录

(3)添加环境path

C:\Program Files\Docker  #将这个路径添加到系统环境变量,其实就是为了能够在 PowerShell中全局执行docker命令

(4)利用winserver的服务器管理器安装Containers(容器)功能,此功能不安装,无法启动docker服务端

(5)启动docker服务端,并将其注册为服务,这一步需要确保 C:\ProgramData\Docker\config 下具有 daemon.json 文件

OK !到这里我们清楚了,它在这个安装过程中具体干了些什么事情,那么我们还有必要安装NuGet和DokcerMsftProvider这个2玩意儿?没必要,我们完全可以自己下载docker的zip包,手动实现这些过程!当然,你要是一些列命令敲下来啪啪啪就全部安装好了,那么你也没必要看这个文章了,作者照着敲了一堆命令,不是这个程序包下不到,就是那个程序包下不到,也是头疼的很。

二、离线安装

环境要求:winserver 2019 标准版 或 winserver 2016 标准版一台

资源要求:docker离线包,本文基于docker-19-03-5.zip进行安装

docker zip包下载地址: https://download.docker.com/win/static/stable/x86_64/docker-19-03-13.zip

步骤一:

解压 docker-19-03.zip到 C:\Program Files\Docker 下,其中Docker目录需要手动创建

步骤二:

创建 C:\ProgramData\Docker\config 目录,在config目录下创建 daemon.json 文件,其内容可为
{
"insecure-registries":["192.168.1.135:5000"]
}
作者在此处加了一个本地的镜像仓库,请根据实际情况修改,为空也可以。

步骤三:

添加系统环境path环境变量:我的电脑 > 属性 > 高级系统设置 > 环境变量 > 新建

步骤四:将dockerd注册为服务

以管理员身份进入CMD执行如下指令:

cd C:\Program Files\Docker  # 进入dockerd.exe所在目录路径
dockerd --register-service  # 将dockerd 注册为服务

步骤五:安装Containers功能,安装需要重启

 步骤六:开始玩docker

三、在window docker中运行linux容器

Windows上的Docker只运行Windows容器,要在Windows Server上使用Linux容器,需要使用Docker Enterprise Edition Preview,其中包含用于运行Docker Linux容器的完整LinuxKit系统。

 启用LinuxKit系统以运行Linux容器

步骤一:

# Set LCOW_SUPPORTED Variable to 1 for enabled
# powershell执行以下命令
[Environment]::SetEnvironmentVariable(
"LCOW_SUPPORTED", "1", "Machine")

步骤二:

# Enable Experimental Features in Dockerd daemon.conf
# powershell执行以下命令
$configfile
= @" { "experimental": true } "@

$configfile|Out-File -FilePath C:\ProgramData\docker\config\daemon.json -Encoding ascii -Force

步骤三:

在Docker使用 Linux Container时,仍然需要使用Linux kernal。

You should use the latest LCOW release here

Invoke-WebRequest -Uri "https://github.com/linuxkit/lcow/releases/download/v4.14.35-v0.3.9/release.zip" -UseBasicParsing -OutFile release.zip       # 下载

Expand-Archive release.zip -DestinationPath "$Env:ProgramFiles\Linux Containers\."    # 解压

举例:

Redis on Docker Linux Container#

现在我们即可使用 Windows Container或者Linux Container,但是由于目前基于Windows Container只能运行Windows应用程序,所以我们需要使用--platform选择一种容器类型,参考如下

docker run --platform=linux --name redis-server -d -p 6379:6379 --restart=always redis

补充:

windows docker无法将镜像推入私有仓库,是因为windows镜像是注册表形式,需要在daemon.json加入allow-nondistributable-artifacts。

官方链接:https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/about/faq

配置如下:

{
 "registry-mirrors": ["xxxx"],
 "insecure-registries": ["xxx"],
 "allow-nondistributable-artifacts":["xxxx"]
}

References

  1. Posted on February 12, 2019 by Ben Thomas,Getting started with Linux Containers on Windows Server 2019
  2. November 16, 2018 by Andy Syrewicze (Chief Editor)
    ,How to Run 🐧 Linux Containers on Windows Server 2019
  3. posted @ 2017-02-10 11:40 北京的201个蓝天,Windows Container 和 Docker:你需要知道的5件事

 

posted @ 2021-07-07 17:43  流年晕开时光  阅读(4070)  评论(1编辑  收藏  举报