准备

准备服务器一台或者多台。本文以一台为例操作,如果多台,步骤类似,注意配置的ip和端口号即可。

服务器操作系统需要是linux。本文中服务器的操作系统为CentOS 7.6 64位。

一个调皮的项目。本文中的项目是基于spring cloud框架的多个微服务组成的项目。

XShell上传文件工具。

清醒的头脑。

安装docker

升级本地yum包

yum update

安装docker

yum installdocker

设置开机自动启动

systemctlenabledocker

启动docker服务

service dockerstart

配置文件

此步骤的目的是在本地的开发环境中直接远程创建镜像。所以不是必须步骤,大家可以尝试此方法。如果不进行此步骤,则可以用XShell直接上传jar包至服务器,再登录服务器进行部署。

值得说明的是,此方式又一个重大漏洞:因为服务器必须开放2375端口才能被远程开发机访问,所以有可能被植入恶意程序。本人的生产环境刚开始就有过这样的教训。当时服务器被注入了一个运行于docker中的挖矿程序导致每几个小时资源耗尽不得不重启。所以这种方式只适用于测试环境,绝对不能用于生产环境。

修改docker配置文件

#vi/usr/lib/systemd/system/docker.service

进入编辑模式后,将ExecStart这一行后面加上

-Htcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

改完后如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

这里就写4个0,保存后退出。

重新加载配置文件

systemctl daemon-reload

重启docker:

service docker restart

输入netstat -anp|grep 2375 显示docker正在监听2375端口,输入curl 127.0.0.1:2375/info 显示一大堆信息,证明远程api就弄好了。

本地开发环境配置:windows系统环境变量中新建DOCKER_HOST,值为tcp://10.100.74.220:2375(你改成你自己的docker服务器ip地址)。

在代码中的各模块的pom文件中加入以下:

com.spotifydocker-maven-plugin${project.name}:${project.version}${project.basedir}/src/main/dockerfalse${project.build.directory}${project.build.finalName}.jar

在各模块的src/main下面新建docker包,在src/main/docker下面新建Dockerfile与runboot.sh文件

Eclipse中打开maven build输入

cleanpackagedocker:build

等待成功或者打开dos窗口,即cmd命令行,进入到你要编译的项目文件夹下输入

mvn clean package docker:build –DskipTests

等待成功。

使用dockerfile发布

dockerbuild -txxx:1.0.0.-fDockerfile

发布项目

查看所有镜像是否上传成功

dockerimagels

运行容器(-p后面跟映射端口)

dockerrun-d--net=host-p 8761:8761 eureka-server:1.0.0dockerrun-d--net=host-p 8762:8762 config-server:1.0.0dockerrun-d--net=host-p 8763:8763 redis-service:1.0.0 dockerrun-d--net=host-p 8764:8764 rabbit-service:1.0.0

其他命令

停止所有的container,这样才能够删除其中的images

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令

docker rm $(docker ps -a -q)

查看当前有些什么images

docker images

删除images,通过image的id来指定删除谁

docker rmi

想要删除untagged images,也就是那些id为的image的话可以用

docker rmi $(docker images |grep"^<none>"|awk"{print $3}")

删除全部imag

docker rmi$(docker images -q)

总结

docker上手还是比较容易,部署的步骤也比较简单,生产环境运行了一年左右还没有发现什么问题,而且基于spring cloud框架的服务扩展性非常强。以后有机会再写写我用spring cloud的感受

免费分享Java教程,需要的后台私信我即可

原文:https://zhuanlan.zhihu.com/p/73129141

来源:知乎

作者:白天不懂夜的黑

docker发布项目的一般性步骤相关推荐

  1. Docker java项目发布/开发环境搭建

    Docker java项目发布/开发环境搭建 线上部署项目/开发环境搭建命令大全 关闭windows10 指定应用 安装Docker 安装 docker-compose 关于docker容器导致硬盘耗 ...

  2. 如何使用Docker发布SpringBoot项目

    1.目标 Dockerfile文件用来构建Docker镜像,它由一系列命令和参数构成,接下来演示一下如何使用Docker发布SpringBoot项目. 2.准备 a.SpringBoot项目 该项目名 ...

  3. linux上运行项目,发布项目到 Linux 上运行 Core 项目

    目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行 ...

  4. Docker Compose 项目

    二.Docker Compose 项目 compose项目简介 compose项目来源于之前的Fig项目,使用python代码编写.compose项目主要用于编排部署基于docker的应用.本身与do ...

  5. (四)docker部署项目

    docker部署项目 基于ubuntu16.4+python3的flask web项目,使用gunicorn启动,项目运行时需要加载一些动态链接库,并且项目在运行时需要多个后缀为.vpo的授权文件,项 ...

  6. docker 发布应用时添加 git revision

    概要 实施步骤 获取 git revision 前端 git revision 注入 后端 git revision 注入 概要 docker 发布应用时, 将 git revision 注入到应用中 ...

  7. .NET Core使用skiasharp文字头像生成方案(基于docker发布)

    一.问题背景 目前.NET Core下面针对于图像处理的库微软并没有集成,在.NET FrameWork下我们已经习惯使用System.Drawing类库做简单的图像处理,到了.NET Core下一脸 ...

  8. AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史

    AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史 发布场景:windows上虚拟机 CentOS(7.8)环境 创建AspNetCore3.1 项目,加入Docker支持 首 ...

  9. 利用云服务器发布项目

    前言 平时开发我会写一些小demo,我自己觉得有用的会集中起来形成一个项目,本来想利用gitee的gitee page直接部署出来,但后面了解了下,它只支持官网之类的静态页面,无法与后台数据交互,想要 ...

最新文章

  1. linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用
  2. python的用途实例-python 星号(*)的多种用途
  3. 如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构
  4. extmail从数据库导出通讯录
  5. how does gateway framework treat default system flag in customizing
  6. ASP.NET Core 集成测试中模拟登录用户的一种姿势
  7. 【POJ - 3026】Borg Maze(bfs预处理 + 最小生成树,建图)
  8. mysql 压力测试知乎_MySQL查看SQL语句执行效率和mysql几种性能测试的工具
  9. 4G终端-基站-核心网 信令流与数据流
  10. 如何快速上手一个项目
  11. 对于以太网口作为下一条路由的理解
  12. php文章详情页排版,WordPress如何自定义文章详情页模板
  13. 卷积神经网络 CNN 学习
  14. GM7150,振芯科技,视频解码器,CVBS转BT656/601,QFN32,替换TVP5150/CJC5150
  15. 从 Quora 的 187 个问题中学习机器学习和 NLP
  16. 网络代理服务器的设计与实现
  17. 高炉的3D数字孪生体,线上操控高炉作业
  18. 千亿流量拦截控制处理技术-Nginx(安装 命令 路由匹配 负载均衡 常用配置)
  19. sesame芝麻开门operrdf研究2
  20. 【Linux】Linux操作的一些基本指令

热门文章

  1. studio虚拟机乱码问题
  2. svn: Aborting commit: '/aaa/bbb/xxxxxxxx' remains in conflict解决方法
  3. 2021北京交通大学计算机专硕复试经验分享
  4. 荔枝fm电脑版 v1.5.2 官方版
  5. 启动http监听失败、添加URL保留项失败,错误6句柄无效
  6. 计算机排名的985大学排名,2019年985大学名单排名,985大学详解(附全榜单)
  7. 学习音乐对计算机专业有什么益处,音乐爱好者学习音乐史能得到哪些益处
  8. 视频监控与视频编解码技术
  9. 地震勘探基础(十四)之地震反演
  10. arm指令集2(转)