Docker简介及初步安装

发布于:2022-12-29 ⋅ 阅读:(550) ⋅ 点赞:(0)

一、Docker相关简介

Linux container 是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。

Docker是PAAS提供商dotcloud开源的一个基于LXC的高级容器引擎,源代码托管在GitHub上,基于go语言并遵从Apache2.0协议开源。

Docker设想是交付运行环境如同海运,os如同一个货轮,每一个在os基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。

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

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

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

Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。Docker借鉴了标准集装箱的概念,标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

        *Docker官网:Home - Docker

        *Docker仓库:Docker Hub

二、Docker的基本组成

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

容器:Docker利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例,容器为镜像提供了一个标准的和隔离的运行环境,他可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

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

Docker公司提供的官方registry被称为docker hub ,存放着各种镜像模板的地方。仓库分为公开仓库和私有仓库两种,最大的公开仓库就是docker hub .

三、总结

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

image文件可以看做是容器的模板,docker根据image文件生成容器实例。同一个image文件。可以生成多个同时运行的容器实例。

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

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

仓库:就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要时再从仓库中拉下来就可以。

四、Docker的工作原理

Docker是一个client-server结构的系统,docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。

Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。

Docker运行的基本流程:

①用户是使用Docker client 与 Docker Daemon建立通信,并发送请求给后者;

②Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能,使其可以接受Docker client的请求;

③Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个job的形式存在;

④job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储;

⑤当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境;

⑥当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成

⑦libcontainer是一项独立的容器管理包,Network driver以及Excl driver 都是通过lib container来实现具体对容器进行的操作。

 五、Docker的部署

1.Docker的安装

我们是在centos7上进行部署,所以事先准备好一台干净的centos7环境,并且保证能够上网,并且提前安装好gcc、gcc-c++

打开Docker官方网站:Install Docker Engine on CentOS | Docker Documentation

根据提示进行安装:

yum install -y yum-utils

 下面那一句是安装docker的官方源,但是docker官网是在国外,在配置是会导致访问超时等原因,所以我们使用国内的源,这里使用的是阿里云的docker源,并更新yum软件包索引

访问:docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站

# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum makecache fast #更新yum软件包索引

 安装docker以及相应软件,并启动docker

# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# systemctl start docker

 查看docker运行状态和版本信息:可以看到已经启动,并且client和server端的版本信息都是一样的。

# ps -ef | grep docker
# docker verison

 

 进行测试:可以看到我们进行hello-world的拉取测试,在本地库里找不到hello-world的镜像,就去docker总库里去拉取,然后拉取过来之后再进行容器的运行,并且注意的是,在不指定版本号的时候,默认是最新稳定版本。

# docker run hello-world

 2.阿里云镜像加速

我们添加阿里云镜像加速的原因就是docker在国外,进行访问时会受到限制,所以配置一个镜像加速:访问:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

#  tee /etc/docker/daemon.json <<-'EOF'
 {
   "registry-mirrors": ["https://xb2s49ki.mirror.aliyuncs.com"] #这个是自己的加速网站,可以使用淘宝账号进行登录免费获取
 }
 EOF
#  systemctl daemon-reload #重载模块
#  systemctl restart docker #重启docker

 # docker info  查看docker概要信息,能看到版本等多种相关信息;

# docker --help 查看docker的一些命令的使用;

# docker cp --help

 至此,docker安装完成。