Docker详细教程,一篇文章就够了

这篇具有很好参考价值的文章主要介绍了Docker详细教程,一篇文章就够了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Docker的诞生:容器技术VS虚拟机

假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始从头到尾搭建这套环境,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。

测试同学测完后终于可以上线了,这时运维同学又要重新从头到尾搭建这套环境,费了九牛二虎之力搭建好环境开始上线,糟糕,上线系统就崩溃了,这时心理素质好的程序员又可以施展演技了,“明明在人家的环境上可以运行的”。

从整个过程可以看到,不但我们重复搭建了三套环境还要迫使程序员转行演员浪费表演才华,典型的浪费时间和效率,聪明的程序员是永远不会满足现状的,因此又到了程序员改变世界的时候了,容器技术应运而生。

有的同学可能会说:“等等,先别改变世界,我们有虚拟机啊,VMware好用的飞起,先搭好一套虚拟机环境然后给测试和运维clone出来不就可以了吗?”

在没有容器技术之前,这确实是一个好办法,只不过这个办法还没有那么好。

先科普一下,现在云计算其底层的基石就是虚拟机技术,云计算厂商买回来一堆硬件搭建好数据中心后使用虚拟机技术就可以将硬件资源进行切分了,比如可以切分出100台虚拟机,这样就可以卖给很多用户了。

你可能会想这个办法为什么不好呢?

我们知道和一个单纯的应用程序相比,操作系统是一个很重而且很笨的程序,简称笨重,有多笨重呢?

我们知道操作系统运行起来是需要占用很多资源的,大家对此肯定深有体会,刚装好的系统还什么都没有部署,单纯的操作系统其磁盘占用至少几十G起步,内存要几个G起步。

假设我有一台机器,16G内存,需要部署三个应用,那么使用虚拟机技术可以这样划分:
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
在这台机器上开启三个虚拟机,每个虚拟机上部署一个应用,其中VM1占用2G内存,VM2占用1G内存,VM3占用了4G内存。

我们可以看到虚拟本身就占据了总共7G内存,因此我们没有办法划分出更过虚拟机从而部署更多的应用程序,可是我们部署的是应用程序,要用的也是应用程序而不是操作系统。

如果有一种技术可以让我们避免把内存浪费在“无用”的操作系统上岂不是太香?这是问题一,主要原因在于操作系统太重了。

还有另一个问题,那就是启动时间问题,我们知道操作系统重启是非常慢的,因为操作系统要从头到尾把该检测的都检测了该加载的都加载上,这个过程非常缓慢,动辄数分钟,因此操作系统还是太笨了。

那么有没有一种技术可以让我们获得虚拟机的好处又能克服这些缺点从而一举实现鱼和熊掌的兼得呢?

答案是肯定的,这就是容器技术。

二、Docker的Windows10安装

但是我的Windows11安装不了,好烦恼。
Docker各版本安装教程

三、Docker架构

1. 注册器(Registry)

  • 一个 Docker Registry 中可以包含多个仓库(Repository);

2. 仓库(Repository)

  • 一个仓库会包含同一个软件不同版本的镜像,我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

3. 镜像(Image)

  • 回忆一下虚拟机VM安装的时候是不是要导入centos镜像,这个centos镜像就是Image。其他的应用也有各自的镜像,例如MySQL等等。Image需要从Repository拉取到Docker容器中才能运行。

4. 容器(Container)

  • 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

5. Dockerfile

  • Dockerfile 是一个用来构建镜像Image的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

四、Docker的Dockerfile构建Image

这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。

1. 创建Dockerfile文件
/docker目录下,新建一个Dockerfile 文件,并在文件内添加以下内容:
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
2. 详述内容的作用
FROM 定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN 用于执行后面跟着的命令行命令(等同于,在终端操作的 shell 命令)

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。

3. 开始构建镜像
在 Dockerfile 文件的存放目录/docker下,执行docker build -t nginx:v3 .命令。
nginx:v3:镜像名称:镜像标签
. :代表本次执行的上下文路径
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维

五、组件之间的执行流程

省流:Client端输入每一条docker命令,都有server端Docker daemon来执行
docker build
例如 docker build -t nginx:v3 .
当我们写完dockerfile交给docker“编译”时使用这个命令,那么client在接收到请求后转发给docker daemon,接着docker daemon根据dockerfile创建出“可执行程序”image。
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
docker pull
例如 docker pull ubuntu
你可以在Repository下载到别人编写好的image,这样你就不用自己编写dockerfile了。
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
docker run
例如 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Docker有了image后就可以运行程序了,接下来使用命令docker run,docker daemon接收到该命令后找到具体的image,然后加载到内存开始执行,image执行起来就是所谓的container。
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维

六、Docker 命令大全

参考文章:菜鸟教程学习Docker

