社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
作为虚拟容器,与操作系统绝对隔离,能够对测试应用过程方便搭建各类环境,模拟真实应用环境。主要在Linux/Mac系统上安装Docker进行操作,当然目前的Windows系统也已经可以使用Docker了,不过笔者没有试过,大部分情况下还是在Linux系统上进行操作。
基于以上特性,开发或者运维基本上都会接触或者使用Docker,所以学习Docker也就变得越来越重要。
Docker,是容器。什么是容器,在生活中,我们会将盛装东西的器具叫做容器,例如茶杯、盘碗等。那Docker容器盛装的又是什么呢?
Docker盛装的就是第一部分阐述的各类应用程序或者软件,甚至于系统都能盛装。最开始我对Docker能盛装系统感到无比惊讶,Docker跑在系统上,而我们在Docker中又安装一个系统,形成了套娃机制(禁止套娃)。
那么问题来了,我们需要搭建一套web应用环境,例如Tomcat、jdk、nginx等,我们通过正常的应用安装步骤也能够完成,何必借助Docker容器呢。
带着这个问题,我们进入到第三部分。
我们先使用Docker来简单装个jdk8,首先当然是准备好Docker软件,这里笔者使用的系统版本是CentOS 7.4,且使用Docker社区版,即Docker-ce。
yum -y install docker-ce
通过yum一键安装完成后,进行启动docker
systemctl start docker
检查docker是否正常启动,观察是否有active(running)的绿色字样即表示已启动docker
systemctl status docker
现在我的目标是在docker中安装一个jdk8环境,我们先通过docker search命令查找jdk8镜像名称
docker search jdk8
返回结果的第二行就是我们想要的结果,即镜像名称为docker.io/ascdc/jdk8,所以我们使用docker pull xxx,xxx即为镜像名称
docker pull docker.io/ascdc/jdk8
经过短暂的等待后,整个pull过程就结束了,我们检查容器中是不是有了我们的jdk8镜像
docker images
第一列是镜像名称,第二列是镜像标签(版本号,这里默认使用的latest,即最新),第三列是镜像唯一ID(比较重要),第四列是镜像创建时间,最后一列是镜像大小。
现在我们要启动这个镜像:
docker run -di --name=jdk1.8 kdvolder/jdk8
查看启动是否成功:
docker ps -a
主要查看第5列的STATUS,状态显示Up About a minute,启动了一分钟,表示已经启动成功。
调试进入该容器内部,查看jdk版本号等信息,这里我们需要docker exec命令,跟上参数it,其后跟上容器名称jdk1.8或者使用容器ID,进入容器内部后,使用java -version命令即可查看我们安装镜像的jdk版本信息了:
docker exec -it jdk1.8 bash
java -version
# docker exec -it 4d870c9fa8ae bash
docker pull hub.c.163.com/library/tomcat:latest
docker run -d -it -p 7000:8080 --name tomcat8 hub.c.163.com/library/tomcat
curl localhost:7000
使用Docker能够极大的方便部署相关应用环境,思考我们第二部分抛出的问题,Docker所解决的问题就是在一个隔离的环境中部署应用,相对来说减少不同的系统环境导致部署出现的问题。
最主要的是要熟记以下docker命令:
参考资料:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!