2

#夏日挑战赛#容器改变世界-开源基础软件社区-51CTO.COM

 1 year ago
source link: https://ost.51cto.com/posts/14486
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【本文正在参加星光计划计划3.0–夏日挑战赛】
活动链接:https://ost.51cto.com/posts/13641

1、首先我们了解什么是容器。

容器并不仅仅是docker,docker仅仅是遵循容器标准的一种实现,只要遵循了容器标准,都可以 叫做容器技术。 比如说最流行的docker,或者红帽的podman都可以叫做容器技术。docker仅仅是最开始实现容器技术的一个软件。 docker不等于容器,docker仅仅是容器的一个子集。容器不是虚拟化。

2、容器发展历史

2013 年 3 月 Docker 创始人 Solomon Hykes 在 PyCon 大会上的演讲中首次公开介绍了 Docker 这一产 品。在2013 年 PyCon 大会之后,Docker 的创新式镜像格式以及容器运行时迅速成为社区、客户和更广泛行业的实 际标准和基石。Docker 的强大之处在于它通过可移植的形式和易于使用的工具在应用程序和基础设施之间创造了独立 性。其结果是,Docker将容器技术大众化,并解决了困扰数百万开发人员的“matrix from hell”问题,使容器技术 成为主流。


2013年3月20日,dotCloud发布了 Docker 的首个版本,并将Docker源码进行开源。 https://github.com/docker/ 版本是0.1.0


2013年9月 红帽公司成为Docker的主要合作伙伴,利用Docker来驱动他的OpenShift云业务。随后,谷歌、亚马逊 以及DigitalOcean也迅速的在其云服务平台提供了Docker的支持。主流云厂商的加入,加速Docker的发展进度。

3、docker容器的由来。

2010年在美国的旧金山成立了一家名字叫做dotcloud的公司,这家公司主要提供基于PaaS(Platform As A Service)的云计算服务。

#夏日挑战赛#容器改变世界-开源基础软件社区

Docker最初是dotCloud公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新。

在当时PaaS激烈竞争环境下,dotCloud为了苟且偷生,不得已决定开源核心引擎(Apache2.0协议)。 开源时间为2013年3月份。 其公开的核心引擎名字就叫做Docker。

#夏日挑战赛#容器改变世界-开源基础软件社区

4、docker解决了什么问题

①麻烦的开发环境,
②麻烦 的测试环境,
③麻烦的集成环境

5、Docker hub成立 Kubernetes诞生

