分享

DockerFile构建及发布自己的镜像

 丰收书屋 2022-12-07 发布于北京

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

MAINTAINER liyan<81442990@qq.com>ENV MYPATH /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,BROADCAST,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 org.label-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
    MAINTAINER liyan<81442990@qq.com>COPY readme.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_202
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.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 https://docs./engine/reference/commandline/login/#credentials-storeLogin Succeeded #登陆成功

登陆完毕就可以提交镜像了

#push自己的镜像到DockerHub[root@server tomcat]# docker push tomcat_liyan:1.0The push refers to repository [docker.io/library/tomcat_liyan]5c912d14cdcd: Preparing 
6aa1323ed74d: Preparing 
d2b4f469bfa6: Preparing 
d924484dbba3: Preparing 
0683de282177: Preparing

阿里云镜像发布:

小结:
在这里插入图片描述

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多