在理解、使用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操作频繁的对系统资源需求不一致的部署到同一台宿主机上。
作者丨唐文广:腾讯工程师,负责无线研发部地图测试
领取专属 10元无门槛券
私享最新 技术干货