• docker覆盖镜像默认命令之docker entrypoint


    文章目录


    1、前置

    1、entrypoint命令介绍
    2、实际使用
    3、注意事项

    2、entrypoint

    Dockerfile:

    1. FROM java:8
    2. MAINTAINER chaim
    3. EXPOSE 8080
    4. ............
    5. ............
    6. ENTRYPOINT ["./entrypoint.sh"]
    7. #ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/powerBank.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    直白一点说, entrypoint命令就是覆盖ENTRYPOINT(第6行或者第7行)命令的. 官方话说就是覆盖默认入口点
    官网介绍地址: https://docs.docker.com/engine/reference/run/:
    The ENTRYPOINT of an image is similar to a COMMAND because it specifies what executable to run when the container starts, but it is (purposely) more difficult to override. The ENTRYPOINT gives a container its default nature or behavior, so that when you set an ENTRYPOINT you can run the container as if it were that binary, complete with default options, and you can pass in more options via the COMMAND. But, sometimes an operator may want to run something else inside the container, so you can override the default ENTRYPOINT at runtime by using a string to specify the new ENTRYPOINT.

    可执行文件
    在这里插入图片描述

    3、实际使用

    我们以镜像: bladex/sentinel-dashboard 为列子进行操作一下

    ①: 确认镜像设置的ENTRYPOINT是单命令还是可执行文件

    按标准来说, ENTRYPOINT是要配置可执行文件的, 这样别人可以配置对应的参数, 比如JVM等数据, 也方便使用者自行定义
    第一种确认方式, 就是直接在dockerhub查看:
    在这里插入图片描述

    在这里插入图片描述
    第二种使用命令:

    # 直接查看镜像详情
    docker inspect bladex/sentinel-dashboard:1.7.1
    
    • 1
    • 2

    在这里插入图片描述

    ②: 准备可执行文件

    改个端口: 8898 改个项目名: sentinel

    sentinel就是执行的jar包, 直接docker exec -it *** bash, 就能找到, 自己在使用的需要确认一下自己的实际情况

    docker-sentinel.sh

    #!/bin/bash
    
    java -Djava.security.egd=file:/dev/./urandom -Dserver.port=8898 -Dcsp.sentinel.api.port=8719 -Dcsp.sentinel.dashboard.server=localhost:8898 -Dproject.name=sentinel -jar /bladex/sentinel/app.jar
    
    • 1
    • 2
    • 3

    ③: 运行镜像

    docker run 方式:

    docker run --name sentinel -p 8858:8898 -v "E:/Docker/sentinel/sh/:/docker/sentinel/" --entrypoint "/docker/sentinel/docker-sentinel.sh" -d  bladex/sentinel-dashboard:1.7.1
    
    • 1

    这个是docker-compose方式的:

    # docker-compose方式(一样, 采用了覆盖操作, environment就没必要了)
    # Compose 版本 Version 2支持更多的指令。Version 1将来会被弃用。
    version: "3"
    
    # 定义服务
    services:
    
      # 为project定义服务
      sentinel:
        image: bladex/sentinel-dashboard:1.7.1
        ports:
          - 8858:8898
        # 挂载
        volumes:
          - "E://Docker/sentinel/sh/:/docker/sentinel/"
        # 覆盖默认入口点。
        entrypoint: /docker/sentinel/docker-sentinel.sh
        restart: always
        container_name: sentinel
        privileged: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ④: 效果对比

    不覆盖效果:

    docker run --name sentinel -p 8858:8858 -d  bladex/sentinel-dashboard:1.7.1
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    覆盖效果:

    docker run --name sentinel -p 8858:8898 -v "E:/Docker/sentinel/sh/:/docker/sentinel/" --entrypoint "/docker/sentinel/docker-sentinel.sh" -d  bladex/sentinel-dashboard:1.7.1
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    4、注意事项

    1、挂载也可以指定到文件:

    -v "E:/Docker/sentinel/sh/docker-sentinel.sh:/docker/sentinel/docker-sentinel.sh"
    
    • 1

    2、 –entrypoint必须是可执行文件 , 下面这种就是有问题的

    docker run --name sentinel -p 8858:8898 -v "E:/Docker/sentinel/sh/:/docker/sentinel/" --entrypoint "java -Dserver.port=8858 -Dproject.name=sentinel -jar /bladex/sentinel/app.jar" -d  bladex/sentinel-dashboard:1.7.1
    
    • 1

    在这里插入图片描述

    3、docker-compose介绍: https://docs.docker.com/compose/compose-file/compose-file-v3/

    Dockerfile介绍:https://docs.docker.com/engine/reference/builder/

  • 相关阅读:
    65、内网安全-域环境&工作组&局域网探针方案
    Docker详解(一)
    Android build.gradle读取String中文件及gradle.properties数据
    macOS - 使用VLC
    每月固定日期提醒app用哪个?手机上可固定日期提醒的工具选择哪一个
    ES之倒排索引
    LeetCode-N 皇后(C++)
    企业商标信息查询API的优势和应用实例分析
    十秒钟搞懂linux的软硬链接细节图解和目录结构文件的基本命令
    制造业数据标准化的优势分析
  • 原文地址:https://blog.csdn.net/m0_67403013/article/details/126327637