七、Docker安装MySQL

用 docker search mysql 命令来查看可用版本
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
拉取 MySQL 镜像
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
查看是否安装
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
安装完成后,我们可以使用以下命令来运行 mysql 容器
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
运行mysql容器之后查看
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维
那么就可以通过交互式来使用MySQL了
docker使用教程,Docker,Java,Java面试题,docker,云计算,运维文章来源地址https://www.toymoban.com/news/detail-718048.html

到了这里,关于Docker详细教程,一篇文章就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ看这一篇文章就够了

    第1节 MQ是什么 第2节 MQ 的主要特点 第3节 RabbitMQ介绍 官网地址 第1节 安装步骤   第2节 用户管理 第1节 RabbitMQ的整体架构图 架构   Producer Exchange Queue Customer 一个消息(message)从开始到结束的过程 第1节 原理图 HelloWorld   P: producer 生产者 C: consumer 消费者 中间红色的部分是一个队

    2024年02月08日
    浏览(55)
  • @Reference注解,看这一篇文章就够了。

            @Reference是Dubbo框架中的注解,用于注入远程服务的引用。         在Dubbo框架中,服务提供者和服务消费者是通过RPC方式进行通信的。服务消费者需要通过Dubbo框架来获取服务提供者的实例,通过这个实例来调用服务提供者的方法。当服务消费者在代码中需要调

    2023年04月25日
    浏览(98)
  • 调教ChatGpt看这一篇文章就够了

    ChatGPT是OpenAI发布的基于GPT-3.5架构的大型语言模型,可用于各种自然语言处理任务,包括文本生成、对话系统、文本分类等。本文将为读者提供一份ChatGPT调教教程,帮助读者了解如何训练自己的ChatGPT模型,以便更好地满足自己的需求。 1. 安装必要的软件和工具 在开始之前,

    2024年02月01日
    浏览(44)
  • 搞懂TVS管,有这篇文章就够了

    摘要:本文主要介绍TVS的工作原理、关键参数和选型。 TVS(Transient Voltage Suppressors,瞬态电压抑制器)又称雪崩击穿二极管,是一种高效电路保护器件,主要是保护电路不受瞬态高压尖峰脉冲(静电或雷击浪涌)的冲击。 TVS是采用半导体工艺制成的单个PN结或多个PN结集成的器件,

    2023年04月08日
    浏览(54)
  • MapReduce的工作原理这篇文章就够了

    MapReduce是一种分布式计算模型,用于处理大规模数据集。它将大规模数据集分成小的数据块,然后在分布式计算集群上并行处理这些数据块。MapReduce模型由Google公司提出,并在Hadoop等开源框架中得到了广泛应用。 MapReduce模型包含两个阶段:Map阶段和Reduce阶段。 Map阶段 在Map阶

    2024年02月06日
    浏览(43)
  • RabbitMQ入门到实战一篇文章就够了

    课程内容 认识RabbitMQ 安装RabbitMQ SpringBoot使用RabbitMQ 其他特性 1.RabbitMQ认识 1.1.RabbitMQ是什么 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程

    2024年03月09日
    浏览(50)
  • 学java注解,看这一篇文章就够了

    Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰 包、类、接口、字段、方法参数、局部变量 等。 常见的注解如:@Override、@Deprecated和@SuppressWarnings 2.1 使用步

    2024年02月06日
    浏览(47)
  • DevOps是什么?只看这篇文章就够了!

    作者:沈洲 原文链接:DevOps是什么?只看这篇文章就够了!-云社区-华为云 作为一个热门的概念,DevOps这个名词在程序员社区里频频出现,备受技术大佬们的追捧。甚至网络上有了“南无DevOps”的戏言(南无在梵语的意思是“皈依”),也侧面反映了DevOps的风靡。 然而,一

    2024年02月21日
    浏览(49)
  • tmux 使用看这一篇文章就够了

    tmux是一个终端复用工具,允许用户在一个终端会话中同时管理多个终端窗口,提高了终端使用效率,尤其在服务器上进行远程管理时更加实用。在tmux中,可以创建多个终端窗口和窗格,并在这些窗口和窗格之间自由切换,还可以在后台运行会话,即使在终端断开连接后也可

    2024年02月02日
    浏览(58)
  • JavaWeb入门看这一篇文章就够了

    第1节 什么是web 第2节 什么是JavaWeb   第1节 JavaWeb服务器是什么 第2节 常见的JavaWeb服务器介绍 Tomcat当前最流行的web容器(免费) jetty(免费) Weblogic(收费) 第3节 Tomcat服务器 tomcat服务器介绍 tomcat的目录结构   tomcat的常用命令 tomcat的用户管理 tomcat的服务配置管理 在一台服务器上配

    2024年02月03日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包