5 分钟让你秒懂 Docker !

  • 时间:
  • 浏览:1

快速部署测完就销

输入当前用户的密码后,就会下载脚本因此安装Docker及依赖包。

这年头见面不聊点自动化哪些地方的,持续哪些地方的,删剪一定会好意思。所以,咱们也要了解一下持续集成,自动交付,自动部署。因此上端说了只能多,没发现Docker有那三样功能啊,是的,Docker是没四种 生活生活功能,但你这麼了在完成上述三样自动化的步骤删剪一定会依赖Docker的。Docker是哪些地方地方流程实现的基础,就如同软件开发,软件代码才是根本,开发工具是辅助。所有搭建一有有二个 多删剪的自动化流程还前要github+jenkins+ registry三样帮助。

通过uname -ir查看有无满足要求。

所以所以移动互联网的应用刚刚云计算的后端节点都还都还都可不可以 用docker来替换物理机器刚刚虚拟机。比如腾讯地图的所也不我台服务基本上都迁移docker部署了。

root@nicktang-virtual-machine:/data # sudo service docker start #启动守护程序池池

root@nicktang-virtual-machine:/data # docker -v

都都还都还都可不可以 看见版本号,说明docker的安装成功。简单吧!至此就差一有有二个 多镜像了。人个制作还是从公共仓库拉取就随你啦。

镜像是分层的,有基础镜像,仅仅蕴含 操作系统,比如centos镜像;有上端件镜像,比如redis等数据库镜像;最后是应用镜像,也不我指具体的应用服务了,应用镜像还都还都可不可以 非常充裕,随时还都还都可不可以 发布,这三者之间依次叠加。

【查】进入容器 docker run -it centos 即启动一有有二个 多交互式容器

-it 完成容器终端和当前终端进行关联,即当前终端的显示就会切换到容器终端的显示。

再用docker images查看的刚刚本地就增加了centos镜像。

其次,刚刚在构建镜像的刚刚就解决完了服务程序池池对于系统的所有依赖,所以在你使用的刚刚,我应该 忽略掉也不我程序池池的依赖以及开发语言。对测试和运维而言,更多专注于人个的业务内容上。

查看容器目录形状,发现和物理机器的目录形状删剪一致,这也不我为哪些地方有的人称docker容器也称之为虚拟机的意味着 。

构建容易分发简单

仓库Docker registeries,docker仓库和存放集装箱的仓库是一样的,不过docker使用来存放镜像的。仓库地处公有和私有之分,公有仓库docker hub提供了非常多的镜像文件,哪些地方地方镜像直接拉取下来就还都还都可不可以 运行了,你也还都还都可不可以 上传人个的镜像到docker hub上端。一并也还都还都可不可以 人个搭建私有仓库用于团队项目管理。

比如CPU,内存,磁盘等,union FS主也不我对镜像也也不我image四种 生活块作支持,采用copy-on-write技术,让大伙儿还都还都可不可以 共用某一层,对于所以差异层说说就还都还都可不可以 在差异的内存存储,Libcontainer是一有有二个 多库,是对上端这三项技术做一有有二个 多封装。

Docker还还都还都可不可以 很方便的自动扩容哦,一般的自动扩容的四种 生活法律最好的方法,四种 生活也不我docker容量扩大,另四种 生活也不我docker节点数扩充。第四种 生活就修改配置文件即可,第二种通过简单的拷贝,运行就完成了节点的扩容。

容器Docker containers,我应该 从镜像中创建容器,这如同从快照中创建虚拟机,不过更轻量,启动调快,秒启。应用是在容器中运行的,打个比方,你首先下载了一有有二个 多Ubuntu的镜像,因此又安装mysql和Django应用及其依赖,来完成对它Ubutun镜像的修改,一有有二个 多人个我实在非常完美应用镜像生成了!就把四种 生活镜像分享给大伙儿使用,大伙儿通过四种 生活镜像就生成一有有二个 多容器。容器启动刚刚就会运行Django服务了。

Docker从狭义上来讲也不我一有有二个 程序池池池,从广义上来讲是一有有二个 多虚拟容器,我我实在更专业的叫法是应用容器( Application Container ),Docker程序池池和普通的程序池池只能任何区别,它也不我一有有二个 多普通的程序池池。不过是用来操作镜像文件的。所以Docker程序池池+构建的应用镜像文件就等于Docker容器。本文所有讲的Docker删剪一定会指Docker容器哦。

作者丨唐文广:腾讯工程师,负责无线研发部地图测试

为什么我要用Docker?这要从目前软件行业的痛点来讲起 1、软件更新发布及部署低效,过程繁琐且前要人工介入,2、环境一致性难以保证,3、不同环境之间迁移成本太高。有了Docker还都还都可不可以 很大程度解决上端的问题。

性能开销小, VM 通常前要额外的 CPU 和内存来完成 OS 的功能,四种 生活次要地处了额外的资源。

