2017年年初,docker公司將原先的docker項目改名為moby,並創建了docker-ce和docker-ee。
這三者的關系是:
moby是繼承了原先的docker的項目,是社區維護的的開源項目,誰都可以在moby的基礎打造自己的容器產品。
docker-ce是docker公司維護的開源項目,是一個基於moby項目的免費的容器產品 。
docker-ee是docker公司維護的閉源產品,是docker公司的商業產品。
一,Docker 的安裝
Windows 安裝 Docker 官方文檔: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/quick-start-windows-server
Docker 在不同Windows版本的系統上安裝,安裝方法是有差異的。
1,在Win10 的安裝
在 Docker 官方網站 上注冊一個賬號,下載程序進行安裝就可以了,整個過程只有兩步,比較簡單。
2,在Windows Server 2016操作系統上
Windows Server 版本,只能安裝Docker EE版本。
a,在安裝Docker之前,更新操作系統的所有補丁,具體操作方法如下:
在CMD窗口,或者Powershell窗口輸入 sconfig 命令,彈出如下窗口:
選擇 【6】,再選擇【A】,對操作系統的所有補丁進行更新
b,然后,進入PowerShell窗口,安裝 Nuget
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force #指定Nuget安裝包最小版本
c, 進入PowerShell窗口,用命令行安裝 Docker (摘自:https://q.cnblogs.com/q/104529/)
Install-Module DockerProvider -Force Install-Package Docker -ProviderName DockerProvider -Force 或者 Install-Module -Name DockerMsftProvider -Force #安裝docker模塊 Install-Package -Name docker -ProviderName DockerMsftProvider -Force #安裝docker包
d,重新啟動電腦
Restart-Computer -Force #重新啟動
備注:在安裝的過程,會出現一個意外,找不到 “ C:\Users\ADMINI~1\AppData\Local\Temp\2\DockerMsftProvider\docker-19-03-1.zip ” 文件。
解決方法:
a, 找到配置文件 “C:\Users\ADMINI~1\AppData\Local\Temp\2\DockerMsftProvider\DockerDefault_DockerSearchIndex.json” ,查找缺失文件對應的網絡路徑,把文件下載到本地。
c, 執行更新命令
Find-Package – ProviderName DockerMsftProvider | Install-Package -Verbose
安裝完成后,可以通過 docker version命令查看相關版本信息 。
二,Docker 制作鏡像文件
1,制作一個鏡像文件:
docker build -t dockerdemo03 . # 這個命令的后邊,一定要有一個圓點
b,根據一個鏡像文件,運行一個容器
docker run -d -p 9990:80 dockerdemo03
容器運行成功后,可以通過如下IP進行訪問:
#route print 192.168.11.89 route -p add 192.168.11.89 MASK 255.255.255.240 10.0.75.1 #route delete 192.168.11.89
http://192.168.11.89:9990/api/values
netsh int ipv4 reset
方法二(摘自:https://www.cnblogs.com/KeenLeung/p/3511233.html):
netsh winsock reset catalog netsh int ip reset reset.log hit
重啟電腦后生效。
備注:
一些基本Docker操作命令
docker images 查看鏡像文件 docker ps -a 查看所有容器的運行記錄,以異常方式退出的容器將具有非零狀態代碼 docker ps 查看正在運行的容器 docker stop <container-id> 停止某個容器 docker kill <container-id> 殺掉某個容器 docker rm <container-id> 刪除某個容器 docker rmi <image-id> 刪除某個鏡像
三,docker 鏡像的 PUSH,PULL(深坑)
現在,現在我要把這個鏡像文件發布到服務,我的思路是:先把鏡像文件 PUSH 到Docker的倉庫,再到服務器上把這個鏡像文件拉取下來。
1,把鏡像文件PUSH到倉庫:
用自己注冊的賬號登錄到Docker
把鏡像文件推送到倉庫
#給鏡像文件取一個別名 docker tag bbbf62ce2eaf xcj26/webapp22 #把鏡像文件推送到倉庫 docker push xcj26/webapp22
推送成功。
2,服務器PULL 鏡像文件:
進入到服務器(Window Server 2016)的Docker ,登錄並拉取剛才PUSH的鏡像文件:
docker pull xcj26/webapp22 #拉取鏡像文件
錯誤信息提示為:
a Windows version 10.0.17134-based image is incompatible with a 10.0.14393 host
顯示操作系統的版本不兼容
=====換個思路=====
我把本地的程序發布成本地文件,然后拷貝到服務器,再創建 Dockerfile 生成鏡像文件。
也是同樣的問題
a Windows version 10.0.17134-based image is incompatible with a 10.0.14393 host
查閱了很多資料,最有用的就是如下這兩個信息:
stackoverflow:https://stackoverflow.com/questions/54229367/dockers-image-and-host-are-incompatible
windows 容器的兼容性:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility
大致意思是 基礎鏡像庫(FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-nanoserver-1803 AS base)不支持在Windows Server 2016(10.0.14393) 服務器上運行。 但是支持在Win 10(10.為。17134)電腦上運行。
在Win 10電腦上用Docker環境上開發一個程序,而不能在自家的服務器Window Server 2016上運行。
補充:
https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
docker pull mcr.microsoft.com/windows/servercore:1903
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries
docker pull mcr.microsoft.com/windows/servercore:1803
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries
docker pull microsoft/windowsservercore
docker pull nanoserver/iis