一、Docker,幸好有你
某一天我们的项目终于在本地开发完成,要进入部署测试的阶段,组长说:“那我们roll一下吧,看看哪个幸运儿被选中去部署”,命运的骰子果不其然的选上了我。从几乎见底的微信钱包中掏出一百大洋,进入阿里云官网买它一手学生机,SSH连接,好的,很快。熟练得输入rpm -qa | sort (查看安装了哪些应用包),翻看着输出的列表,我陷入的沉思。。。java runtime呢?tomcat呢?mysql呢?好吧,小问题,不就几个环境吗我们慢慢安装。查查怎么安装jdk,什么?只能安装openjdk?oracle你个浓眉大眼的也叛变革命了?算了,open就open吧。搞定,下面安装tomcat,yum一查,我去,这是什么古老版本的tomcat?tomcat7?我们的应用在这上面可跑不起来啊。行吧,自己去官网下载最新安装包吧,上传、解压、创建目录、修改配置、设置开机自启。。。看着午夜的时钟即将指向十二点,我咽了咽口水,下面就只剩下mysql了吧,资料一查,what?mysql不能直接用yum安装?我还得里另外找镜像?得了,爷不伺候您了,拜拜。就当我即将愤怒按下电脑关机键,网页中的Docker映入我的眼帘。强忍着怒气带着好奇点开Docker,什么?世界上还有这种好东西?快速浏览一遍常用指令,重新打开SSH连接,yum一键安装docker,docker pull,docker run。。。不到十分钟我就安装好了全部环境,上传war包和sql文件,打开浏览器输入网址,nice!成功了!看着刚刚到达12位置的分针,心中无限感慨,Docker,幸好有你!
二、Docker概述
上面的故事只是开个玩笑(如有雷同,纯属巧合),下面来介绍一下什么是Docker:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
简单来说,软件提供者能将软件运行环境和软件共同打成一个包,然后发布到docker仓库中(类似于maven仓库),软件使用者只需从仓库下载就能快速启动软件享受服务而不需要配置繁杂的运行环境。docker容器类似于虚拟机的设计又保证了软件不会与外部产生冲突,保证了软件运行期间的稳定,可以说docker是开发者和维护人员的好伙伴。
三、Docker的使用
就拿我用centos7部署java web运行环境来说吧,首先第一步当然是要下载docker了
sudo yum install docker-ce
然后启动和配置开机启动
systemctl start docker
systemctl enable docker
检查是否安装成功
docker -v
配置vi阿里云镜像加速
vi /etc/docker/daemon.json
打不开上面的文件可以创建一个,然后输入
{"registry-mirrors": ["https://fsqbo5wy.mirror.aliyuncs.com"]}
查询看看docker仓库中有没有我们需要的应用
docker search mysql
pull我需要的应用,带上tag标注需要的版本,不带默认最新版
docker pull tomcat
docker pull mysql:5.7.30
等待下载完成后检查是否pull成功
docker images
将pull下来的镜像运行到docker容器中,-d为后台启动,--name为取别名,-p为端口映射(不映射外部无法访问docker容器中的应用)-e为配置一些启动变量
docker run -d --name tomcat -p 8080:8080 tomcat
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30 #这里我mysql的root密码设置为123456
检查是否启动成功
docker ps
然后就能开心的打开浏览器,连接工具测试是否能访问了
当然,也能手动关闭开启容器
docker start tomcat
docker stop tomcat
docker start mysql
docker stop mysql
四、遇到的问题
在用docker安装完tomcat的时候,用浏览器访问8080端口,但是进入首页报404,检查了好久都没发现问题。后来一查资料才知道原来docker安装的tomcat里webapps目录里面是空的,原本有的那些帮助文档都被打包成了webapps.dist文件,我的做法是进入正在运行的tomcat容器里
docker exec -it tomcat /bin/bash
然后删除webapps目录
rm -r webapps
把webapps..dist修改成webapps
mv webapps webapp
退出容器
exit
再次打开浏览器访问,一切都正常啦!
五、使用总结
Docker能给部署带来巨大的便利,减少繁琐的配置,也减少了失误出现的意外情况,在我使用期间就遇到了上面一个问题。不仅如此Docker还有很多非常好用的功能我还没去了解,比如dockerfile等,总的来说,docker真的很强大。
六、参考资料
- 百度百科——Docker
- centos7安装docker——作者:我没有领悟
- DockerHub
- Docker方式启动tomcat,访问首页出现404错误——作者:程序重定义