通俗易懂的Docker容器技术简单解释

一、什么是Docker容器

Docker的思想来自于集装箱, 是一个以容器的形式将应用程序及其所有依赖项打包在一起的平台。它使用容器使应用程序的创建、部署和运行变得更加容易。Docker 在容器内绑定应用程序及其依赖项。容器允许开发人员将应用程序及其所需的所有部分(例如库和其他依赖项)打包在一起,然后将其作为一个包发送出去。docker的主要目标是"Build,Ship and Run any App,Angwhere",构建,运输,处处运行。

二、Docker三大核心概念:

镜像::镜像是docker的前置条件,就比如你需要电脑上安装一个app,前提是你得去软件中心下载它所对应的exe安装包;如果你要在docker中你需要构建一个mysql容器,那么你得先准备一个mysql镜像;

容器::容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见、互不影响,可以分别将其启动、开始、停止、删除;每个容器都有唯一的标识ID,只需要操作id或者名称加版本就可以;

仓库: 类似代码仓库,是集中存放 Docker 镜像文件的地方。最大的公开仓库是官方提供的 Docker Hub,其中存放着数量庞大的镜像供我们下载使用。国内也有不少云服务提供商也提供了仓库的本地源,为我们提供稳定的国内访问。我们创建好自有镜像后就可以使用 push 命令将它上传到指定的公有或者私有仓库。这样其他人就可以在另外一台机器上下载并使用该镜像,这很像 Git 代码仓库的管理与使用方式。

三、举例解释

我需要盖一座别墅,于是我找设计人员设计结构、运输原材料、建筑工人盖房子等等一系列操作,花了很长时间才盖好;住了一段时间,我想去海边住,我还想要现在这种结构和布局,那么又得按照原来的方式找设计人员设计结构、运输原材料、建筑工人盖房子等等一系列操作,这时候出现一个魔法师,他可以将我的别墅复制一份做成镜像,到了海边,我就用这个镜像复制一套别墅,直接入住。

回归实际开发运维环境中,别墅就是一套系统,盖房的过程就是项目部署过程(安装mysql/postgres、jdk、redis、nginx、中间件、配置各种环境等等),但是每部署一套系统都需要重复步骤,很花费精力和时间,而且还需要考虑版本兼容问题; 那么我们就用docker来解决这个问题;用docker部署好之后,只需要重新拉取镜像随便复制一份就可以,不用再关注版本、兼容、部署等问题。

四、Dokcer的作用

解决环境和切换的问题
比如说装Linux虚拟机,重装Windows系统,都是需要一个叫镜像的东西,我们通过这个镜像来装系统,docker就是这种思想,把环境打包,用的时候直接拉取就可以。

更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

高效的部署和扩容
Docker容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装docker,就能把之前打包好的镜像文件导入到docker里面,运行容器,就能实现访问,不需要重新配置环境。

轻量、消耗少
使用Docker能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术让Docker能以更加紧密的资源提供更有效的服务合并。基于LXC轻量级特点,启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,在单机环境下与KVM之类的虚拟化方案相比,能够更加快速和占用更少资源。

更高的资源利用率
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

更简单的管理
它有可视化ui界面,展示整个docker环境的容器列表,容器状态,容器属性、容器创建等,可以对容器进行相关的操作,如容器的基本信息、启停、删除、状态监控(CPU、内存、网络情况)、日志查看、进入容器终端(docker exec)。目前市面有很多,可以搜索docker管理界面软件。

五、centos安装Docker

安装步骤

1,使用 root 权限登录 Centos,确保 yum 包更新到最新

sudo yum update

2,如果安装过旧版本,卸载旧版本

sudo yum remove docker  docker-common docker-selinux docker-engine

3,装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4,设置yum源

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

5,安装docker,默认最新版本

sudo yum install docker-ce  

如果需要指定版本,先查看所有仓库中所有docker版本,并选择特定版本安装

 yum list docker-ce --showduplicates | sort -r
sudo yum install <FQPN>    # 例如:sudo yum install docker-ce-17.12.0.ce

6,启动并加入开机启动

 sudo systemctl start docker
 sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

 docker version

六、常用命令总结

docker pull 镜像名<:tags>	--从远程仓库拉取镜像到本地仓库

docker images	     --查看本地仓库所有镜像

docker run 镜像名<:tags>	--基于镜像创建容器并启动,可以添加-d port1:port2参数,port1:宿主机端口,port2:容器端口, -d参数代表后台运行

docker ps	--查看当前所有启动的容器

docker ps -a	--查看本地所有容器,包含未启动的,删除容器的时候可用来查询容器id

docker start/stop/restart 容器id	--启动/停止/重启容器

docker rm <-f> 容器id	删除<-f:    --强制删除>容器,运行中的容器不能删除,-f可以强制

docker rmi <-f> 镜像名称 <:tags>       --删除<强制删除>镜像,镜像有容器在启动,不能被删除,-f可以强制

docker exec [-it] 容器id  /bin/bash	--进入容器主目录,exec:在对应容器中执行命令,-it:采用交互方式执行命令
Ctrl+P+Q  退出当前容器

sudo docker inspect  容器id   --查看容器的详情

docker logs -f -t --since="2020-04-17" --tail=10  id或者名称        --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 -f : 查看实时日志 -t : 查看日志产生的日期 -tail=10 : 查看最后的10条日志。

猜你喜欢

转载自blog.csdn.net/qq_42697508/article/details/123590290