简单纪要:docker入门(一),docker安装!

一 docker 是什么、为什么出现了docker?

Docker是基于GO开发的云开源项目,是一个用于开发,交付和运行应用程序的开放平台。Docker能使应用程序与基础架构分离,从而实现快速交付软件。借助Docker,可以以管理应用程序相同的方式来管理基础架构。通过利用Docker快速交付,测试和部署代码的方法,可以显着减少你从编写代码到在生产环境中运行这些代码之间的时差;

一句话:docker是解决了运行环境 和 配置问题的软件容器,方便做持续集成,有利于整体发布的容器虚拟技术;

用我们自己的话说就是,我们的开发代码在我们本地的机器上运行没有问题,但是发布到测试环境或者线上环境就可能因为 jdk版本,或者环境不同,或者运行软件的配置不同,导致相同的代码,在本地可以运行正常,但是移植到其他人的机器上就出现各种问题,最后花费很长的时间排查明确是环境不同导致的,于是,在没有docker之前,就需要我们的开发环境与测试环境或线上环境的各种配置都相同,才能减少因环境不同造成的问题,那么有了docker以后,我们可以将代码、环境、配置、版本等等信息构建成为一个镜像,将镜像运行到docker上,因为镜像中包含了业务所需要的runtime环境,所以直接可以运行成功,即使换到别人的机器上,只要安装了docker就同样可以运行成功,不用关心环境、配置等外在的东西;

docker的优点:

1)平滑移植,方面快捷的进行扩容和缩容;

2)一次镜像,处处运行;

3)可以更简单的系统运维,生产环境运行的程序可与测试、开发环境高度一致,出现问题时,可通过测试环境相同容器快速定位和恢复;

 

 

二 docker的重要概念

1. 镜像(Image)
docker镜像是一个只读的模板。镜像可以用来创建docker容器,一个镜像可以创建很多容器,他相当于容器的源代码,以java为例,镜像就相当于java的类模板,而每一个docker实例就相当于new出来java对象;

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

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间(namespace),具有隔离性。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间等。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全,从此再也不用担心本地多个应用需要不同版本的依赖导致的冲突问题了。

3. 仓库(Repository)

仓库是集中存放镜像的文件的场所,类似于maven仓库,存放jar包的地方,github存放各种git项目的地方;

仓库分为公开仓库和私有仓库,最大的公开仓库是:docker hub(http://hub.docker.com/)存放大量的镜像供我们下载,国内也有公开的仓库,例如:阿里云、网易云等;

三 docker整体架构与底层通讯原理

docker运行的基本流程:

1、用户是使用docker client 与docker daemon建立通信,请将请求发送给doker daemon;

2、docker daemon 作为 docker 架构中的主体部分,首先提供docker server的功能,可以让他接受docker client 的请求;

3、docker engine 执行 docker内部的一系列工作,每一项工作都以job的形式存在;

4、job运行过程中,当需要容器镜像时,则从docker registry 中下载镜像,并通过镜像管理驱动 graph driver将下载的镜像以gragh的形式存储;

5、当需要为docker 创建网络环境时,通过网络管理驱动network driver创建并配置docker容器网络环境;

6、当需要限制docker容器运行资源或者执行用户指令等操作时,通过exec driver完成;

7、libcontainer 是一项独立的容器管理包,networt dirver 以及 exev driver 都是通过libcontainer来实现对容器的操作;

图来源于网络,侵权可删 

 四 docker 的安装

通过以上概念性的描述,我们大致有个轮廓在心中,下面我们动手安装下docker;

官方安装文档地址:http://docs.docker.com/engine/install/centos/

1)yum 安装gcc相关:

yum -y install gcc 

yum -y install gcc-c++

2) 安装需要的软件包:

yum install -y yum-utils

3) 安装stable 镜像仓库(注意此书处安装为 阿里云的,国外的太慢了)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4)更新yum 软件包索引:

yum makecatch fast

5)安装docker ce(这一步才是安装docker):

yum install docker-ce docker-ce-cli containerd.io
6)启动docker
systemctl start docker
7)到此处安装完成,可以查看docker版本
docker version
8)另外我们需要安装一下镜像加速器,方便我们下载镜像,以阿里云为例:

 

 找到容器镜像服务,点击进入;

 

 选择镜像加速器,并复制对应的加速器地址:

 

 执行操作文档中的命令(centOS):

1)mkdir -p /etc/docker

2) 

tee /etc/docker/daemon.json << 'EOF'
EOF
3) 重新启动
systemctl daemon-reload
systemctl restart docker
 
到此我们已经安装完成,现在我们思考一下,为什么docker会比虚拟机快?
五 docker为什么比虚拟机快?

不同:1、传统虚拟机是虚拟出一套硬件,并在虚拟的硬件上运行了一套完整的操作系统,在该系统上再运行所需的应用进程;

2、容器是直接使用宿主机的内核和操作系统,没有进行硬件虚拟,因此比较轻快;

3、每个容器互相隔离,都有自己的文件系统,所以互不影响;

由此,我们已经讲解完了第一章,下一章我们将继续探讨docker技术,欢迎关注本章节的内容,我们下次见~

 

posted @ 2022-09-18 20:02  爱吃螃蟹的牧羊人  阅读(135)  评论(0编辑  收藏  举报