【全干货】5分钟带你看懂 Docker!

  • 时间:
  • 浏览:1

【查】进入容器 docker run -it centos 即启动另另三个 交互式容器

Docker 还可不都要很方便的自动扩容哦,一般的自动扩容的并也有辦法 ,并也有也不 Docker 容量扩大,另并也有也不 Docker 节点数扩充。第并也有就修改配置文件即可,第二种通过简单的拷贝,运行就完成了节点的扩容。



才能看见版本号,说明 Docker 的安装成功。简单吧!至此就差另另三个 镜像了。每每所有人 制作还是从公共仓库拉取就随你啦。

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

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

-p宿主机端口和容器端口映射

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

如图中左边红框中 redis: lates 和右边的红框中 5f515359c7f8 都唯一表示为同另另三个 镜像。全都大伙儿儿一般的镜像可不都要命名为同类centos: latest、centos: centos7.1.303等等。

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

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

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

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

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

快速部署测完就销

Docker 安装

结合前面介绍的基本概念,大伙儿儿可不都要将 docker 的十几个 概念使用大致串起来,大伙儿儿之间是怎样才能运作的,也也不 Docker 的生命周期。看下图,主也不 三步走。

2、 启动 Docker 后台服务

而在整个过程中 RD 只都要敲入另另三个 命令 Git add * ;Git commit –m “”;Git push即可完成持续集成、自动交付、自动部署。中间通过案例实际演示這個 过程的神奇!

查看容器目录价值形式,发现和物理机器的目录价值形式完整版一致,这也不 为哪几种有的人称 docker 容器也称之为虚拟机的是因为啦。Exit 可不都要退出容器终端。

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

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

原文发布时间为:2018-04-17

Docker 虽好,可好的反义词贪杯哦!着实 Docker 具有超轻量化,而且不建议一台机器中间部署没有来太少的应用,一同部署的以后一定要差异化部署,哪几种意思呢,也不 将几瓶计算的,和内存都要大的,IO 操作频繁的对系统资源需求不一致的部署到同一台宿主机上。

这要从目前软件行业的痛点来讲起:

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

全都 Docker 应用容器相对于 VM 有以下十几个 优点:





通过 uname -ir 查看否是满足要求。

-d 守护容器,也不 后台运行,退出命令窗口容器也不 会停止

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



中间那种通过直接运行的辦法 拉取的是 docker hub 中最新的镜像,而且有以后让他拉取指定的镜像文件就都要使用 docker pull 命令来拉取。而且从官方拉取镜像文件,通常是很难的,全都大伙儿儿可不都要通过加速器技术来从国内的镜像仓库拉取。



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

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

這個 命令是返回另另三个 镜像而且容器完整版信息的 json 串。其中包括 ID,IP,版本,容器的主多线程 等非常多的信息,根据哪几种信息大伙儿儿可不都要进行二次开发。在這個 命令的基础之上增加另另三个 -f参数大伙儿儿可不都要指定获取每每所有人 都要的信息,比如获取redis容器的IP地址,内存信息,CPU使用状态。docker inspect -f '{{.NetworkSettings.IPAddress}}' [ID /Name]

有了 Docker 可不都要很大程度避免中间的大大问题 。

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

本文来自云栖社区合作伙伴“数据和云”,了解相关信息可不都要关注“数据和云”。

启动波特率单位快,容器启动本质也不 另另三个 开启另另三个 多线程 而已,而且总要 秒启,而 VM 通常要更久

最后,Docker 于开发者而言提供了并也有开发环境的管理辦法 ,与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程。

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

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

容器 Docker containers,让他从镜像中创建容器,这如同从快照中创建虚拟机,不过更轻量,启动调慢,秒启。应用是在容器中运行的,打个比方,你首先下载了另另三个 Ubuntu 的镜像,而且又安装 MySQL 和 Django 应用及其依赖,来完成对它 Ubutun 镜像的修改,另另三个 每每所有人 着实非常完美应用镜像生成了!就把這個 镜像分享给大伙儿儿使用,大伙儿儿通过這個 镜像就生成另另三个 容器。容器启动以后就会运行 Django 服务了。

