Docker(1)-初识Docker

前言

本人文章均引用或者复制:

公众号:

QQ群:806951874

Docker的前世今生

传统项目开发部署的流程是怎样的?

传统项目开发部署的基本流程

这里只简单描述一下,项目发布的基本流程

  • 本地开发+测试,没有问题的话,编译打包发布到测试环境
  • 在测试环境中进行测试,测试完成后,发布到生产环境
  • 在生产环境中进行最后的测试,如果没有问题,那么一切就OK了

存在什么问题?

  • 存在问题:不同机器上的软件环境不一致。(比较核心的问题)
  • 软件环境的配置繁多、命令记不清楚。
  • 重复性搭建软件环境、效率低下。

对照传统虚拟机总结

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

Docker是干什么用的?

Docker解决的问题

由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。
Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。

与虚拟机的比较

虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。

so

==Docker不是虚拟机==

对Docker的感受:

比如公司买了一台新服务器,系统是centos,你要想把项目部署到服务器上,而且项目中使用到了mysql、redis、activemq、zookeeper等技术,要想项目能在服务器上正常运行,必须在新的服务器上搭建好mysql、redis、activemq、zookeeper服务环境。这样的话,在环境搭建和配置上就要花费太多的时间了(因为需要配置很多的配置文件、需要手动启动服务等)。

又或者每次重装一次系统或者换一个机器,你就要把环境重装一次,东西越多花费的时间越多、很麻烦、浪费时间和精力。

而使用Docker的话,你只需要一条命令,你就可以在你的centos系统上运行你需要的软件,比如mysql、tomcat、jdk、redis等。

举个栗子

【示例1】:Docker上安装mysql

  • 你需要MySQL服务,那么在docker中通过简单的命令就可以安装一个MySQL数据库服务:
1
docker pull mysql
  • 启动mysql命令
1
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

很简单吧,一个mysql服务就启动完成了,就可以正常使用了。可以通过mysql客户端(Navicat、DataGrip等)连接这个mysql数据库。

【示例2】:Docker上安装jdk

  • 你需要JDK环境,那么在Docker中通过简单的命令安装一个JDK的镜像, 然后通过一条命令启动这个容器就行了,容器会自动给你安装配置好JDK环境。
1
docker pull java

就这么简单的一条命令,JDK就安装好了。你可以在Docker容器的命令行中通过java -version来检测jdk是否安装成功。

镜像、容器

对于新手而言,或许有点不明白镜像和容器分别是个什么东东,还是有点不明白。

你可以这样感官的理解:

镜像 —— 相当于ISO操作系统的安装包,ISO镜像的内容是固定的,不会发生改变,可以重复使用。

容器 —— 类似于使用 ISO镜像安装的新的操作系统,可以使用一个相同的ISO镜像,安装很多操作系统。

Docker占用的资源很小。启动一个容器一般都是秒级的。

Docker镜像、容器、仓库的介绍

Docker镜像

通俗的理解镜像

Docker的镜像是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。

Docker的镜像相当于ISO操作系统的安装包,ISO镜像的内容是固定的,不会发生改变,可以重复使用。

如果上面的形容还无法让你理解Docker镜像,那我再举一个例子:

从事Java开发的人都知道类和实例的关系。直观的感觉,类就像是一个模板,根据这个类模板,可以生成很多个具体的对象实例。

则,Docker镜像就相当于Java的类,而通过Docker镜像生成出来的东西,我们就叫他它“容器”

通过上面的形容,应该可以感觉的到镜像和容器之间的关系了吧。

Docker容器

通俗的理解容器

在上一节已经介绍了镜像与容器的关系。

这里就直接copy文档中的一句话,来简单形容一下容器:

Docker镜像就相当于Java的类,而通过Docker镜像生成出来的东西,我们就叫他它“容器”

Docker仓库

通俗的理解Docker仓库

仓库支持的操作类似git,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

类似于,将某项目模块打成jar包,然后上传到私有或者公有的maven仓库,然后在其他的所有支持maven环境的机器上,都可以拉取这个jar进行使用。


Docker(1)-初识Docker
https://github.com/yangxiangnanwill/yangxiangnanwill.github.io/2024/01/03/好好码代码吖/Docker/Docker(1)-初识Docker/
作者
will
发布于
2024年1月3日
许可协议