windowscontainer(docker)容器资料笔记

author author     2022-08-23     209

关键词:

背景

业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案。

技术背景: .net

 

Docker 学习资料

Docker中文社区: http://www.docker.org.cn

微软docker文章:http://ruby-china.org/topics/27156

微软docker官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon

Windows container部署还要学习下powershell (百度下学习资料)

 

Windows container Docker 案例

携程.net 容器案例: https://segmentfault.com/a/1190000008169749

(.net 案例真的很少很少)

 

携程案例:http://geek.csdn.net/news/detail/64295

Docker 应用案例: http://www.docker.org.cn/docker/122.html

除了以上的案例外,自然还有非常多案例,但是基本都是java的!

 

Docker 常用命令

参考资料:http://blog.csdn.net/zhang__jiayu/article/details/42611469

(可百度搜索更多)

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]

容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]

容器rootfs命令 — docker [commit|cp|diff]

镜像仓库 — docker [login|pull|push|search]

本地镜像管理 — docker [images|rmi|tag|build|history|save|import]

其他命令 — docker [info|version]

 

Windows container (Docker) 安装

参考文章: http://www.bubuko.com/infodetail-1765950.html

微软文章: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon

 

1、安装Container Feature,容器功能角色

可以使用UI,当然也可以用PowerShell:

Install-WindowsFeature containers

Restart-Computer -Force

由于容器本身可以跑在物理机或者虚拟机中,可以顺便把Hyper-V也装了。

2、安装Docker

可以很炫的用PowerShell来拉取Docker引擎:

Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip" -OutFile "$env:TEMP\docker-1.12.1.zip" –UseBasicParsing

默认解压到C:\Program Files\Docker

Expand-Archive -Path "$env:TEMP\docker-1.12.1.zip" -DestinationPath $env:ProgramFiles

当然,你手动用浏览器什么的https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip 下载了自己解压也是没问题的。

然后要配置路径的环境变量:

如果是临时测试,可以用:

$env:path += ";c:\program files\docker"

马上就可以继续后续的PowerShell命令。

如果以后还要用,那就:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

重新打开PowerShell。

当然,也可以用传统的CMD Set Path=。。。。来配置。

接下来就要注册Docker Deamon服务了,然后启动docker服务。

dockerd --register-service

Start-Service docker

 

Windows container Docker 镜像安装

 

.net(或者说windows) 下面可选择的基础镜像容器操作系统: windows server core 和 nanoserver

Linux等其他平台的镜像比较多

参考: https://hub.docker.com/explore/

 

而Windows 镜像其实不多

参考:https://hub.docker.com/r/microsoft/

阿里云的镜像服务(国内下载快一些):https://dev.aliyun.com/

 

来源网上的文章描述:

很多朋友都问过这个问题:我是不是可以在Windows容器服务中运行Linux应用,或者反过来。Docker很厉害,但还木有辣么厉害。你无法在Windows上直接运行Linux进程,同样你也无法在Windows Container中运行Linux进程。这个情况对于以上提到的2中运行时都适用,无论哪种运行时模型,底层操作系统都是Windows,所以你无法运行Linux进程。

这同样意味着,当前Docker Hub上面的大量镜像无法在Windows Container 中使用。微软已经开始在Docker Hub上提供Windows容器镜像,你可以使用同样的docker pull命令或者去这些镜像。比如:microsoft/windowservercore 镜像是一个完整的服务器镜像(大概3G大小),在这个镜像中你可以使用标准的msi安装包,通过Dockerfile来构建你自己镜像,可以安装和运行完整的.net framework和其他的Windows应用程序。microsoft/nanoserver 镜像则是一个精简版的操作系统镜像(大概300M),不提供msi支持,只能运行.net core应用,同时需要使用powershell进行管理。

 

Windows container Docker 镜像制作

Windows 镜像其实不多,这些可以用来做基础的镜像

参考:https://hub.docker.com/r/microsoft/

阿里云的镜像服务:https://dev.aliyun.com/

 

Dockfile 镜像制作(建议百度获取更多)

http://www.jb51.net/article/105333.htm

https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

 

微软制作的一些镜像的脚本

https://github.com/Microsoft/Virtualization-Documentation

 

网上参考的镜像制作的文章

Node.js镜像 http://chuansong.me/n/509677751556