Docker 使用

Docker 這個 虚拟机超级轻量级,仅仅是另另三个 多线程 而已。与传统的虚拟机比如 VM 有着巨大的差别,区别看下图:

Docker 是个啥架构?底层又是用的啥技术?

镜像 Docker images,就同类于 VM 虚拟机中间的快照,而且可比快照轻量化多了。快照不懂?那可不都要把 images 直接理解成另另三个 文件夹。大伙儿儿可不都要通过 ID 而且易识别的名字 +tag 来确认唯一的目标镜像。ImagesID 是另另三个 64位的字符,而且一般大伙儿儿总要 使用前面12位就足够区别了。

Tag 为 latest 就表示是最新版本的 centos 系统镜像。而且会从 docker hub 拉取没有的镜像,全都算【增】中间。



1、 获取最新的 Docker 安装包



为啥要用 Docker?能干些啥?

全都全都移动互联网的应用而且云计算的后端节点都可不都要用 Docker 来替换物理机器而且虚拟机。比如腾讯地图的全都后台服务基本上都迁移 Docker 部署了。

总结

通过脚本的辦法 安装 Docker,非常简单。

性能开销小, VM 通常都要额外的 CPU 和内存来完成 OS 的功能,這個 帕累托图发生了额外的资源





隔离应用解除依赖



,比如大伙儿儿运行 docker run centos



首先,Docker 的使用简单至极,开发的淬硬层 来看也不 三步走:构建,运输,运行。其中关键步骤也不 构建环节,即打包镜像文件。而且测试和运维的淬硬层 来看,那就只有两步:群克隆,运行。有了這個 镜像,没有想群克隆到哪运行都可不都要,完整版和平台无关了。一同 Docker 這個 容器技术隔离出了独立的运行空间,太少和這個应用争用系统资源了以及还不都要考虑应用之间相互影响,想想就开心。

启动 docker 容器

Docker 从狭义上来讲也不 另另三个 多线程 ,从广义上来讲是另另三个 虚拟容器,着实更专业的叫法是应用容器( Application Container ),Docker 多线程 和普通的多线程 没有任何区别,它也不 另另三个 普通的应用多线程 。不过是用来操作镜像文件的。全都 Docker 多线程 +构建的应用镜像文件就等于 Docker 容器。本文所有讲的 Docker 总要 指 Docker 容器哦。

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

Docker 咋装呢?Docker 为啥用呢?

全都当大伙儿儿在使用 Docker 构建镜像的以后,每另另三个 命令总要在前另另三个 命令的基础上形成另另三个 新镜像层。如下图,基础镜像也不 centos 镜像,中间件镜像也不 另另三个 红色圈,应用镜像也不 紫色圈。其中 redis+centos 没有 叠加组合的中间件镜像就可不都要供A服务而且B服务使用,没有 叠加组合更加灵活。仍和并也有镜像都可不都要从 Docker hub 公共仓库中拉取。

本文讲述的 Docker 使用也不 Docker 整个使用的非常小的一帕累托图,其中最主要的 Docker 镜像构建,总要 全都内容可不都要学习探索,比如构建镜像都要的 Dockerfile 文件。对于测试和运维,大伙儿儿只都要懂得怎样才能使用 Docker 即可,为啥制作镜像主要还是由开发来完成。



这年头见面不聊点自动化哪几种的,持续哪几种的,总要 好意思。全都,咱们也要了解一下持续集成,自动交付,自动部署。而且中间说了没有多,没发现 Docker 有那三样功能啊,是的,Docker 是没有這個 功能,但有你在在完成上述三样自动化的步骤总要 依赖 Docker 的。Docker 是哪几种流程实现的基础,就如同软件开发,软件代码才是根本,开发工具是辅助。所有搭建另另三个 完整版的自动化流程还都要 github+jenkins+ registry 三样帮助。

