失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

时间:2019-07-07 16:06:06

相关推荐

Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

Dockerfile概述Dockerfile构建过程Dockerfile指令说明实战:构建自己的CentOSCMD和ENTRYPOINT的区别实战:Dockerfile构建Tomcat镜像发布镜像至DockerHub发布镜像至阿里云容器服务

Dockerfile概述

Dockerfile是用来构建Dokcer镜像的文件!命令参数脚本构建步骤 编写一个Dockerfile文件Docker build构建成为一个镜像Docker run运行镜像Docker push发布镜像(DockerHub、阿里云镜像仓库) 很多官方镜像都是基础包,我们通常会自己搭建自己的镜像

Dockerfile构建过程

构建过程会有很多的指令

Dockerfile基础知识 每个保留关键字(指令)都必须是大写字母指令是从上到下依次执行的#表示注释每一个指令都会创建提交一个新的镜像层,并提交!Dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写Dockerfile文件,这个文件十分简单!Docker镜像逐渐成为企业交付的标准,必须要掌握!构建步骤,三步(开发部署运维):Dockerfile构建文件,定义了一切的步骤,源代码Dockerimages:通过Dockerfile构建生成的镜像,就是最终发布和运行的产品Docker容器:容器就是镜像运行起来提供服务的

Dockerfile指令说明

实战:构建自己的CentOS

Docker Hub99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行构建的

mkdir dockerfire#默认的官方CentOS没有一些命令,自己构建一个具有基础命令的CentOS#编写Dockerfile的文件[root@docker dockerfire]# vim mydockerfile FROM centos MAINTAINER pakho<1064981253@>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo "----end----"CMD /bin/bash#通过这个文件构建镜像[root@docker dockerfire]# docker build -f mydockerfile -t mycentos:0.1 .#-f:dockerfile文件路径 -t:镜像名:[tag]Successfully built 391ea92c0b6cSuccessfully tagged mycentos:0.1#测试运行docker run -it mycentos:0.1#ifconfig已经能够使用[root@1af3e35224a6 local]# ifconfig

通过Docker history可以查看镜像构建历史 我们平时拿到一个镜像后,可以研究它是怎么做的

docker images[root@docker dockerfire]# docker history 391ea92c0b6cIMAGECREATED CREATED BY SIZECOMMENT391ea92c0b6c 8 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B a56b4745d241 8 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B cd5c8b221c1d 8 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B d96bd4a3dd37 8 minutes ago /bin/sh -c #(nop) EXPOSE 800B 6ca540fbb09a 8 minutes ago /bin/sh -c yum -y install net-tools 24.9MB 032bc69f6df0 8 minutes ago /bin/sh -c yum -y install vim 60.7MB b6da798d1552 9 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B c13af64a7d3e 9 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B fff65a8bbee7 9 minutes ago /bin/sh -c #(nop) MAINTAINER pakho<10649812… 0B 300e315adb2f 6 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing>6 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing>6 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB

CMD和ENTRYPOINT的区别

测试CMD命令

[root@docker dockerfire]# vim dockerfile-cmd-test#启动CentOS执行ls -aFROM centosCMD ["ls","-a"]#执行构建命令[root@docker dockerfire]# docker build -f dockerfile-cmd-test -t cmdtest .#构建完成后通过run运行,发现ls -a命令生效[root@docker dockerfire]# docker run 3a20dce5f782#追加一个命令,发现报错[root@docker dockerfire]# docker run 3a20dce5f782 -l#cmd的清理下-l 替换了CMD ["1s","-a"]命令,-l不是命令所以报错!

测试ENTRYPOINT命令 追加!

[root@docker dockerfire]# vim dockerfile-cmd-entrypointFROM centosENTRYPOINT ["ls","-a"]#执行构建命令[root@docker dockerfire]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .#通过run运行,能够正常执行ls -a命令[root@docker dockerfire]# docker run 23bc748e7f4b#我们的追加命令是直接拼接在ENTRYPOINT的后面[root@docker dockerfire]# docker run 23bc748e7f4b -l

