Dockerfile的关键字就不一一列举了
直接上干货
公网情况下
Dockerfile
#依赖的父镜像 FROM openjdk:8 #作者 MAINTAINER mjz #容器暴露的端口 即jar程序中运行的端口 EXPOSE 8080 #设置时区 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #设置编码 ENV LANG C.UTF-8 #执行shell脚本 CMD ["sh","-c","/home/data/start.sh"]
CMD中执行的是java启动脚本,其中路径:/home/data是docker容器内部路径,启动时容器与宿主机进行映射
start.sh
java -Dfileencoding=utf-8 -jar /home/data/jar包名称.jar>>/home/data/logs.log
其中jar包所在地址和日志打印地址也是容器内部地址,启动时容器与宿主机进行映射
build.sh
#编译Dockerfile文件 docker build -t java . #启动容器 docker run -d --restart always --name java -p 8080:8080 -v /home/java_backend:/home/data java
delete.sh
期间如果构建出错,需要停止容器、删除容器、删除镜像,为了偷懒,写了删除的脚本
#停止容器 docker stop java #删除容器 docker rm java #删除镜像 docker rmi java
正常情况下这时docker容器已经起来了,可以输入命令查看docker日志,也可以查看jar运行时的日志
docker运行日志命令
#查看容器日志 docker logs 容器名 #查看容器实时日志 docker logs -f 容器名
jar包运行日志(在start.sh脚本中将jar包日志输出到了logs.log,所以命令如下)
tail -100f logs.log
更新jar包
只需要把宿主机jar包删除,或者最新的jar包改成在start.sh中的jar包名称,再重启docker容器即可
重启容器命令
docker restart java
也可以把重启容器的命令写到restart.sh脚本中
重要提醒,以上文件和jar包必须再同一目录下!!!
重要提醒,以上文件和jar包必须再同一目录下!!!
重要提醒,以上文件和jar包必须再同一目录下!!!
内网情况下
准备条件:需要将提前准备好的tar镜像放在宿主机下
将进行打包成tar文件命令
docker save -o java.tar java
其中java是镜像名,java.tar是要打包成的镜像包
然后将java.tar进行载入,命令如下
docker load -i java.tar
最后输入如下命令,查看是否载入成功
docker images
具体操作可以查看:docker进阶(docker容器创建和迁移)
Dockerfile
#依赖的父镜像 FROM java #作者 MAINTAINER mjz #容器暴露的端口 即jar程序中运行的端口 EXPOSE 8080 #设置时区 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #设置编码 ENV LANG C.UTF-8 #执行shell脚本 CMD ["sh","-c","/home/data/start.sh"]
与公网不同,内网FROM依赖的是刚刚载入的镜像
start.sh 同上
java -Dfileencoding=utf-8 -jar /home/data/jar包名称.jar>>/home/data/logs.log
build.sh
#编译Dockerfile文件 docker build -t java_backend . #启动容器 docker run -d --restart always --name java_backend -p 8080:8080 -v /home/java_backend:/home/data java_backend
注意:容器启动时一定要用最新build出来的镜像,即java_backend,之前载入的镜像不一定适用于当前的情况(因为之前的镜像有可能也是Dockerfile构建出来的,这里Dockerfile文件重新写了),不然查询容器日志会报如下错误
然后查看镜像,发现多了一个,
这时已经可以把之前载入的删掉了,或者留着也行,以防止后面执行delete.sh时的误操作
delete.sh
期间如果构建出错,需要停止容器、删除容器、删除镜像,为了偷懒,写了删除的脚本
#停止容器 docker stop java_backend #删除容器 docker rm java_backend #删除镜像 docker rmi java_backend
正常情况下这时docker容器已经起来了,可以输入命令查看docker日志,也可以查看jar运行时的日志
docker运行日志命令
#查看容器日志 docker logs 容器名 #查看容器实时日志 docker logs -f 容器名
jar包运行日志(在start.sh脚本中将jar包日志输出到了logs.log,所以命令如下)
tail -100f logs.log
更新jar包
只需要把宿主机jar包删除,或者最新的jar包改成在start.sh中的jar包名称,再重启docker容器即可
重启容器命令
docker restart java_backend
也可以把重启容器的命令写到restart.sh脚本中
如此,内网情况下构建容器就完成了
补充
docker inspect 容器名
这个命令可以查看容器的配置信息,如下图
修改配置就是在宿主机上找到如下地址进行修改
还没有评论,来说两句吧...