仓库 Docker registeries,docker 仓库和存放集装箱的仓库是一样的,不过 docker 使用来存放镜像的。仓库发生公有和私有之分,公有仓库 docker hub 提供了非常多的镜像文件,哪几种镜像直接拉取下来就可不都要运行了,你也可不都要上传每每所有人 的镜像到 docker hub 中间。一同也可不都要每每所有人 搭建私有仓库用于团队项目管理。

构建容易收集简单

其次,而且在构建镜像的以后就避免完了服务多线程 对于系统的所有依赖,全都在你使用的以后,让他忽略掉没有 多线程 的依赖以及开发语言。对测试和运维而言,更多专注于每每所有人 的业务内容上。

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

第另另三个 字段也不 而且启动的容器 ID,第五个字段也不 這個 容器是根据哪个镜像生成的。而且中间這個 命令也不 临时启动一下容器,中间图中的 status 是 exited(0),表示容器是退出状态。而且想容器在后台运行,全都大伙儿儿都要启动守护式容器才可不都要,我希望在启动命令中再加另另三个 -d 参数,即 docker run -d centos 就可不都要了。

Docker 是啥?

Docker 技术架构图:



本文作者:唐文广

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

安装以后,大伙儿儿首先确保每每所有人 的 Linux 系统内核版本高于3.10,而且系统是64位,才能体验 Docker 哦。

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

再继续下文以后大伙儿儿首很难明确十几个 docker 重要的基本概念吧,镜像,容器,仓库。

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

【增】

-it 交互式容器 退出命令窗口容器就停止运行了

咱们全都以后做事情的以后太少考虑与事情并也否是关的大大问题 ,比如造飞机的太少考虑飞机否是要潜水,对于大伙儿儿目前全都移动互联网的应用来说,很少会涉及到对操作系统的帕累托图,着实大伙儿儿主要关心的是应用的并也有,而 VM 虚拟机的上层是运行的运行时库和应用,整个虚拟机的空间是非常的庞大,而且容器化技术 Docker 技术的出现后,省去了操作系统這個 层,多个容器之间相互隔离且共用了宿主操作系统和运行时库。

3081:30 宿主机端口:容器公开的端口

全都, Docker 能干啥,总结如下:

docker run -d -p 2222:22 --name 容器名 镜像名

Docker 的使用,大伙儿儿主要从【增删查】几方面来励志的话 为啥使用 docker,为哪几种没有【改】呢,而且在我看来 docker 容器一旦出现大大问题 了,根本没有修复的必要,直接把容器停止并删除,再启动,没有 来得快。全都大伙儿儿只都要掌握十几个 基本命令即可,具体如下。

中间也说到了,容器也不 另另三个 个独立的封闭的集装箱,而且也都要对外提供服务的,全都 Docker 允许公开容器的特定端口,在启动 Docker 的以后,大伙儿儿就可不都要将容器的特定端口映射到宿主机中间的任意另另三个 端口,全都,而且十几个 服务都都要30端口,没有容器的对外端口是30,而且映射到宿主机中间也不 任意端口,就太少产生冲突,全都就不都要通过代理来避免冲突。容器对外端口与宿主机的端口映射可不都要通过下面的命令来完成。

键入這個 命令的以后完成了三样操作:

比如 CPU,内存,磁盘等,union FS 主也不 对镜像也也不 image 這個 块作支持,采用 copy-on-write 技术,让大伙儿儿可不都要共用某一层,对于這個差异层励志的话 就可不都要在差异的内存存储,Libcontainer 是另另三个 库,是对中间这三项技术做另另三个 封装。

为啥用 Docker 完成持续集成、自动交付、自动部署?

大伙儿儿来看一下二者的区别,而且 VM 的 Hypervisor 都要实现对硬件的虚拟化,而且都要搭载每每所有人 的操作系统,其中虚拟机操作系统占用内存是比较大的,另另三个 操作系统有好十几个 G,自然在启动波特率单位和资源利用率以及性能上有非常大的开销,而且在本地,而且每每所有人 电脑,没有影响还总要 没有大,而且在云端也不 另另三个 非常大的资源浪费。



就把镜像加载到容器而且运行。