docker最全教程——从理论到实战

lonelyxmas lonelyxmas     2023-02-22     212

关键词:

原文:Docker最全教程——从理论到实战(五)

往期内容链接

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

 

本篇教程持续编写了3个星期左右并且一直在完善、补充具体的细节和实践,预计全部完成需要1到2个月的时间。由于编写的过程中极其费时,并且还需要配合做一些实践(有些实践存在一些坑,而且极其费时费事)。因此目前产出的速度已经跟不上发布的速度了,后续的发布节奏会放慢,请大家多多理解和多多包含。

在这个过程中,我们希望能够多多交流,多多分享。根据目前和大家的交流,笔者针对大家的情况进行了一些修改和补充,希望对大家有所帮助。另外,对于熟悉容器服务的你,也可以参与进来,让我们一起打造这个系列教程,以帮助更多的人。同时,我们也希望得到大家的支持,你们的支持是我们前进的最大动力!

 

运行 Docker 应用程序

如果应用程序只有一个容器,则可通过将其部署到 Docker 主机(虚拟机或物理服务器)来运行该程序。 但如果应用程序包含多项服务,则可使用单个 CLI 命令 (docker-compose up) 或使用 Visual Studio(会在其中使用该命令)将其部署为组合应用程序。

单个应用,就如我们上面的demo :

docker run --name aspnetcore_sample --rm -it -p 8000:80 microsoft/dotnet-samples:aspnetapp

技术分享图片

应用程序启动后,使用浏览器打开http://localhost:8000,即可看到以下界面:

技术分享图片

但是如Magicodes.Admin框架所示,有后台接口、后台前端应用、前端接口、小程序端、APP等等,那么我们可以通过上面配置的docker-compose文件来部署为组合应用程序。执行起来很简单,只需要运行以下命令:

docker-compose up

执行之后,我们可以看到:

技术分享图片

技术分享图片

技术分享图片

Magicodes.Admin提供了本地编译、打包、构建镜像以及运行等整套脚本,在通常情况,我们仅需一键运行脚本即可。

技术分享图片

脚本会自动完成对后台服务和前端应用的构建以及运行。在上一节中,我们说到,Visual Studio对这块已经完成了相关的支持,如果是使用Visual Studio的开发者,仅需按下F5即可运行。

技术分享图片

 

测试

容器正常运行了,我们可以让测试人员来访问我们的服务来进行相关的功能测试和可用性测试。当然,我们也可以编写自定义脚本进行自动化测试,就如前面章节中Docker-compose常用场景中提到的自动化测试环境:

技术分享图片

 

部署或继续开发

开发完成后,我们就需要部署我们的应用,并且继续项目迭代。在部署之前,我们需要推送我们的镜像,比如使用docker push命令,我们可以将镜像推送到docker的官方镜像库,也可以推送到各大云自己的镜像库,然后再通过docker pull命令拉取镜像进行部署。同时,也可以使用一些CI(持续集成)工具来完成自动化的边开发边部署的工作。CI这块,我们接下来会介绍基于Azure DevOps、Tencent hub、Jenkins以及TeamCity等服务或工具来完成CI。在本节,我们继续了解镜像推送的语法:

docker push 镜像名称:镜像版本

在推送之前,我们需要登录到一个镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。相关语法如下所示:

docker login --username 用户名 --password 密码 仓库地址

推送成功之后,如下所示:

技术分享图片

关于部署和托管这块,接下来我们以腾讯云的容器服务进行举例。

为什么是腾讯云,因为他家的创业服务支持活动赞助了我们很多代金券,基本上接近免费,因此从成本考虑,我们首选腾讯云(腾讯云:瞎说什么大实话)。

技术分享图片

部署完成之后,我们可以继续产品或项目的迭代。在整个开发工作流中,我们可以显著的看到,由于Docker的出现,在一定层次上改变了我们的工作和交付流程,并且可以大大的简化CI、CD流程。或者就从构建上来说,配置dockerfile来完成构建,比传统的方式来的迅猛多了。而配置docker-compose.yml一次启动多个服务,简直是分布式架构、微服务架构开发和测试人员的福音。

至此,整个Docker持续开发工作流程就到此结束,在后面的篇幅,我们侧重于从实战的角度来讲解这些内容。

 

使用Kitematic来管理docker容器

这里,我们先插播一个内容。本节,我们先来介绍下Kitematic。

Kitematic是一个开源项目,旨在简化在Mac或Windows PC上使用Docker的过程。Kitematic自动化Docker安装和设置过程,并提供直观的图形用户界面(GUI)来运行Docker容器。

因此,我们推荐大家使用Kitematic工具来查看和管理自己的容器服务,如果尚未安装此工具,大家可以通过以下方式进行安装:

  • 从Docker for Mac或Docker for Windows菜单中选择Kitematic,开始使用Kitematic安装。如下图所示:

 技术分享图片

注意:这里我们不推荐使用Docker Toolbox,原因我们在前面已经说过,Docker Toolbox仅支持老版本的操作系统,属于过时的工具。

安装完成之后,启动后可以看到如下界面:

技术分享图片

也可以点击某个服务来查看详情、相关设置、日志等:

技术分享图片

另外,Kitematic 集成了Docker Hub,允许通过搜索、拉取任何需要的镜像,并在上面部署应用。它同时也能很好地切换到命令行模式。目前,它包括了自动映射端口、可视化更改环境变量、配置卷、流式日志以及其它功能。

注意:如果安装完成后如果无法打开,请将Kitematic安装后的文件迁移到Docker指定目录【C:Program FilesDockerKitematic】。

 

kitematic 是开源的,如果大家有兴趣,可以访问其开源库下载全部源代码进行研究:

https://github.com/docker/kitematic

技术分享图片

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(二)上篇内容链接:https://www.cnblogs.com/codelove/p/10030439.htmlDocker和ASP.NETCoreDocker正在逐渐成为容器行业的事实标准,受到Windows和Linux生态系统领域最重要供应商的支持。(Microsoft是支持Docker的... 查看详情

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(七)在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、... 查看详情

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(三)往期链接:https://www.cnblogs.com/codelove/p/10030439.htmlhttps://www.cnblogs.com/codelove/p/10036608.html  写在前面容器是应用走向云端之后必然的发展趋势,因此笔者非常乐于和大家分享我们这... 查看详情

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(四)往期内容链接https://www.cnblogs.com/codelove/p/10030439.htmlhttps://www.cnblogs.com/codelove/p/10036608.htmlhttps://www.cnblogs.com/codelove/p/10056866.html 在笔者参加腾讯容器服务技术交流会时,我们了解到了... 查看详情

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(八)在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、... 查看详情

docker最全教程——从理论到实战

原文:Docker最全教程——从理论到实战(六)托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。 自建还是托管?在开始之前,我们... 查看详情

docker最全教程——从理论到实战(十七)(代码片段)

...ore推送钉钉消息获取参数设置消息数据格式发送请求设置Dockerfile运行并设置环境变量推送消息 使用.NETCore推送钉钉消息这里我们使用.NETCore来完成相关需求,注意,这里是.NETCore,而不是ASP.NETCore。需求和上面类似,工程相关... 查看详情

docker最全教程——从理论到实战(十八)

...是确实是非常犀利。通过本篇,老司机带你使用VSCode玩转Docker——相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是“工欲善其事必先利其器”,VSCode,你值得拥有!目录⊙使用Visua... 查看详情

docker最全教程——从理论到实战

...出品的DevOps服务。主要提供多存储格式的版本管理,支持DockerImage、Binary、HelmCharts 等多种类型文件。同时提供 DevOps 工作流的编排引擎,并且支持编排 DevOps 工作流,以打造更强的持续集成与持续交付力,加快... 查看详情

docker最全教程——从理论到实战

在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实... 查看详情

docker最全教程——从理论到实战

...,应用很广。本篇主要讲述Ubuntu下使用SSH远程登录并安装Docker,并且提供了Docker安装的两种方式,希望对大家有所帮助。拥抱Linux,大家可以从Ubuntu开始!  Ubuntu下安装Docker首先我们需要准备一个Ubuntu的环境。这里笔者推... 查看详情

docker最全教程——从理论到实战

Docker和持续集成(CI) 什么是持续集成?我们先得了解持续集成的相关概念,才能更好地指导开发和使用Docker来改进我们的工作流。和其他教程不一样,笔者更喜欢将必要的知识点围绕理论、流程(工作流程)、方法、实践... 查看详情

docker最全教程——从理论到实战

使用Azure DevOps来完成CIAzureDevOps,以前叫VSTS,现在被微软改名部正式更名为Azure DevOps,说明微软云为先之心仍然蠢蠢欲动。不过和VSTS一样,微软都提供了免费的使用额度,对于小团队和个人开发者来说,完全是足够了。&n... 查看详情

docker最全教程——从理论到实战

托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。 自建还是托管?在开始之前,我们先来讨论一个问题——是自建容器服务... 查看详情

docker最全教程——从理论到实战(十四)

本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置。教程中也分享了一个简单的CI、CD流程,仅作探讨。不过由于篇幅有限,完整的DevOps,我们后续独立探讨。  为了降低容器的使用门槛以及... 查看详情

docker最全教程——从理论到实战(十三)

...,支持Linux的IoT设备越来越多,比如本文中的树莓派。而Docker,在物联网这块,也提供了一个优秀的解决方案。一方面,真正做到了一次编译,到处运行(包括各种loT设备),而且还很轻量,另一方面,镜像的差异化更新可以减... 查看详情

docker最全教程——从理论到实战

前言容器教程的路还很长,笔者尽量根据实践来不断地完善。由于在编写的过程中还会有完善和补充,后续可能会以番外来补充。接下来会分享TeamCity、树莓派等内容,节奏可能会有点跳脱。另外,长沙.NET社区已经初步成立,有... 查看详情

docker最全教程——从理论到实战(十五)(代码片段)

...   目录 Java官方镜像各语言镜像比较使用Docker搭建Java开发环境编写Hello world!编写Dockerfile构建镜像并执行 Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继... 查看详情