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行)命令的. 官方話說就是覆蓋默認入口點
官網(wǎng)介紹地址: 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.
可執(zhí)行文件

3、實際使用
我們以鏡像: bladex/sentinel-dashboard 為列子進行操作一下
①: 確認鏡像設置的ENTRYPOINT是單命令還是可執(zhí)行文件
按標準來說, ENTRYPOINT是要配置可執(zhí)行文件的, 這樣別人可以配置對應的參數(shù), 比如JVM等數(shù)據(jù), 也方便使用者自行定義第一種確認方式, 就是直接在dockerhub查看:


第二種使用命令:
# 直接查看鏡像詳情 docker inspect bladex/sentinel-dashboard:1.7.1

②: 準備可執(zhí)行文件
改個端口: 8898 改個項目名: sentinel
sentinel就是執(zhí)行的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必須是可執(zhí)行文件 , 下面這種就是有問題的
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內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Dockerfile 中 VOLUME 與 docker -v 的區(qū)別說明
這篇文章主要介紹了Dockerfile 中 VOLUME 與 docker -v 的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Docker本地部署Drupal并實現(xiàn)公網(wǎng)訪問的詳細步驟
Drupal是使用PHP語言編寫的開源內容管理框架(CMF),它由內容管理系統(tǒng)(CMS)和PHP開發(fā)框架(Framework)共同構成,這篇文章主要給大家介紹了關于Docker本地部署Drupal并實現(xiàn)公網(wǎng)訪問的詳細步驟,需要的朋友可以參考下2023-12-12
Docker發(fā)布鏡像到DockerHub與阿里云容器
本文主要介紹了Docker發(fā)布鏡像到DockerHub與阿里云容器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07

