Docker——简介 & 安装 & 底层原理

简介: Docker——简介 & 安装 & 底层原理

1.Docker是什么?


Docker是基于Go语言实现的云开源项目。


Docker的主要目标是“BuildShip and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到一次封装,到处运行


Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。


一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。

Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。

问题:环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时在我的机器上可正常工作的问题。


Docker镜像的设计,使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

一句话:Docker就是解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。(一次构建、随处运行)

2.Docker的安装


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

Docker Hub官网:https://hub.docker.com/

CentOS Docker 安装,Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit)
或更高的版本

前提条件,目前,CentOS 仅发行版本中的内核支持 Docker
Docker
运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker
运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

下面的两个命令分别是查看Linux系统的内核信息、CentOS的版本信息。


下面先来说一下Docker中的三要素:

·       容器:Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。

        Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。
       
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
       
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
       
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

·       镜像:Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

·       仓库:Docker 仓库(Repository)是集中存放镜像文件的场所。

        仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的   标签(tag)。

        仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
         
最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。


Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

*  image
文件生成的容器实例,本身也是一个文件,称为镜像文件。

*  
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器

*  
至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。

可以理解为:镜像就是Java中的类,容器就是类中的对象。镜像可以创建多个容器运行实例(有些容器中包含tomcat、有些容器中包含mysqlnginx等),也就是类中可以new多个对象(new无参的、new有参的)。


docker安装步骤,详情都可以参考docker文档:https://docs.docker.com/engine/install/centos/#install-from-a-package

这里我就不再说了。。。安装完成之后可以启动docker


上述信息,说明docker已经安装成功,当然也可以使用 ps -ef | grep docker 查看docker的进程信息。

下面进行一个简单的测试,run一下hello world这个镜像。


run命令的运行原理如下图:👇👇👇


然后再说一下,关于docker中的阿里云镜像加速的配置。首先需要注册阿里云的账户(可复用淘宝账户),注册登录之后,从下面的链接中获取镜像加速器的地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

下面这张图就是参考阿里云官方给出的步骤完成的。


重启加载加速器服务

systemctl daemon-reload

重启docker服务

systemctl restart docker


3.Docker底层原理简述


Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是我们前面说到的集装箱。


为什么docker运行比VM快?

(1) docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会有明显优势。

(2) docker
利用的是宿主机的内核,而不需要CentOS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载CentOS,新建过程是分钟级别的,因为虚拟机需要加载物理机上的很多硬件资源等。而docker由于直接利用宿主机的操作系统,省略了那些加载很多硬件过程,没有像虚拟机上的那些硬件负担,所以说新建一个docker容器只需要几秒钟。

4.趣谈Docker的logo



从图上看,这显然是一只鲸,背上驮着一推集装箱,在大海里游泳。可以理解为:

·       蓝色的大海:就是docker依赖的宿主机OS

·       鲸:就是docker,这只鲸需要有大海才可以遨游,也就是说docker需要依赖宿主机OS

·       集装箱:一个个容器实例,来自镜像模板。

相关文章
|
4天前
|
NoSQL Redis Docker
使用docker安装redis
该文档介绍了如何使用Docker快速搭建Redis数据库,以便于Spring Boot学习。主要内容包括获取Redis镜像、创建容器、配置持久化存储目录和修改默认配置文件,以及检查和访问Redis容器服务。此外,还提到若需外部访问,需开启宿主机防火墙相应端口。注意,本教程不深入讲解Docker,若想深入学习Docker,建议另寻专门课程。
|
4天前
|
Linux Docker 容器
centos7安装docker图文详解
该文档提供了在CentOS上安装Docker的步骤:检查系统内核版本(需大于3.10),更新yum,卸载旧版Docker,安装yum-utils和依赖包,设置Docker仓库,列出并选择Docker版本,安装Docker,最后启动并设置Docker开机启动,通过`docker version`验证安装是否成功。
|
4天前
|
NoSQL 网络协议 MongoDB
docker安装mongodb(单点)图文详解
该文档提供了一个快速搭建MongoDB环境的指南,适用于开发和学习,但不适用于生产。主要步骤包括:1) 使用Docker创建数据卷`mongo_data_db`和`mongo_data_configdb`。2) 拉取`mongo`镜像并运行名为`mymongo`的容器,映射端口并挂载数据卷。3) 初始化管理员账号,创建具有`root`权限的用户`admin`,密码为`adminpwd`。4) 防火墙开放端口27017。最后,提到了使用第三方客户端进行连接。
|
5天前
|
Shell 数据安全/隐私保护 Docker
如何使用Docker安装FTP服务器?
【4月更文挑战第25天】
10 0
如何使用Docker安装FTP服务器?
|
5天前
|
数据安全/隐私保护 Docker Sentinel
docker安装Sentinel
docker安装Sentinel
|
5天前
|
存储 关系型数据库 MySQL
docker安装mysql8忽略大小写
docker安装mysql8忽略大小写
|
5天前
|
关系型数据库 MySQL 开发工具
Docker安装mysql8.0
Docker安装mysql8.0
|
5天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
22 2
|
7天前
|
存储 Kubernetes Linux
K8S必备知识--docker的介绍以及安装
K8S必备知识--docker的介绍以及安装
|
8天前
|
存储 Linux 持续交付
【docker】CentOS 7上安装Docker的详细过程
【docker】CentOS 7上安装Docker的详细过程