首页 > 技术文章 > 1.docker概述

xcymn 2021-12-20 18:49 原文

0x01. docker学习路线

  • Docker概述

  • Docker安装

  • Docker命令

    • 镜像命令
    • 容器命令
    • 操作命令
    • ........
  • Docker镜像

  • 容器数据卷

  • DockerFile

  • Docker网络原理

  • IDEA整合Docker

  • Docker Compose

  • Docker Swarm

  • CI\CD Jenkins

0x02. 什么是docker

官网 : https://www.docker.com/

image-20210405083852969

Docker 是一个(基于go语言)开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,也就是说互不影响

0x03. 为什么要有docker

1. 产生的问题

假如说一款产品从开发到上线, 一般情况下都是两套环境。一个开发环境,一个生产环境。往往要将开发的应用部署到生产环境上的时候,如果环境复杂就会出现一个尴尬的事情,就是我在我的电脑上可以运行,运维人员部署到机房就不行。一般环境配置是一件相当麻烦的事情,费事又费力

发布一个项目 ( jar ) + ( redis mysql jdk es ) , 项目能不能都带上环境安装打包?

而且之前应用的环境还不能跨平台, 开发往往是在windows下开发, 但是部署的服务器都是LCX操作系统, 所以不支持跨平台

传统: jar + 运维

现在: 开发打包部署上线, 一套流程一个人就能干

2. 解决方案

Docker给以上问题提供了解决方案!

java --- apk --- 发布(应用商店) --- 张三使用apk --- 安装即可用

java --- jar(环境) --- 打包项目带上环境 ( 镜像/容器 ) --- (Docker仓库: 商店) --- 下载镜像 --- 直接运行

0x04. Docker历史

2010年, 几个搞IT的小伙子, 在美国成立了一家公司dotCloud, 他们主要做一些pass的云计算服务!linux有关的容器技术, 然后他们将自己的技术( 容器化技术 ) 命名为Docker , 但是Docker刚刚诞生的时候 , 实际上并不是一出就火, 也没有引起行业的关注, 但是这个家公司还要经营下去。怎么办呢?

2013年, Docker的老板将Docker开源, 越来越多的人注意到Docker, 觉得这个玩意挺好用的, 然后就火了

开源以后, Docker几乎一个月更新一次, 说明这个社区十分的活跃, 2014年4月9日 , Docker1.0发布

Docker为什么这么火?十分的轻巧!

在容器技术出来之前,我们都是使用虚拟机技术!

虚拟机∶在window中装一个Vmware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!虚拟机也是属于

虚拟化技术,Docker容器技术,也是一种虚拟化技术!

vm : linux centos原生镜像(一个电脑!) 隔离,需要开启多个虚拟机!   十几个G   几分钟

docker : 隔离,镜像(最核心的环境4m + jdk + mysq1)十分的小巧,运行镜像就可以了! 小巧!  几个M KB 
                                                                                                                                                秒级启动!

0x05. Docker的使用

文档官网 : https://docs.docker.com/ 超级详细的

image-20210405084105966

下载安装页面 : https://docs.docker.com/get-docker/

image-20210405084049708

Docker的仓库地址: https://hub.docker.com/ 可以下载,发布docker镜像

0x06. docker能干什么

image-20210405081221216

Docker的思想实际上就来源于logo中的集装箱 , 可以在一条船上累计多个集装箱, 每个之间互不影响

映射到我们计算机上就是使用Docker可以安装多个项目+环境, 每个之间相互不影响, 可以同时存在

Docker的核心思想 : 隔离

之前的虚拟化技术

image-20210405084659130

虚拟技术的缺点:

  • 资源占用多
  • 冗余步骤多
  • 启动很慢

容器化技术

容器化技术不是模拟的一个完整的操作系统

image-20210405085007052

Docker和虚拟机的不同

  • 传统的虚拟机, 虚拟出一套硬件, 运行一个完整的操作系统, 然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内核, 容器是没有自己的内核的, 也没有虚拟我们的硬件, 所以很快, 因为每个容器间是相互隔离的, 每个容器内都有一个属于自己的文件环境, 互不影响

DevOps ( 开发 运维 )

应用更快速的交付和部署

传统 : 一堆帮助文档,安装程序

Docker : 打包镜像发布测试,一键运行

更便捷的升级和扩缩容

使用了Docker之后,我们部署应用就和搭积木一样!

项目打包为一个镜像,扩展服务器A!服务器B

更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的。

更高效的计算资源利用

Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。

推荐阅读