小言_互联网的博客

docker从入门到项目部署

238人阅读  评论(0)

一、什么是docker

在以前部署项目的时候,环境差异是一个很大的问题,一个项目在我电脑上能运行,在你电脑上却不行,这是最常见问题。

docker就是用来解决这个问题的,当你把一个项目放到另一台计算机时,他使用的是另一个环境,但是因为环境不同,就会产生很多问题。

docker能够把一整个项目(jar+(Redis MySQL jdk))一起打包形成一个镜像,放到docker仓库里面,然后只需在服务器上去仓库下载镜像,直接运行,项目就算部署好了。运行镜像会形成一个docker容器,这个容器就像一台小型的计算机,但是里面没有一台完整的计算机那么复杂,他只包含能运行这个项目的一些东西。而且容器与容器直接是相互隔离的,不会相互影响。

所以我们就可以把docker容器比喻为一台简化版的虚拟机。

二、docker的安装

安装这种事,当然是直接百度啦,菜鸟教程-CentOS docker安装

当然,我还是推荐使用国内 daocloud 一键安装命令因为我使用手动安装的时候时候,安装好启动的时候一直显示没有docker这个服务。

如果小伙伴们也碰到这个问题可以:

  1. 升级CentOS内核
 yum update
  1. 重启Linux
shutdown -r now
  1. 一键安装docker
curl -sSL https://get.daocloud.io/docker | sh

三 、配置阿里云镜像加速

如果你使用的是阿里云服务器,可以配置阿里云镜像加速,这样我们去拉取镜像的时候,速度会更快一些。

  1. 登录阿里云官网

  2. 控制台

  3. 容器镜像服务

  4. 执行下面命令

四、阿里云服务器安全组设置

如果要从自己的电脑访问你的阿里云服务器中的docker容器,有两关要过,一个是阿里云服务器的安全组,当然如果是虚拟机就没有这个了,另一个是服务器的防火墙,那我们就先看看如何开放阿里云服务器安全组的端口吧

  1. 跟上面步骤一样先进入控制台
  2. 进入云服务ESC
  3. 进入实例管理

    4、进入配置规则
  4. 手动添加
    根据自己需求填写

5、保存,重启服务器

五 、Linux开放防火墙端口命令

  1. 通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。

  2. 通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。

  3. 再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

  4. 如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。

  5. 开放3306:再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。

六、部署Tomcat

  1. 拉取tomcat镜像
docker pull tomcat:9.0
  1. 启动运行
-d      //后台运行
-p      //需要对外暴露的端口,只有对外暴露端口别才能访问,就是启动监听,当别人访问这个接口的时候能够做出反映
--name  //容器的名字
docker run -d -p 3355:8080 --name tomcat01 tomcat
  1. 通过电脑浏览器访问
    访问“服务地址+端口号”,这里对外暴露的端口号是3355,发现无法访问到,报404

  2. 进入容器

docker exec -it tomcat01 /bin/bash
发现问题:
1、Linux命令太少了
2、没有webapps
阿里云原因,默认是最小的镜像,所有不必要的都剔除掉,保证最小可运行的环境
3、可以将webapps.dist中的文件全部负责到webapps中
cp -r webapps.dist/* webapps
  1. 再次通过浏览器访问,发现可以访问到Tomcat的页面

七、项目部署

我们说的项目部署当然不是将项目放到刚刚部署的Tomcat里面,前面的只是准备工作,部署的Tomcat只是验证我们的所有准备工作有没有做完,如果能正常访问到Tomcat页面,说明我们的项目部署到容器中也能访问。
那接下来就正式的来部署项目

  1. 将项目打成jar包
    因为jar是内置Tomcat的,能够直接运行,所以我们选择将项目打包成jar包
  2. 创建一个Dockerfile文件,没有文件后缀
  3. 将下面内容写进文件
#先拉取一个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"]
  1. 在服务器上创建一个新的文件夹
    我是在home目录下建了一个idea文件夹
cd /home
mkdir idea
cd /idea
  1. 用xftp将jar包和Dockerfile文件放到idea文件夹下

    如果不会用xftp软件的话就自己百度学习啦
  2. 将jar包制作成镜像
docker build -t rnight .   //注意最后那个点是需要的哦,Rnight是镜像名,可以设置成自己的


看到
Successfully built bde9e7d4830a
Successfully tagged registration-system:latest
就是成功了

  1. 启动镜像
 docker run -d -p 8080:8080 --name mysystem rnight000 
  1. 用浏览器去访问,就能访问到啦,要注意你暴露的端口一定也要在阿里云安全组和防火墙中开放哦,不然是访问不到的

八、感谢阅读

使用docker部署项目就是这样啦,但是这只是一些实践的内容,还有一些docker的理论内容会在后续发布,希望大家可以关注。
关于文章的内容,每个人理解不一样,有对有错,希望有错的地方有大佬能够指正,一起学习一起进步啦!


转载:https://blog.csdn.net/m0_46394124/article/details/115570443
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场