docker覆盖镜像默认命令之docker entrypoint详解

 更新时间:2023年10月09日 15:17:55   作者:普通网友  
entrypoint命令就是覆盖ENTRYPOINT命令的,本文给大家介绍了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"]

直白一点说, 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

②: 准备可执行文件

改个端口: 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

③: 运行镜像

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

这个是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

④: 效果对比

不覆盖效果:

docker run --name sentinel -p 8858:8858 -d  bladex/sentinel-dashboard:1.7.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

在这里插入图片描述

在这里插入图片描述

4、注意事项

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

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

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

在这里插入图片描述

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

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

到此这篇关于docker覆盖镜像默认命令之docker entrypoint的文章就介绍到这了,更多相关docker entrypoint内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker开启远程访问的实现方式

    Docker开启远程访问的实现方式

    这篇文章主要介绍了Docker开启远程访问的实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Windows使用docker打开新窗口error解决办法

    Windows使用docker打开新窗口error解决办法

    这篇文章主要介绍了Windows使用docker打开新窗口error解决办法,十分简单,需要的朋友可以参考下。
    2017-09-09
  • 详解Docker守护进程的配置及日志

    详解Docker守护进程的配置及日志

    这篇文章主要介绍了详解Docker守护进程的配置及日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Dockerfile 中 VOLUME 与 docker -v 的区别说明

    Dockerfile 中 VOLUME 与 docker -v 的区别说明

    这篇文章主要介绍了Dockerfile 中 VOLUME 与 docker -v 的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用Docker部署todo任务管理器的实现

    使用Docker部署todo任务管理器的实现

    本文介绍使用Docker部署Todo任务管理器的全过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Docker 镜像分层机制的深度实践​

    Docker 镜像分层机制的深度实践​

    本文主要介绍了Docker 镜像分层机制的深度实践​,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • Docker本地部署Drupal并实现公网访问的详细步骤

    Docker本地部署Drupal并实现公网访问的详细步骤

    Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,这篇文章主要给大家介绍了关于Docker本地部署Drupal并实现公网访问的详细步骤,需要的朋友可以参考下
    2023-12-12
  • Docker发布镜像到DockerHub与阿里云容器

    Docker发布镜像到DockerHub与阿里云容器

    本文主要介绍了Docker发布镜像到DockerHub与阿里云容器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • docker部署mysql+phpmyadmin的3种方式

    docker部署mysql+phpmyadmin的3种方式

    本文介绍了三种访问phpmyadmin的方法:link、network和docker-compose.yml,docker-compose.yml文件内容为:打开浏览器,输入localhost:8080即可访问phpmyadmin界面,帐号密码都是root
    2024-12-12
  • Docker容器搭建本地私有仓库详情

    Docker容器搭建本地私有仓库详情

    这篇文章主要介绍了Docker容器搭建本地私有仓库详情,Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了
    2022-08-08

最新评论