公司内部一直在使用Docker进行服务的部署和应用的升级,从开始使用Docker一直到线上的部署以及一些基础服务的开发本人都有参与,而且自己的网站也是在Docker的基础之上进行构建的,想想也需要总结下,才能更好的使用这个工具,本篇就先进行一些简单的基础说明以便新人了解
简介
Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
简单理解,像是在我们自己的windows笔记本中安装虚拟机VM,在虚拟机上安装一个linux操作系统,然后我们将tomcat服务部署在这个虚拟机中的linux系统之上运行,大部分人应该搞过这种模式吧。类比Docker,Docker相当于VM,但是又有所不同,安装了Docker之后,我们同样也可以安装一个linux操作系统,管理都是通过Docker来进行,和VM有很多相似之处。
文字说明看看就好,实际操作起来你才能明白
安装
以centOS为例,其他各个平台均有对应使用说明,自行查找,这里还是以公司常用的linux内核服务器来作说明。
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
查看下centOS7内核版本
[root@45cd851533f6 /]# uname -r
3.10.0-693.2.2.el7.x86_64
安装Docker CE(社区免费版)
[root@45cd851533f6 /]# uname -r
3.10.0-693.2.2.el7.x86_64
切换到root用户下操作,最简单的方式是使用yum安装,这里推荐这种方式,没安装yum的先安装yum
移除原有的旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
yum makecache fast
安装 Docker-ce:
yum -y install docker-ce
启动 Docker 后台服务
systemctl start docker
测试运行 hello-world
docker run hello-world
名词说明
Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container):容器是独立运行的一个或一组应用。
有点抽象,我简单说明下,首先,镜像可以当成VM虚拟机上的一个已经打包好的操作系统,不同的是这个已经打包好的操作系统中可以放置好各种我们想放的东西,比如,公司的应用服务,tomcat应用,我可以将运行tomcat应用服务的linux系统(包括所有东西)全部打包成镜像保存下来。而容器就是运行的镜像,我打包好的操作系统(包含应用服务等等),我现在需要应用提供服务,我就可以将镜像运行起来,你可以理解成在VM中启动了一个linux操作系统,之前部署好的tomcat服务也在里面,这样就可以直接对外提供服务
简单使用
这里演示一个常用的操作来帮助初学者理解,比如我需要一个tomcat8的运行环境,先不管应用服务部署部分,如何搞定呢?如果是以前,测试环境肯定需要安装JDK8的环境,再下载Tomcat,然后修改配置文件等等操作,然后启动Tomcat,OK,那么Docker环境下如何做呢?
拉取镜像
添加上版本号,不添加默认latest,最新版本
docker pull tomcat:8.5-jre8
查看镜像
docker images
运行镜像
这里我用的是镜像id
docker run --name test -d 3639174793ba
查看容器
docker ps -a
至此,看到Up状态时就已经成功启动了一个Tomcat环境的容器,当然,这里端口没做映射,所以不能访问,如果需要访问,添加上参数-p 8080:8080,将宿主机端口映射到容器端口,就可以访问了。
更多命令请参考官网:https://www.docker.com/
总结
本篇文章只是简单介绍下Docker以及一些基础使用,便于初学者理解这是个什么技术,目前公司内部已经大量使用Docker技术,能明显感觉到有很多优点:
- 隔离机制,容器之间互不影响,其中一个容器宕机,其他容器不会受到干扰
- 资源利用最大化,以往每台机器上部署服务有限,资源会浪费,Docker容器可以最大化利用机器资源
- 提升效率,部署应用直接拉取镜像部署即可,不用在基础环境上耗费大量人力物力,目前运维结合k8s使用更是将效率提升到一个新水平
- 自动化发布,通过gitlab CI和发布系统打通直接进行镜像发布,速度非常快,而且也不会出现代码差异化
对于我自己而言,也能明显感觉到Docker这种技术带来的巨大变化,本地搭建新的测试环境也不用在物理机上安装各种各样头疼的环境依赖,直接随用随拉,用完直接删除,目前个人网站上也是用的Docker,帮助屏蔽掉许多重复操作,很好用,个人认为服务端开发人员应该都要去学习和使用Docker,能帮助方便而快速的进行开发工作