2014年6月的DockerCon大会上Docker正式发布了Docker 1.0 版本。这也意味着Docker的稳定性和可靠性已经基 本满足了生产环境的运行需求。会议上同时发布Docker Image的镜像仓库Docker Hub(http://hub.docker.com/),并指出已经有超过14,000个Docker化的应用存储在他们的publc registry中
2015 年,Docker 发布了 runC工具,runc是根据OCI标准生成的一个cli工具,一个轻量级的跨平台的容器运行时 命令行小工具,可以直接利用 libcontainer 运行容器,而无需通过 docker engine。runC 的目标是使标准容 器在任何地方都可用。

6、Docker版本命名更新,Docker解体

从2013年3月开始推出0.1.0版本,到17年2月1.13的版本都采用x.x的形式。从 2017 年第一季度开始,Docker 版本号遵循 YY.MM-xx 格式。
2017 年是容器成为主流技术的一年,这就是为什么 Docker 在 Linux 之外支持众多平台的原因(Docker for Mac,Docker for Windows,Docker for AWS,GCP 等)。
2017 年于 Austin 举办的 DockerCon 上开源Docker项目正式命名为 Moby 项目。由于这次改名,GitHub 上 的 docker/docker 库也被转移到了 moby/moby,并且拥有了项目自己的 Logo,如下图所示。


于此同时,将Docker本身拆分为Docker-CE免费版和Docker-EE商业版。
Docker-CE目前是docker公司维护的开源项目,是一个基于Moby项目的免费的容器产品。
Docker-EE目前是docker公司维护的闭源项目,是docker公司的商业产品。
至此,容器天下三分。其中Moby由社区维护,Docker-CE由Docker公司维护,Docker-EE是Docker公司闭源的商业 产品。

7、Docker企业版被收购

2019年容器市场基本趋于稳定,一切都向着优化改进方向发展。Docker公司是底层容器引擎及运行时的。容器的编排 进过几轮的激烈竞争,基本是GOOGLE的Kubernetes一家独大。

#夏日挑战赛#容器改变世界-开源基础软件社区

8、集装箱概念和Docker log寓意

集装箱,英文名container。是能装载包装或无包装货进行运输,并便于用机械设备进行装卸搬运的一种组成工具。
集装箱最大的成功在于其产品的标准化以及由此建立的一整套运输体系。能够让一个载重几十吨的庞然大物实现标准 化,并且以此为基础逐步实现全球范围内的船舶、港口、航线、公路、中转站、桥梁、隧道、多式联运相配套的物流系 统,这的确堪称人类有史以来创造的伟大奇迹之一。
Docker是一个"集装箱"平台,是一个软件的"集装箱"平台。

9、Docker组件介绍

#夏日挑战赛#容器改变世界-开源基础软件社区

10、docker的安装-CentOS8

①安装yum-utils工具

[root@localhost ~]# yum install -y yum-utils

②添加docker的软件仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

③安装docker引擎

[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io

④启动docker并设置下次开启启动

[root@localhost ~]# systemctl enable docker --now

⑤docker的hello world测试

[root@localhost ~]# docker run hello-world

11、 Docker镜像

在安装完docker-ce之后,默认相当于装好了docker-cli和docker-ce进程,启动docker-ce进程就算是运行起了 docker,但是此时我们并没有可以直接使用的docker私有仓库。镜像其实是装好了特定应用的一个东西,镜像是静态 的,容器是动态的。镜像运行起来就是容器。这个概念类似于程序和进程,程序是静态的,进程是动态的,进程就是运 行的程序。镜像只会占用磁盘空间,但是容器会占用磁盘空间的同时也会占用cpu和内存。
镜像一般是存放在镜像仓库中的,然后通过docker-cli提供的命令从仓库拉取镜像,然后将镜像保存在本地,以便后 续使用。值得一提的是镜像仓库中的“镜像”都是压缩过的,压缩的目的在于减少镜像的大小,这样在进行网络传输的时 候(镜像拉取)可以尽量的减少带宽的压力。然后docker的客户端拉取了镜像之后,会对镜像进行解压。

12、配置Dockerhub的镜像加速器

这样会使拉取镜像速度很快。
①使用阿里云提供的镜像加速方法,首先访问阿里云。直接在浏览器上访问aliyun.com,然后有账号的就直接用支付宝 扫描登陆就可以了。如果没有账号就自己注册一个。 登陆成功之后,需要点击用户的控制台。
②点击完后控制台之后搜索容器镜像
③在容器镜像服务点进去之后,点击左侧的镜像加速器
④点击完镜像加速器之后,就会告诉你如何配置不同操作系统的镜像加速方法
⑤默认的配置镜像加速器的方法是ubuntu的,我们选择到Centos的

13、配置镜像加速器之后拉取镜像

[root@localhost ~]# docker pull centos
[root@localhost ~]# docker images

#下载镜像过程

[root@localhost ~]# docker pull centos 
Using default tag: latest 
latest: Pulling from library/centos 7a0437f04f83: Downloading [==========================================> ]
 64.57MB/75.18MB 

#解压镜像过程

 [root@localhost ~]# docker pull centos 
Using default tag: latest 
latest: Pulling from library/centos 7a0437f04f83: Extracting [=================================> ]

14、Docker容器介绍

镜像是静态的,将镜像运行起来就是容器,所以说容器是动态的。镜像只会占用磁盘,但是容器会占用cpu,内存和网络。
镜像的英文:image
容器的英文:container
注意:你不能将容器理解成一个操作系统,因为容器本身并不包含内核,没有内核的东西自然不能称为操作系统。

15、运行容器

① 一次性运行容器

[root@localhost ~]# docker run 
[root@localhost ~]# docker container run

②交互式运行容器

[root@localhost ~]# docker run -i -t centos

③以后台的形式运行容器

[root@localhost ~]# docker run -d centos
[root@localhost ~]# docker ps

16、查看容器信息

①.查看容器log

[root@localhost ~]# docker run -dt --name web nginx

②查看容器进程信息
[root@localhost ~]# docker exec -it centos-test bash
③查看容器内部细节

[root@localhost ~]# docker inspect web

17、Docker容器网络

当你使用容器时(以docker为例),容器的通信就变得至关重要。要解决容器的通信问题,必须具备一定的网络基 础。Docker有4种网络模式,只有两种是常用的。
这4种网络模式分别为bridge,host,none,container。
常用 的是host模式和bridge模式。

18、Docker容器的持久化存储

[root@localhost ~]# docker run -dt --name web1 --network host httpd
[root@localhost ~]# systemctl enable docker --now

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK