都在聊云开发了,你还没听过Docker?

简介: Docker 的概念想必大家已经了解了,最直观的好处就是可以不安装虚拟机,不需要安装软件,不需要配置环境的情况下,就将我们想用的软件跑起来。

那你可能会问了,Docker 凭什么这么方便,它具体又是怎么玩的呢?

别急,要想了解 Docker 的整个生命周期,那了解它的三大核心概念是跑不了的。

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

诶,你是否有种似曾相识的感觉,凭借着多年来敏锐的技术嗅觉,这尼玛好像和 git 有点像呀。每天将写完的代码就是推送到远程仓库了,而这个镜像感觉也就是我们的项目。

20.jpg

下面咱继续往下整,今天绝对让你搞明白 Docker 这三大核心概念。


Docker镜像


看到镜像,你应该能联想到我们平时安装虚拟机时下载的镜像文件,没错!这两个是类似的。Docker 镜像你可以理解为它是专门为 Docker 引擎设计的模板,里面包含了文件系统。

你可能接触过,在工作中将你们开发的 web 应用打包成一个镜像,然后在测试环境、生产环境部署启动,那么这个镜像中就只包含了你们开发的 Web 应用和所需要的运行时环境。

又比如一个镜像可以只包含一个 ubuntu 操作系统环境,那就可以把它称为一个 ubuntu 镜像。也可以只安装了 Tomcat 应用程序,那么就称它是一个 Tomcat 镜像。所以镜像是可以包含任何用户需要的其它软件。

这个镜像呀是创建 Docker 容器的基础。而且还能通过版本管理像 Git 一样来获取各个版本的镜像。同时 Docker 也提供了一套十分简单的机制来创建和更新现有的镜像,我们也可以从网上下载别人做好的应用镜像,比如 kafka、rocketmq、redis、mysql等等应用程序的镜像,直接在本地就可以使用,不需要安装、部署、配置。


Docker容器


Docker 容器类似于一个轻量的沙箱,将我们需要的应用程序放在里面执行。之所以说它像沙箱,是因为 Docker 利用容器来运行和隔离应用,这些容器都是相互隔离,互不可见的。

想必你也经常听运维同学说,xx 应用容器挂了,重启下 xx 容器 。这里容器就相当于一个镜像实例,镜像只是一个模板,写在文件系统中是死的,而容器就是利用这个模板启动的一个实例,容器占用了一个进程,监听在某一个端口。

