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
- Posted on February 12, 2019 by Ben Thomas,Getting started with Linux Containers on Windows Server 2019
- November 16, 2018 by Andy Syrewicze (Chief Editor)
,How to Run 🐧 Linux Containers on Windows Server 2019 - posted @ 2017-02-10 11:40 北京的201个蓝天,Windows Container 和 Docker:你需要知道的5件事
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步