博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker发布项目的一般性步骤
阅读量:4103 次
发布时间:2019-05-25

本文共 2209 字,大约阅读时间需要 7 分钟。

准备

准备服务器一台或者多台。本文以一台为例操作,如果多台,步骤类似,注意配置的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
来源:知乎
作者:白天不懂夜的黑

转载地址:http://bdusi.baihongyu.com/

你可能感兴趣的文章
linux驱动工程师成长之路(五)LCD背光控制RT9379B
查看>>
android 电容屏(二):驱动调试之基本概念篇
查看>>
android 电容屏(三):驱动调试之驱动程序分析篇
查看>>
android 物理按键
查看>>
android用户输入系统详细说明
查看>>
linux input输入子系统分析《一》:初识input输入子系统
查看>>
linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析
查看>>
linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
查看>>
linux input输入子系统分析《四》:input子系统整体流程全面分析
查看>>
linux 设备驱动初学(一)
查看>>
linux设备驱动初学(二)
查看>>
__asm__ __volatile__ 嵌入式内嵌汇编语法解构
查看>>
设备驱动概述
查看>>
lcd驱动解析(一)
查看>>
lcd驱动解析(二)
查看>>
关于设备号的思考
查看>>
中断触发流程
查看>>
中断触发流程二
查看>>
中断触发流程三(中断控制器)
查看>>
“手把手教你学linux驱动开发”OK6410系列之01---模块编程
查看>>