一、什么是docker
在以前部署项目的时候,环境差异是一个很大的问题,一个项目在我电脑上能运行,在你电脑上却不行,这是最常见问题。
docker就是用来解决这个问题的,当你把一个项目放到另一台计算机时,他使用的是另一个环境,但是因为环境不同,就会产生很多问题。
docker能够把一整个项目(jar+(Redis MySQL jdk))一起打包形成一个镜像,放到docker仓库里面,然后只需在服务器上去仓库下载镜像,直接运行,项目就算部署好了。运行镜像会形成一个docker容器,这个容器就像一台小型的计算机,但是里面没有一台完整的计算机那么复杂,他只包含能运行这个项目的一些东西。而且容器与容器直接是相互隔离的,不会相互影响。
所以我们就可以把docker容器比喻为一台简化版的虚拟机。
二、docker的安装
安装这种事,当然是直接百度啦,菜鸟教程-CentOS docker安装
当然,我还是推荐使用国内 daocloud 一键安装命令因为我使用手动安装的时候时候,安装好启动的时候一直显示没有docker这个服务。
如果小伙伴们也碰到这个问题可以:
- 升级CentOS内核
yum update
- 重启Linux
shutdown -r now
- 一键安装docker
curl -sSL https://get.daocloud.io/docker | sh
三 、配置阿里云镜像加速
如果你使用的是阿里云服务器,可以配置阿里云镜像加速,这样我们去拉取镜像的时候,速度会更快一些。
-
登录阿里云官网
-
控制台
-
容器镜像服务
-
执行下面命令
四、阿里云服务器安全组设置
如果要从自己的电脑访问你的阿里云服务器中的docker容器,有两关要过,一个是阿里云服务器的安全组,当然如果是虚拟机就没有这个了,另一个是服务器的防火墙,那我们就先看看如何开放阿里云服务器安全组的端口吧
- 跟上面步骤一样先进入控制台
- 进入云服务ESC
- 进入实例管理
4、进入配置规则
- 手动添加
根据自己需求填写
5、保存,重启服务器
五 、Linux开放防火墙端口命令
-
通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
-
通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
-
再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
-
如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
-
开放3306:再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。
六、部署Tomcat
- 拉取tomcat镜像
docker pull tomcat:9.0
- 启动运行
-d //后台运行
-p //需要对外暴露的端口,只有对外暴露端口别才能访问,就是启动监听,当别人访问这个接口的时候能够做出反映
--name //容器的名字
docker run -d -p 3355:8080 --name tomcat01 tomcat
-
通过电脑浏览器访问
访问“服务地址+端口号”,这里对外暴露的端口号是3355,发现无法访问到,报404 -
进入容器
docker exec -it tomcat01 /bin/bash
发现问题:
1、Linux命令太少了
2、没有webapps
阿里云原因,默认是最小的镜像,所有不必要的都剔除掉,保证最小可运行的环境
3、可以将webapps.dist中的文件全部负责到webapps中
cp -r webapps.dist/* webapps
- 再次通过浏览器访问,发现可以访问到Tomcat的页面
七、项目部署
我们说的项目部署当然不是将项目放到刚刚部署的Tomcat里面,前面的只是准备工作,部署的Tomcat只是验证我们的所有准备工作有没有做完,如果能正常访问到Tomcat页面,说明我们的项目部署到容器中也能访问。
那接下来就正式的来部署项目
- 将项目打成jar包
因为jar是内置Tomcat的,能够直接运行,所以我们选择将项目打包成jar包
- 创建一个Dockerfile文件,没有文件后缀
- 将下面内容写进文件
#先拉取一个java8的jdk
FROM java:8
#将所有的jar包copy成app.jar,只是为了简化jar的名字而已,没有什么作用
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8802
#java -jar 运行jar包的代码
ENTRYPOINT ["java","-jar","/app.jar"]
- 在服务器上创建一个新的文件夹
我是在home目录下建了一个idea文件夹
cd /home
mkdir idea
cd /idea
- 用xftp将jar包和Dockerfile文件放到idea文件夹下
如果不会用xftp软件的话就自己百度学习啦 - 将jar包制作成镜像
docker build -t rnight . //注意最后那个点是需要的哦,Rnight是镜像名,可以设置成自己的
看到
Successfully built bde9e7d4830a
Successfully tagged registration-system:latest
就是成功了
- 启动镜像
docker run -d -p 8080:8080 --name mysystem rnight000
- 用浏览器去访问,就能访问到啦,要注意你暴露的端口一定也要在阿里云安全组和防火墙中开放哦,不然是访问不到的
八、感谢阅读
使用docker部署项目就是这样啦,但是这只是一些实践的内容,还有一些docker的理论内容会在后续发布,希望大家可以关注。
关于文章的内容,每个人理解不一样,有对有错,希望有错的地方有大佬能够指正,一起学习一起进步啦!
转载:https://blog.csdn.net/m0_46394124/article/details/115570443