• Docker复习06——Dockerfile+Docker微服务实战


    Dockerfile

    Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

    构建三步骤

    • 编写Dockerfile文件

    • docker build命令构建镜像

    • docker run 依镜像运行容器实例

    构建过程

    在这里插入图片描述

    在这里插入图片描述

    Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维

    保留字简介

    FROM

    • 当前镜像是基于哪个镜像,第一条必须是from

    MAINTAINER

    • 谁做的

    RUN

    • 在docker build时运行
    • RUN yum -y install vim

    EXPOSE

    • 当前容器对外暴露的端口

    WORKDIR

    • 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
    • ubuntu登入进去 pwd 是 /
    • tomcat登入进去 pwd 是 /usr/local/tomcat

    USER

    • 指定该镜像以什么样的用户去执行,如果都不指定,默认是root

    ENV

    • 设置环境变量
    • 一般和WORKDIR 用 前面ENV定义 后面WORKDIR 取值

    ADD

    • 将宿主机目录下的文件拷贝进镜像且会自动处理uRL和解压tar压缩包
    • COPY+解压

    COPY

    • 类似ADD 拷贝文件和目录到镜像中

    VOLUME

    • 容器卷

    CMD

    • 启动后要干的事情 docker run 执行

    • CMD会被docker run 命令覆盖 只有最后一个命令生效

    • 在这里插入图片描述

    • 加了 /bin/bash 后 不能直接访问8080端口,原因是把之前的覆盖了

    ENTRYPOINT

    • 在这里插入图片描述

    案例

    centos
    
    docker run -it centos镜像id /bin/bash  # 没有vim ifconfig jdk环境
    
    #要求centos具备vim+ifconfig+jdk8
    jdk8.tar.gz
    https://mirrors.yangxingzhen.com/jdk/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    编写Dockerfile

    mkdir myfile
    ll
    # 有jdk.tar.gz包
    
    vim Dockerfile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    FROM centos
    MAINTAINER zzyy<zzyybs@126.com>
     
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
     
    #安装vim编辑器
    RUN yum -y install vim
    #安装ifconfig命令查看网络IP
    RUN yum -y install net-tools
    #安装java8及lib库
    RUN yum -y install glibc.i686
    RUN mkdir /usr/local/java
    #ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
    #配置java环境变量
    ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    ENV PATH $JAVA_HOME/bin:$PATH
     
    EXPOSE 80
     
    CMD echo $MYPATH
    CMD echo "success--------------ok"
    CMD /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    构建

    docker build -t centosjava8:1.5 .
    #注意 有个点
    
    • 1
    • 2
    docker images #查看 发现有这个centosjava8:1.5  镜像了
    docker run -it 镜像id /bin/bash
    pwd 
    /usr/local
    vim 可以用
    ifconfig 可以用
    java -version  可以
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    虚悬镜像

    仓库名 和 标签名都是 的镜像

    mkdir /test
    cd test
    vim Dockerfile
    
    FROM ubuntu
    CMD echo 'action is success'
    
    docker build .
    
    docker images # 发现有 仓库名和标签名都是 的镜像  没啥用 一定要删除
    
    docker images ls -f dangling=true #查看虚悬镜像
    docker image prune #删除虚悬镜像
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Docker微服务实战

    第一步 springboot项目打包 上传

    端口号6001

    mkdir mydocker  
    cd mydocker # 上传到这里
    vim Dockerfile  # 编写
    
    • 1
    • 2
    • 3
    # 基础镜像使用java
    FROM java:8
    # 作者
    MAINTAINER zzyy
    # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名为zzyy_docker.jar
    ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
    # 运行jar包
    RUN bash -c 'touch /zzyy_docker.jar'
    ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
    #暴露6001端口作为微服务
    EXPOSE 6001  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    #构建
    docker build -t zzyy_docker:1.6 .
    docker images
    
    # 运行容器
    docker run -d -p 6001:6001 镜像id
    
    # 访问测试
    ip:6001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

  • 相关阅读:
    leetcode第92场双周赛
    搞定蓝牙——第四章(GATT协议)
    时间复杂度
    239.滑动窗口的最大值
    手把手教你在VM虚拟机上安装windows11
    「 打卡训练 」Fiddler(三) - 抓取http请求
    CSS笔记
    手把手教你语音识别(二)
    【web前端开发】作业四--模拟数据库遍历信息
    Spring BeanDefinition详解
  • 原文地址:https://blog.csdn.net/xixihaha_coder/article/details/127238379