完整的docker打包流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完整的docker打包流程相关的知识,希望对你有一定的参考价值。
参考技术A 把外网服务器上的docker搬到内网使用时,报了两个错误,外网容器到tar包都没问题,在内网使用tar包的时候报了两个错误cannot connect to the Docker daemon at is the docker daemon running
starting container process caused: "exec: "/bin/sh": stat /bin/sh: no such file or directory
发现是tar包到镜像的问题,我用的命令是docker load --input xxx.tar
正确的是docker load < xxx.tar
现总结整个docker打包搬运流程如下:
docker save -o electric_know_1.31_0.tar electric_know_1.31_0:latest
sudo docker run -d --name=wang --privileged=true --networ=khost -p 20000:22 9a5d1fa93203 /usr/sbin/init
sudo docker exec -it wang /bin/bash
jenkins+docker+docker-compose完整发版流程
首先搭建jenkins+maven+nexus这一套自动化打包工具,并配置好相应配置,这里就不再赘述了。
其次,搭建好docker集群和私有仓库,以及安装好docker-compose工具,配置好相应的yaml配置文件
以下是增加新工程流程
1,在jenkins中新建maven或者其他工程。
2,需要jenkins中配置,相关信息,如svn路径,maven打包的参数,以及打包成功后需要执行的命令
以上是打包成功后需要执行的命令,需要注意的有以上4个地址,1,2,是把当前工程名和镜像名称这些变量放到dockerrc文件中,在以后的自动部署中要使用
3是dockerbuild构建镜像的文件夹,4,构建镜像的名称。往下就是构建镜像,推送到私有仓库,最后执行自动化脚本运行容器,最后注意工程的workspace里面的ROOT.WAR的路径,不是完全都一样的,根据每个工程名字和路径修改。
3,自动化脚本,就是以上的命令最后的deloyjava.sh
载入dockerrc变量,先执行远程node集群预下载镜像,提高容器启动速度,定义docker-compose.yaml文件位置,更新版本号,最后启动容器。
4,需要建立的几个文件夹
首先根据jenkins中执行的命令去建立文件夹,以上的命令中,jenkins的workspace自然不用建立了,因为它会自动创建,但是
APP_DIR=/data/ifengsite/app_path/$JOB_BASE_NAME 这个需要建立,根据工程名字建立,这个文件夹是dockerbuild创建镜像的文件夹。
文件夹里东西,必有的肯定是Dockerfile文件,以及一些脚本,和需要放入的文件等等
5,需要修改的文件
需要修改hosts文件,因为在上面的自动部署脚本中会调用hosts文件去预先 下载镜像,所以定义工程名主机组去预先下载镜像
这是示例
需要修改docker-compose.yaml,增加新工程的容器启动参数和命令,已经映射端口,内存等等。
这是示例
最后容器启动成功。
以上只是简单的流程,具体 出问题了,还需要仔细排查,根据jenkins输出提示和docker输出提示。
以上是关于完整的docker打包流程的主要内容,如果未能解决你的问题,请参考以下文章
docker-compose 完整打包发布, 多服务,多节点SPRING CLOUD ,EUREKA 集群
docker安装运行nginxtomcat,springBoot项目用Dockerfile打包镜像到docker运行