DoNet Core 镜像 http://www.cnblogs.com/ylsforever/p/5736227.html

 

Docker 私有仓库建设

微软的仓库或者阿里云的仓库下载docker速度依然是慢,慢,慢。必须要自建仓库!

貌似网上没有windows 的docker搭建私有仓库的例子!貌似有ubuntu, 具体百度吧!

 

Docker 编排

参考文章:http://www.alauda.cn/2015/09/14/containers-docker-windows-and-trends/

容器编排比较: http://www.infoq.com/cn/news/2017/02/compare-container-orchestration

容器编排比较2:http://www.d1net.com/cloud/news/382913.html

携程.net 容器案例: https://segmentfault.com/a/1190000008169749

 

携程的案例:Mesos和Kubernetes (似乎涉及代码的改造)

Swarm据说支持windows docker。

微软官方貌似没有 windows container 容器编排的工具支持。

 

总结

总体windows container的技术发展尚处于前期,很多的资料和工具尚且没有配套的解决方案(整体部署颠覆原有windows的部署方式,需要采用powershell工具),没有成熟的企业商用案例分享,甚至windows server core和nanoserver 的基础镜像都要下载个大半天(镜像生态似乎只有微软的贡献,没有第三方提交),甚至经常断线(国内也没有私有镜像服务)。

Nanoserver 基础镜像 比较适合.net core的方式部署。(大约200-300M)

Windowservercore 基础镜像 比较适合 windows 旧的应用程序。(大约2-4G)

 

相反linux docker容器发展相对成熟很多,具体应用案例证明这些(百度下一些大公司的分享),上手更加容易(本身linux 常用shell脚本部署的),围绕linux的容器生态(编排工具,解决方案等),更贴合作为linux开发运维的部署的简化和完善补充。

 

虽然windows container 目前还不成熟,但是相信windows container的会继续发展,我们依旧要持续保持关注,以便未来能够真正落地,应用到公司的项目中简化运维部署。


另外: 目前本人windows 上面也没有成功运行过docker,因为微软镜像下载真的很慢很慢,而且很不稳定。(也许是公司网络原因)

          欢迎有windows docker 经验的人员留言交流,tks!!!

windows下docker使用及注意事项(代码片段)

1、windowscontainer模式下,pull镜像会失败nomatchingmanifestforwindows/amd64inthemanifestlistentries2、windowscontainer模式下会存在问题,再次切换到linuxcontainer模式下,启动会出现问题outofmemory3、解决memory问题右击docker状态栏的图标,选择设置(set... 查看详情

Docker 容器挂在 docker stop 上(Windows 容器)

...(Windows容器)【英文标题】:Dockercontainerhangingondockerstop(WindowsContainer)【发布时间】:2019-12-1502:46:04【问题描述】:我有一个想要停止的容器,但是当我执行dockerstop[CONTAINER_ID]时它会挂起并且永远不会停止它。我试过普通的dockers... 查看详情

rancherv1.3发布:windowscontainer来了!

2016年12月初,当我们发布Rancherv1.2时,就定下了未来「更频繁的迭代」的计划。就在上周,Rancherv1.3正式发布啦!除了对v1.2中一些bug的修复之外,它还有几个新的功能:1)用户界面修复;2)DNS引擎的更改;3)Kubernetes及其相关工... 查看详情

visualstudio2017调试windowsserver2016dockercontainer

...装部署的。用知道windowsserver2016已经原生支持Docker了,其windowsContainer已经和Linux下的内核技术是一致的了,况且最重要的原因就是Docker容器的部署肯定是在Windowsserver上面的。所以何不尝个鲜,直接用windowsserver2016上装个visu 查看详情

centos部署k8s+docker分布式扩缩容系统

参考技术A文章摘自:https://www.kubernetes.org.cn/doc-25https://www.cnblogs.com/spll/p/10033316.html两台机器:192.168.26.227(master),192.168.26.2281、所有机器上执行以下命令,准备安装环境:(注意是所有机器,主机master,从机node都要安装)1.1、安... 查看详情

docker学习记录

入门from~菜鸟教程目前学习的部分容UbuntuDocker安装实际安装参考的是上一篇博客的链接教程DockerHelloWorld输出Helloworldrunoob@runoob:~$dockerrunubuntu:21.04/bin/echo"Hellow 查看详情