Tag为latest就表示是最新版本的centos系统镜像。之一定会从docker hub拉取只能的镜像,所以算【增】上端。

前面说了只能多,始终还是雾里看花。下面就删剪介绍一下技术架构,底层又是用的啥技术来实现上述只能多优点的?



【查】查看所有的容器docker ps -a 还都还都可不可以 用来查看所有的容器,包括运行中的和刚刚停止的。

结合前面介绍的基本概念,大伙儿还都还都可不可以 将docker的哪几次概念使用大致串起来,大伙儿之间是咋样运作的,也也不我Docker的生命周期。

【增】运行一有有二个 多镜像,即启动一有有二个 多容器 docker run 镜像名 ,比如大伙儿运行docker run centos

键入四种 生活命令的刚刚完成了三样操作

1、 检查本地有无有hello-world四种 生活镜像,有->就跳过第二步 只能->依次执行

2、 就自动去docker hub下载四种 生活镜像

3、 就把镜像加载到容器因此运行

jenkine 克隆qq好友好友git代码到本地,并通过dockerFile文件进行编译 。

如图中左边红框中redis: lates和右边的红框中5f515359c7f8都唯一表示为同一有有二个 多镜像。所以大伙儿一般的镜像还都还都可不可以 命名为类似centos:latest、centos:centos7.1.50003等等。

咱们所以刚刚做事情的刚刚不用考虑与事情四种 生活无关的问题,比如造飞机的不用考虑飞机有无要潜水,对于大伙儿目前所以移动互联网的应用来说,很少会涉及到对操作系统的次要,我我实在大伙儿主要关心的是应用的四种 生活,而VM虚拟机的上层是运行的运行时库和应用,整个虚拟机的空间是非常的庞大,因此容器化技术Docker技术的出先后,省去了操作系统四种 生活层,多个容器之间相互隔离且共用了宿主操作系统和运行时库。

【删】删除容器,docker rm 容器ID,删除多个容器就还都还都可不可以 多个容器ID之间用空格隔开即可。



通过脚本的法律最好的方法安装docker,非常简单。

上端那种通过直接运行的法律最好的方法拉取的是docker hub中最新的镜像,因此有刚刚我应该 拉取指定的镜像文件就前要使用docker pull命令来拉取。刚刚从官方拉取镜像文件,通常是这麼的,所以大伙儿还都还都可不可以 通过加速器技术来从国内的镜像仓库拉取。

本文链接:https://cloud.tencent.com/community/article/2885500?utm_source=csdn_geek

Exit还都还都可不可以 退出容器终端。

所以当大伙儿在使用 Docker构建镜像的刚刚,每一有有二个 多命令一定会在前一有有二个 多命令的基础上形成一有有二个 多新镜像层。如下图,基础镜像也不我centos镜像,上端件镜像也不我一有有二个 多红色圈,应用镜像也不我紫色圈。其中redis+centos也不我叠加组合的上端件镜像就还都还都可不可以 供A服务刚刚B服务使用,也不我叠加组合更加灵活。仍和四种 生活镜像都还都还都可不可以 从Docker hub公共仓库中拉取。

上端也说到了,容器也不我一有有二个 多个独立的封闭的集装箱,因此也前要对外提供服务的,所以Docker允许公开容器的特定端口,在启动Docker的刚刚,大伙儿就还都还都可不可以 将容器的特定端口映射到宿主机上端的任意一有有二个 多端口,所以,刚刚哪几次服务都前要500端口,只能容器的对外端口是500,因此映射到宿主机上端也不我任意端口,就不用产生冲突,所以就不前要通过代理来解决冲突。容器对外端口与宿主机的端口映射还都还都可不可以 通过下面的命令来完成。

最后,Docker于开发者而言提供了四种 生活开发环境的管理法律最好的方法,与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程。

第一有有二个 多字段也不我刚刚启动的容器ID,第二个字段也不我四种 生活容器是根据哪个镜像生成的。因此上端四种 生活命令也不我临时启动一下容器,上端图中的status 是exited(0),表示容器是退出情况。刚刚想容器在后台运行,所以大伙儿前要启动守护式容器才还都还都可不可以 ,因此我在启动命令中加在一有有二个 多 -d参数,即docker run -d centos就还都还都可不可以 了。

Docker是个程序池池级的轻量化虚拟机,和传统虚拟机有啥区别呢?

大伙儿来看一下二者的区别,刚刚 VM 的 Hypervisor 前要实现对硬件的虚拟化,因此前要搭载人个的操作系统,其中虚拟机操作系统占用内存是比较大的,一有有二个 多操作系统有好哪几次G,自然在启动波特率和资源利用率以及性能上有非常大的开销,刚刚在本地,刚刚人个电脑,只能影响还删剪一定会只能大,因此在云端也不我一有有二个 多非常大的资源浪费。

