DockerFile构建及发布自己的镜像

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DockerFile构建及发布自己的镜像
DockerFile
DockerFile介绍
docfile是用来构建docker镜像的文件(命令参数脚本)
构建步骤
1.编写一个dockerfile文件
2.docker build 构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像
1.DockerHub
2.阿里云镜像仓库
会发现很多官方的镜像都是基础包,很多功能都没有,我们通常自己搭建自己所需要的镜像
DockerFile的构建过程
基础知识:
•每个保留字(指令)都必须是大写字母
•执行的顺序是从上到下
•#表示注释
•每一个指令都会创建提交一个新的镜像层,并提交
DockerFile是面向开发的,我们以后要发布项目,做镜像就需要编写dockerfile文件,十分简单~
Docker镜像逐渐成为了企业交付的标准,必须要掌握!
DockerFile:构建镜像的文件、定义了一切步骤、源代码
DockerImages:通过DockerFile构建生成的一个镜像,最终要发布和运行的产品
DockerContainer:容器就是镜像运行起来提供服务的
DockerFile的指令
FROM #基础镜像,一切从这里开始构建MAINTAINER #镜像作者,姓名+邮箱RUN #镜像构建的时候需要运行的命令ADD #添加镜
像所要的文件WORKDIR #镜像的工作目录VOLUME #挂载的目录EXPOSE #暴露端口配置(和-p是一个道理)CMD #指定这个容器启动的时候要运行的命令(只有最后一个会生效,可被替代)ENTRYPOINT #指定这个容器启动的时候要运行的命令(可以追加命令)ONBUILD #当构建一个被继承Dockerfile 这时候就会运行ONBUILD的指令(触发指令)COPY #类似ADD,将我们的文件拷贝到镜像中ENV #构建的时候设置环境变量
实战测试:构建自己的centOS
DockerHub中99%的镜像都是从FROM scratch这个基础镜像开始的,然后配置添加所需要的文件和配置来进行构建的
创建一个自己的centos
#编写dockerfile文件[root@server home]# mkdir dockerfile[root@server home]# cd dockerfile/[root@server dockerfile]# vim mydockerfile-centos[root@server dockerfile]# cat mydockerfile-
centos FROM centos
MAINTAINERliyan<***************>ENVMYPATH/usr/ local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATHCMD echo '-------end-------
'CMD /bin/bash#通过这文件,构建镜像#命令:docker build -f dockerfile文件路径 -t 镜像名:版本号 .[root@server dockerfile]# docker build -f mydockerfile-centos -t mycentos:1.0 .Successfully built 247573ccd8d4
Successfully tagged mycentos:1.0#测试运行[root@server dockerfile]# docker run -
it mycentos:1.0[root@741b91824561 local]# pwd/usr/local
#进来的目录为dockerfile内设置的工作目录#并且添加的vim以及net-tools命令也可以使用了[root@741b91824561 local]# ifconfigeth0: flags=4163<UP,BRO ADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255. 255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#查看当前镜像的构建历史[root@server dockerfile]# docker history 247573ccd8d4IMAGE CREATED CREATED BY SIZE COMMENT 247573ccd8d4 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' '/bin… 0B f7a28350697b 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' 'echo… 0B 3ff8f723a31e 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' 'echo… 0B a9a89c508953 11 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B 6c976f6dc66e 11 minutes ago /bin/sh -c yum -y install net-tools
24MB 58cbcd04b65d 11 minutes ago /bin/sh -c yum -y install vim 59.8MB 5311c677a6c5 11 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B 28e696f53720 11 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B c5f8aebdbe3b 11 minutes ago /bin/sh -c #(nop) MAINTAINER liyan<81442990… 0B 470671670cac 4 months ago /bin/sh -c #(nop) CMD ['/bin/bash'] 0B <missing> 4 months ago /bin/sh -c #(nop) LABEL bel-schema.sc… 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:aa54047c80ba30064… 237MB
实战测试2:
制作Tomcat镜像
1.准备镜像文件:
Tomcat压缩包
jdk压缩包
2.编写dockerfile文件
官方命名Dockerfile,build时会自动寻找这个文件,就不需要-f 制定了!
FROM centos
MAINTAINERliyan<***************>COPYreadme.txt/ usr/local/readme.txt
ADD jdk-8u202-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.35.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_20 2
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/t
ools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$ CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-
9.0.35/bin/startup.sh && tail -F /usr/local/apache-tomcat-
9.0.35/logs/catalina.out
3.构建镜像
[root@server tomcat]# docker build -t tomcat_ly .
4.启动镜像
docker run -d -p 9090:8080 --name liyanTomcat -
v /home/tomcat/mouny_test:/usr/local/apache-tomcat-
9.0.35/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.35/logs tomcat_ly
5.访问测试
6.发布项目(由于做了卷挂载,我们可以直接在本地写项目就可以发布了)
发布自己的镜像
DockerHub发布:
[root@server tomcat]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a Docker registry. If no server is specified, the default is defined by the daemon. Options: -p, --password string Password --password-stdin Take the password from stdin -u, --username string Username================================== ===========[root@server tomcat]# docker login -u
lidongyu0816Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See /engine/reference/commandline/login/#credentials-storeLogin Succeeded #登陆成功
登陆完毕就可以提交镜像了
#push自己的镜像到DockerHub[root@server tomcat]# docker push tomcat_liyan:1.0 The push refers to repository [docker.io/library/tomcat_liyan]5c 912d14cdcd: Preparing
6aa1323ed74d: Preparing
d2b4f469bfa6: Preparing
d924484dbba3: Preparing
0683de282177: Preparing
阿里云镜像发布:
小结:。

相关文档
最新文档