docker覆蓋鏡像默認(rèn)命令之docker?entrypoint詳解
1、前置
1、entrypoint命令介紹
2、實(shí)際使用
3、注意事項(xiàng)
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"]
直白一點(diǎn)說, entrypoint命令就是覆蓋ENTRYPOINT(第6行或者第7行)命令的. 官方話說就是覆蓋默認(rèn)入口點(diǎn)
官網(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、實(shí)際使用
我們以鏡像: bladex/sentinel-dashboard 為列子進(jìn)行操作一下
①: 確認(rèn)鏡像設(shè)置的ENTRYPOINT是單命令還是可執(zhí)行文件
按標(biāo)準(zhǔn)來說, ENTRYPOINT是要配置可執(zhí)行文件的, 這樣別人可以配置對應(yīng)的參數(shù), 比如JVM等數(shù)據(jù), 也方便使用者自行定義第一種確認(rèn)方式, 就是直接在dockerhub查看:
第二種使用命令:
# 直接查看鏡像詳情 docker inspect bladex/sentinel-dashboard:1.7.1
②: 準(zhǔn)備可執(zhí)行文件
改個(gè)端口: 8898 改個(gè)項(xiàng)目名: sentinel
sentinel就是執(zhí)行的jar包, 直接docker exec -it *** bash, 就能找到, 自己在使用的需要確認(rèn)一下自己的實(shí)際情況
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
③: 運(yùn)行鏡像
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
這個(gè)是docker-compose方式的:
# docker-compose方式(一樣, 采用了覆蓋操作, environment就沒必要了) # Compose 版本 Version 2支持更多的指令。Version 1將來會被棄用。 version: "3" # 定義服務(wù) services: # 為project定義服務(wù) sentinel: image: bladex/sentinel-dashboard:1.7.1 ports: - 8858:8898 # 掛載 volumes: - "E://Docker/sentinel/sh/:/docker/sentinel/" # 覆蓋默認(rèn)入口點(diǎn)。 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、注意事項(xiàng)
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/
到此這篇關(guān)于docker覆蓋鏡像默認(rèn)命令之docker entrypoint的文章就介紹到這了,更多相關(guān)docker entrypoint內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker利用busybox創(chuàng)建基礎(chǔ)鏡像(base image)
今天小編就為大家分享一篇關(guān)于Docker利用busybox創(chuàng)建基礎(chǔ)鏡像(base image),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12Windows Docker部署Jenkins的實(shí)現(xiàn)步驟
Jenkins是一款開源的持續(xù)集成工具,廣泛用于項(xiàng)目開發(fā),能提供自動構(gòu)建測試部署等功能,本文主要介紹了Windows Docker部署Jenkins的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-03-03docker的iptables策略詳解和用戶自定義策略的添加方式
在Docker環(huán)境下,直接修改iptables以允許特定主機(jī)訪問指定端口時(shí),需要考慮Docker自身的iptables規(guī)則,Docker通過修改nat表的PREROUTING鏈和filter表的FORWARD鏈來處理外部對Docker容器的訪問,繞過了filter表的INPUT鏈2024-10-10Docker 教程之?dāng)?shù)據(jù)管理詳細(xì)介紹
這篇文章主要介紹了Docker 教程之?dāng)?shù)據(jù)管理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01