打开翻译君输入Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,只能今天要讲的Docker其操作的也是集装箱,四种 生活集装箱就静态而言也不我一有有二个 多应用镜像文件,就动态而言,也不我一有有二个 多容器。蒙了吧?好吧,上图解释。

从Docker依赖的底层技术来看,Docker原生态是只能直接在Windows平台上运行的,只支持linux系统,意味着 是Docker依赖linux kernel三项最基本的技术,namespaces充当隔离的第一级,是对Docker容器进行隔离,让容器拥有独立的hostname,ip,pid,一并确保一有有二个 多容器中运行一有有二个 程序池池池因此只能看后或影响容器外的其它程序池池;Cgroups是容器对使用的宿主机资源进行核算并限制的关键功能。

root@nicktang-virtual-machine:/data # sudo service docker stop #关闭守护程序池池

看下图,主也不我三步走。

打包生成一有有二个 多新版本的镜像并推送到仓库 ,删除当前容器 ,通过新版本镜像重新运行。

而在整个过程中 RD只前要敲入一有有二个 多命令Git add * ;Git commit –m “”;Git push即可完成持续集成、自动交付、自动部署。上端通过案例实际演示四种 生活过程的神奇!

Docker技术架构图:

四种 生活命令是返回一有有二个 多镜像刚刚容器删剪信息的json串。其中包括ID,ip,版本,容器的主程序池池等非常多的信息,根据哪些地方地方信息大伙儿还都还都可不可以 进行二次开发。在四种 生活命令的基础之上增加一有有二个 多-f参数大伙儿还都还都可不可以 指定获取人个前要的信息,比如获取redis容器的IP地址,内存信息,CPU使用情况。docker inspect -f '{{.NetworkSettings.IPAddress}}' [ID /Name]

Docker四种 生活虚拟机超级轻量级,仅仅是一有有二个 程序池池池而已。与传统的虚拟机比如VM有着巨大的差别

隔离应用解除依赖

首先,Docker的使用简单至极,从开发的深度1来看也不我三步走:构建,运输,运行。其中关键步骤也不我构建环节,即打包镜像文件。因此从测试和运维的深度1来看,那就只能两步:克隆qq好友好友,运行。有了四种 生活镜像,只能想克隆qq好友好友到哪运行都还都还都可不可以 ,删剪和平台无关了。一并Docker四种 生活容器技术隔离出了独立的运行空间,不用和所以应用争用系统资源了以及还不前要考虑应用之间相互影响,想想就开心。

资源利用率高,一台普通 PC 还都还都可不可以 跑成百上千个容器,你跑二个 VM 试试。

启动波特率快,容器启动本质也不我一有有二个 多开启一有有二个 程序池池池而已,因此删剪一定会秒启,而 VM 通常要更久。

镜像Docker images,就类似于VM虚拟机上端的快照,因此可比快照轻量化多了。快照不懂?那还都还都可不可以 把images直接理解成一有有二个 多文件夹。大伙儿还都还都可不可以 通过ID刚刚易识别的名字+tag来确认唯一的目标镜像。ImagesID是一有有二个 多64位的字符,因此一般大伙儿删剪一定会使用前面12位就足够区别了。

nicktang@nicktang-virtual-machine:~$ wget -qO- https://get.docker.com/ | sh

【查】查看镜像/容器的具体信息 docker inspect镜像ID(镜像名)/容器ID(容器名) docker inspect centos

1、 开发构建镜像并将镜像push到Docker仓库

2、 测试刚刚运维从Docker仓库拷贝一份镜像到本地

3、 通过镜像文件开启Docker容器并提供服务

持续集成和自动部署的原理如下图所示:

所以Docker 应用容器相对于 VM 有以下哪几次优点:



【查】查看本地已有的镜像 Docker images

【增】拉取指定的镜像文件 docker pull 镜像名:TAG

区别看下图:

Docker的使用,大伙儿主要从【增删查】几方面来说说为什么我使用docker,为哪些地方只能【改】呢,刚刚在我看来docker容器一旦出先问题了,根本只能修复的必要,直接把容器停止并删除,再启动,也不我来得快。所以大伙儿只前要掌握哪几次基本命令即可,具体如下。

再继续下文刚刚大伙儿首这麼明确哪几次docker重要的基本概念吧,镜像,容器,仓库。

RD推送代码到git 仓库刚刚svn等代码服务器上端,git服务器就会通过hook通知jenkins。

我实在Docker具有超轻量化,因此不建议一台机器上端部署很多的应用,一并部署的刚刚一定要差异化部署,哪些地方意思呢?也不我将少量计算的,和内存前要大的,IO操作频繁的对系统资源需求不一致的部署到同一台宿主机上。

所以, Docker 能干啥,总结如下:

Docker engine 用来控制容器container的运行,以及镜像文件的拉取。

安装刚刚,大伙儿首先确保人个的linux系统内核版本高于3.10,因此系统是64位,都还都还都可不可以 体验Docker哦。

显示上图内容就表明安装完成。