理解、使用Docker(下)

在理解、使用Docker(上)中主要总结了Docker是个啥东西以及究竟能干些啥,本文继续上篇来讲述如何安装Docker以及如何使用Docker。

如何安装Docker

安装之前,我们首先确保自己的linux系统内核版本高于3.10,并且系统是64位,才能体验Docker哦。

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

通过脚本的方式安装docker,非常简单。

1、获取最新的docker安装包

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

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

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

2、启动docker后台服务

root@nicktang:/data #sudo service docker start#启动守护进程

root@nicktang:/data #docker -v

能够看见版本号,说明docker的安装成功。简单吧!至此就差一个镜像了。自己制作还是从公共仓库拉取就随你啦。

root@nicktang:/data #sudo service docker stop#关闭守护进程

如何使用Docker

Docker的使用,我们主要从【增删查】几方面来说说怎么使用docker,为什么没有【改】呢,因为在我看来docker容器一旦出现问题了,根本没有修复的必要,直接把容器停止并删除,再启动,这样来得快。所以我们只需要掌握几个基本命令即可,具体如下。

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

【增】运行一个镜像,即启动一个容器 docker run 镜像名 ,比如我们运行docker runcentos,键入这个命令的时候完成了三样操作

1:检查本地是否有hello-world这个镜像,有->就跳过第二步 没有->依次执行;

2:就自动去docker hub下载这个镜像;

3:就把镜像加载到容器并且运行。

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

Tag为latest就表示是最新版本的centos系统镜像。因为会从docker hub拉取没有的镜像,所以算【增】里面。

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

上面那种通过直接运行的方式拉取的是docker hub中最新的镜像,但是有时候我想拉取指定的镜像文件就需要使用docker pull命令来拉取。因为从官方拉取镜像文件,通常是比较慢的,所以我们可以通过加速器技术来从国内的镜像仓库拉取。

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

第一个字段就是已经启动的容器ID,第二个字段就是这个容器是根据哪个镜像生成的。但是上面这个命令只是临时启动一下容器,上面图中的status 是exited(0),表示容器是退出状态。如果想容器在后台运行,所以我们需要启动守护式容器才可以,只要在启动命令中添加一个 -d参数,即docker run -d centos就可以了。

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

这个命令是返回一个镜像或者容器详细信息的json串。其中包括ID,ip,版本,容器的主程序等非常多的信息,根据这些信息我们可以进行二次开发。在这个命令的基础之上增加一个-f参数我们可以指定获取自己需要的信息,比如获取redis容器的IP地址,内存信息,CPU使用情况。docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ [ID /Name]

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

-it 完成容器终端和当前终端进行关联,即当前终端的显示就会切换到容器终端的显示。查看容器目录结构,发现和物理机器的目录结构完全一致,这就是为什么有的人称docker容器也称之为虚拟机的原因。

Exit可以退出容器终端。

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

如何用Docker完成持续集成、自动交付

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

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

1:RD推送代码到git 仓库或者svn等代码服务器上面,git服务器就会通过hook通知jenkins;

2:jenkine 克隆git代码到本地,并通过dockerFile文件进行编译;

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

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

Docker还可以很方便的自动扩容哦,一般的自动扩容的两种方式,一种就是docker容量扩大,另一种就是docker节点数扩充。第一种就修改配置文件即可,第二种通过简单的拷贝,运行就完成了节点的扩容。

总结

虽然Docker具有超轻量化,但是不建议一台机器上面部署太多的应用,同时部署的时候一定要差异化部署,什么意思呢?就是将大量计算的,和内存需要大的,IO操作频繁的对系统资源需求不一致的部署到同一台宿主机上。

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

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180202B04OTM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券