Dokcerfile中很多命令及其相似,我们需要了解他们的区别

实战:Dockerfile构建Tomcat镜像

准备镜像文件,Tomcat压缩包,jdk压缩包

[root@docker tomcat]# lsapache-tomcat-9.0.48.tar.gz jdk-8u291-linux-x64.tar.gz

编写Dockerfile文件 官方推荐命名Dockerfilebuild会自动寻找这个文件,就不需要-f指定文件了!

[root@docker tomcat]# touch readme.txt[root@docker tomcat]# vim Dockerfile #编写Dockerfile文件FROM centos MAINTAINER pakho<1064981253@> #作者名+邮箱COPY readme.txt /usr/local/readme.txt#拷贝目录下的自述文件至容器内部/usr/local#使用ADD命令会自动解压ADD jdk-8u291-linux-x64.tar.gz /usr/local/#添加jdk安装包ADD apache-tomcat-9.0.48.tar.gz /usr/local/ #添加tomcat安装包RUN yum -y install vim#安装vimENV MYPATH /usr/local#设置进入容器时的工作目录WORKDIR $MYPATH ENV JAVA_HOME /usr/local/jdk1.8.0_291#设置jdk变量ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.48 #设置tomcat变量ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.48ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080#暴露端口8080#启动tomcat 还希望展示日志CMD /usr/local/apache-tomcat-9.0.48/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.48/bin/logs/catalina.out#构建镜像[root@docker tomcat]# docker build -t diytomcat .#启动镜像[root@docker tomcat]# docker run -d -p 9090:8080 --name pakhotomcat2 -v /home/heyihao/tomcat/test:/usr/local/apache-tomcat-9.0.48/webapps/test -v /home/heyihao/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.48/logs diytomcat#进入容器[root@docker tomcat]# docker exec -it 863d7fa2cdeb /bin/bash#宿主机测试[root@docker ~]# curl localhost:9090

//发布项目,由于做了卷挂载,直接在本地编写项目即可[root@docker test]# mkdir WEB-INF//编辑xml文件[root@docker test]# vim WEB-INF/web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"version="2.5"></web-app>//编写一个jsp文件[root@docker test]# vim index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>Hello,pakho</title></head><body>Hello World!<br/><%System.out.println("----my test web logs----");%></body></html>//追踪日志[root@docker tomcatlogs]# tailf catalina.out

测试完成,能够正常访问

发布镜像至DockerHub

/确定账户登录在服务器上提交镜像docker login登录完成后就可以提交镜像了,就是一步docker push提交的时候也是按照层级进行提交的!

#登录[root@docker ~]# docker login -u pakho611Password:#输入dockerhub密码Login Succeeded #登录成功#为镜像修改为规范的镜像[root@docker ~]# docker tag diytomcat pakho611/diytomcat:1.0[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEpakho611/diytomcat 1.0 30a5aabdb38b 9 hours ago 646MB#提交镜像docker push 注册用户名/镜像名/版本号[root@docker ~]# docker push pakho611/diytomcat:1.01.0: digest: sha256:a6a41622f98e52eab9b56dd9bda8a62c4ebe49ddeeeb32b8dad17ec5839e19ef size: 1373

/r/pakho611/diytomcat/tags?page=1&ordering=last_updated

发布镜像至阿里云容器服务

登录阿里云找到容器镜像服务第一次登录需要创建仓库根据官方提示进行登陆 参考官方文档即可

[root@docker ~]# docker login --username=作恶多端evil -Login Succeeded[root@docker ~]# docker tag diytomcat -/pakho/diytomcat:1.0[root@docker ~]# docker push -/pakho/diytomcat:1.0The push refers to repository [-/pakho/diytomcat]bc32333b4176: Pushed ecf186c3bcaa: Pushed f4783a52c44c: Pushed a089274b1442: Pushed 2653d992f4ef: Pushed 1.0: digest: sha256:a6a41622f98e52eab9b56dd9bda8a62c4ebe49ddeeeb32b8dad17ec5839e19ef size: 1373

如果觉得《Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。