你也可以将容器看做是一个简易版的 Linux 系统环境(包括进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的盒子。

镜像本身是只读的。容器从镜像启动的时候,Docker 会在镜像的最上层创建一个可写层,镜像本省是保持不变的。


Docker仓库


说实话这个 Docker 还真和 git 是有点像的,你看着名字都叫的雷同。本质也确实一样,Docker 仓库就类似于代码仓库,是 Docker 集中存放镜像文件的地方。

这块还有一个概念需要明确给大家说下,就是这个 注册服务器(Registry)。很多初学者很容器将注册服务器和 Docker 仓库混为一谈。实际上它俩不是一个东西,注册服务器是存放仓库的地方,也就是说注册服务器上存放着很多个仓库。

每个仓库集中存放某一类镜像,一般包含多个镜像文件,通过标签(tag)来进行区分。就比如存放 ubuntu 操作系统镜像的仓库中可能包含 14.04、16.04等不同版本的镜像,以方便我们按需使用。

上面注册服务器、仓库、镜像的关系我们用一张图来表示下,加深下你的理解和记忆。

21.jpg

Docker 仓库也根据所存储的镜像是否公开分享分为 公开仓库私有仓库

目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供开发者下载。我们国内的公开仓库有 Docker Pool 等,可以提供稳定的国内访问。

当然,在公司里使用肯定是不希望镜像被公网访问的,因此 Docker 也支持在本地网络部署只有内部可以访问的私有仓库。

用户可以通过使用 push 命令将镜像上传,在其它机器上使用时,只需要将镜像从远程仓库 pull 下来就可以了,是不是非常方便呢?


小结


看到这里你应该对 Docker 的三大核心概念:镜像、容器、仓库 已经有了自己的理解,这三者正是构建高效工作流程的关键。毫无疑问,也正是 Docker 目前越来越流行,从众多虚拟化方案中脱颖而出的关键。



相关文章
|
8月前
|
资源调度 前端开发 Shell
[docker] DevContainer高效开发(第二篇):前端开发体验
上面的配置只是最基本的配置,大部分情况我们是需要自定义配置,让容器更符合我们的需求。自定义配置就需要用到 Dockerfile,这个文件是 docker 的配置文件,可以在里面安装软件,配置环境等等。Dockerfile 的语法可以参考 官方文档。然后根据自己的需求编写 Dockerfile# 设置变量,由 .devcontainer.json 中的 args 传入# 指定 node 版本# 设置编码# 设置工作目录# 挂载 volume# 设置 bash 为默认 shell。
227 0
|
2月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
3月前
|
存储 持续交付 开发者
掌握Docker容器化:提升开发效率与应用部署
【10月更文挑战第4天】在现代软件开发中,Docker容器化技术因其轻量级、可移植和快速部署的特点,成为提升开发效率和简化部署流程的关键工具。本文介绍了Docker的基本概念、核心组件及其优势,并探讨了如何在开发环境中搭建、微服务架构及CI/CD流程中有效利用Docker,助力软件开发更加高效便捷。
|
4月前
|
持续交付 开发者 Docker
掌握 Docker:容器化技术在现代开发中的应用
Docker 是一个开源容器化平台,使开发者能够将应用程序及其依赖项封装在轻量级容器中,确保跨平台的一致性。本文介绍了 Docker 的基本概念、核心组件及优势,并展示了其在快速部署、一致性、可移植性和微服务架构中的应用。通过示例说明了 Docker 在本地开发环境搭建、服务依赖管理和 CI/CD 流程中的作用,以及多阶段构建、资源限制和网络模式等高级特性。掌握 Docker 可大幅提升开发效率和应用管理能力。
|
5月前
|
容器 C# Docker
WPF与容器技术的碰撞:手把手教你Docker化WPF应用,实现跨环境一致性的开发与部署
【8月更文挑战第31天】容器技术简化了软件开发、测试和部署流程,尤其对Windows Presentation Foundation(WPF)应用程序而言,利用Docker能显著提升其可移植性和可维护性。本文通过具体示例代码,详细介绍了如何将WPF应用Docker化的过程,包括创建Dockerfile及构建和运行Docker镜像的步骤。借助容器技术,WPF应用能在任何支持Docker的环境下一致运行,极大地提升了开发效率和部署灵活性。
211 1
|
5月前
|
机器学习/深度学习 Kubernetes Docker
机器学习开发的灵药:Docker容器
机器学习开发的灵药:Docker容器
46 2
|
5月前
|
jenkins 持续交付 开发工具
自动化开发之旅:Docker携手Jenkins,与Git和Tomcat共舞持续集成
【8月更文挑战第13天】在软件开发中,持续集成(CI)通过自动化构建、测试与部署提升效率与稳定性。Docker、Jenkins、Git和Tomcat构成CI的黄金组合:`git push`触发Jenkins作业,利用Docker确保环境一致性,最终将应用部署至Tomcat。首先配置Git Webhooks以触发Jenkins;接着在Jenkins中创建作业并使用Docker插件模拟真实环境;通过Maven构建项目;最后部署至Tomcat。这套流程减少人为错误,提高开发效率,展示了技术的力量与流程的革新。
103 0
|
5月前
|
人工智能 Kubernetes Cloud Native
AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效
AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效
75 0
|
6月前
|
Ubuntu Linux Docker
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决

热门文章

最新文章