Windows 容器

】Windows容器【英文标题】:Windowscontainer【发布时间】:2016-09-2218:33:19【问题描述】:我已经使用Windowsserver2016TP5创建了AzureVM。在这台服务器上,我能够创建图像容器和docker引擎安装。我的问题如下第一次一切正常。但是我通过a... 查看详情

cluster(集群)模式-docker版哈希槽分区进行亿级数据存储3主3从redis集群扩缩容配置案例架构说明(代码片段)

3主3从redis集群扩缩容配置案例架构说明新建6个docker容器redis实例dockerrun-d--nameredis-node-1--nethost--privileged=true-v/data/redis/share/redis-node-1:/dataredis:6.0.8--cluster-enabledyes--appendonlyyes--port6381dockerrun-d--nameredis-node-2--nethost--privileged=true-v/... 查看详情

docker:windows容器能运行在linux上吗

...着高票的相关问题,找到了我想要的问题页面。docker-CanWindowsContainersbehostedonlinux?-StackOverflow接着找到这篇非常非常棒的文章:Docker❤️WSL2-TheFutureofDockerDesktopforWindows-DockerBlog最终我的疑惑终于解决了:在安装Dockerforwindows... 查看详情

docker基础操作(代码片段)

docker查看命令选项docker搜索镜像dockersearch[镜像名称]拉取docker镜像dockerpull[镜像名]查看存在的镜像dockerimages删除镜像dockerrmi[镜像IMAGE_ID]查看所有容器dockerps-a查看正在运行的容器dockerps启动、停止、重启容器dockerstart[容器ID]dockersto... 查看详情

第一次使用dockerforwindows遇到的坑

...其他工具,可直接到官网下载2.此版本的docker可同时运行Windowscontainer和Linuxcontainer。在powershell里运行&‘C:ProgramFilesDockerDockerDockerCli.exe‘-SwitchDaemon可直接进行切换。切换结果可通过dockerversion查看。3.在dockersetting里设置镜像路... 查看详情

docker删除镜像

  根据http://www.docker.org.cn/book/docker/what-is-docker-16.html进行了Docker简单的入门操作,操作完成之后想把操作中创建的镜像镜像删除,可是发现删除镜像貌似不是那么简单  第一步:需要先删除对应的容器  第二步:删除镜像... 查看详情

docker基础(代码片段)

文章目录一.docker简介二.docker下载三.docker命令四.docker数据卷五.docker安装mysql一.docker简介1.存在的问题在写代码的过程中我们会接触到开发环境,测试环境以及生产环境,若各个环境所需依赖项版本不同,则会造成冲... 查看详情

docker基础操作(代码片段)

docker基础操作docker查看命令选项docker搜索镜像dockersearch[镜像名称]拉取docker镜像dockerpull[镜像名]查看存在的镜像dockerimages删除镜像(如果已经用该镜像创建了容器,要先删除容器才能删除镜像)dockerrmi[镜像IMAGE_ID]查看所有容器(... 查看详情

docker容器

dockerrun-t-iubuntu:14.04/bin/bash新建并启动容器-t  让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 -i   让容器的标准输入保持打开 -d  让容器在后台以守护态(Deamonized)形式运行 doc... 查看详情

docker目录映射(代码片段)

docker常用命令:dockerps//查看所有正在运行容器dockerstopcontainerId//containerId是容器的IDdockerps-a//查看所有容器$dockerps-a-q//查看所有容器IDdockerstop$(dockerps-a-q)//stop停止所有容器dockerrm$(dockerps-a-q)//remove删除所有容器dockerrestart容 查看详情

docker快速入门——docker简介(代码片段)

Docker快速入门——Docker简介一、Docker简介1、Docker简介Docker是DockerInc公司开源的一项基于UbuntuLXC技术构建的应用容器引擎,源代码托管在GitHub上,完全基于go语言开发并遵守Apache2.0协议开源。Docker可以让开发者打包应用以及依赖包... 查看详情

docker图形界面管理之portainer

介绍  Portainer是一个开源、轻量级Docker管理用户界面,基于DockerAPI,可管理Docker主机或Swarm集群,支持最新版Docker和Swarm模式。官方文档  https://portainer.readthedocs.io/en/stable/deployment.html创建卷 #dockervolumecreateportainer_data创建Port... 查看详情