国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

docker entrypoint入口文件詳解

2024-09-01 13:56:02
字體:
供稿:網(wǎng)友

在編寫Dockerfile的時候,包含一個entrypoint配置,該配置的作用是在容器啟動之前做一些初始化配置,或者一些自定義的配置等。通常是一個腳本,然后在腳本里配置相關(guān)預(yù)定義項(xiàng)。這篇文檔就詳細(xì)說一說entrypoint入口文件的編寫技巧。

下面以mysql官方鏡像中的entrypoint文件docker-entrypoint.sh為例,文件地址為:

docker-entrypoint.sh

set -e

你寫的每個腳本都應(yīng)該在文件開頭加上set -e, 這句語句告訴bash如果任何語句的執(zhí)行結(jié)果不是true則應(yīng)該退出. 這樣的好處是防止錯誤像滾雪球般變大導(dǎo)致一個致命的錯誤, 而這些錯誤本應(yīng)該在之前就被處理掉. 如果要增加可讀性, 可以使用set -o errexit, 它的作用與set -e相同

set -o pipefail

設(shè)計(jì)用途同上, 就是希望在執(zhí)行錯誤之后立即退出, 不要再向下執(zhí)行了. 而 -o pipefail 的作用域是管道, 也就是說在 Linux 腳本中的管道, 如果前面的命令執(zhí)行出了問題, 應(yīng)該立即退出

shopt -s nullglob

在使用 Linux 中的通配符時 * ?等 如果沒有匹配到任何文件, 不會報 No such file or directory 而是將命令后面的參數(shù)去掉執(zhí)行

if [ "${1:0:1}" = '-' ]; then...

這是一個判斷語句, 在官方文件中, 上一行已經(jīng)給出了注釋: if command starts with an option, prepend mysqld

這個判斷語句是 ${1:0:1} 意思是判斷 $1(調(diào)用該腳本的第一個參數(shù)), 偏移量0(不偏移), 取一個字符(取字符串的長度)

如果判斷出來調(diào)用這個腳本后面所跟的參數(shù)第一個字符是-中橫線的話, 就認(rèn)為后面的所有字符串都是 mysqld 的啟動參數(shù)

上面的這個操作類似于 Python 的字符串切片

set -- mysqld "$@"

在上面判斷完第一個參數(shù)是-開頭之后, 緊接著就執(zhí)行了 set -- mysqld "$@" 這個命令. 使用了 set -- 的用法. set --會將他后面所有以空格區(qū)分的字符串, 按順序分別存儲到$1, $2, $3 變量中, 其中新的$@為set --后面的全部內(nèi)容

舉例來說: bash docker-entrypoint.sh -f xxx.conf

在這種情況下, set -- mysqld "$@" 中的 $@ 的值為 -f xxx.conf

當(dāng)執(zhí)行完 set -- mysqld "$@" 這條命令后:

  • $1=mysqld
  • $2=-f
  • $3=xxx.conf
  • $@=mysqld -f xxx.conf

可以看到, 當(dāng)執(zhí)行 docker-entrypoint.sh腳本的時候后面加了 -x形式的參數(shù)之后, $@的值發(fā)生的改變, 在原有$@值的基礎(chǔ)之上, 在前面又預(yù)添加了 mysqld 命令

exec "$@"

幾乎在每個docker-entrypoint.sh腳本的最后一行, 執(zhí)行的都是 exec "$@"命令

這個命令的意義在于你已經(jīng)為你的鏡像預(yù)想到了應(yīng)該有的調(diào)用情況, 當(dāng)實(shí)際使用鏡像的人執(zhí)行了你沒有預(yù)料到的可執(zhí)行命令時, 將會走到腳本的這最后一行, 去執(zhí)行用戶新的可執(zhí)行命令

情況判斷

上面直接說了腳本的最后一行, 在之前的腳本中, 需要充分的去考慮你自己的腳本可能會被調(diào)用的情況. 還是拿 MySQL 官方的 dockerfile 來說, 他判斷以下情況:

  • 開頭是 - , 認(rèn)為是參數(shù)的情況
  • 開頭是 mysqld, 且用戶 id 為0 (root 用戶) 的情況
  • 開頭是 mysqld 的情況
  • 判斷完自己應(yīng)用的所有調(diào)用形態(tài)之后, 最后應(yīng)該加上exec "$@" 命令兜底

${mysql[@]}

Shell 中的數(shù)組, 直接執(zhí)行 ${mysql[@]} 會把這個數(shù)組當(dāng)做可執(zhí)行程序來執(zhí)行

mysql=( mysql --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" )echo ${mysql[1]}-- output: mysqlecho ${mysql[2]}--output: --protocol=socketecho ${mysql[3]}--output: -urootecho ${mysql[4]}--output: -hlocalhostecho ${mysql[@]}--output: mysql --protocol=socket -uroot -hlocalhost --socket=

exec gosu mysql "$BASH_SOURCE" "$@"

這里的 gosu 命令, 是 Linux 中 sudo 命令的輕量級”替代品”

gosu 是一個 golang 語言開發(fā)的工具, 用來取代 shell 中的 sudo 命令. su 和 sudo 命令有一些缺陷, 主要是會引起不確定的 TTY, 對信號量的轉(zhuǎn)發(fā)也存在問題. 如果僅僅為了使用特定的用戶運(yùn)行程序, 使用 su 或 sudo 顯得太重了, 為此 gosu 應(yīng)運(yùn)而生.

gosu 直接借用了 libcontainer 在容器中啟動應(yīng)用程序的原理, 使用 /etc/passwd 處理應(yīng)用程序. gosu 首先找出指定的用戶或用戶組, 然后切換到該用戶或用戶組. 接下來, 使用 exec 啟動應(yīng)用程序. 到此為止, gosu 完成了它的工作, 不會參與到應(yīng)用程序后面的聲明周期中. 使用這種方式避免了 gosu 處理 TTY 和轉(zhuǎn)發(fā)信號量的問題, 把這兩個工作直接交給了應(yīng)用程序去完成

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产成+人+亚洲+欧美+综合| 人人澡人人爽| 最近中文字幕mv2018在线高清| 日本不卡影院| 福利在线视频导航| 午夜国产福利在线| 黄色片av在线| 中文字幕久热在线精品| 国产福利电影在线观看| 在线一区二区三区精品| h网址在线观看| 免费电影网站在线视频观看福利| 狠狠操视频网| 在线中文av| 国产精品自拍亚洲| 在线黄色国产电影| 欧美在线中文| 制服丝袜中文字幕在线观看| 黄网址在线永久免费观看| 国产精品久久一区二区三区不卡| 午夜在线视频| 国产小视频在线高清播放| 国产youjizz在线| 国产中文字幕在线看| 6699久久国产精品免费| 国产乱在线观看视频| 精精国产xxxx视频在线动漫| 国产在线视频福利| 亚洲精品aaaa精品| 国产高清一区二区三区视频| 成在在线免费视频| 黄色三级视频在线观看| 性欧美精品xxxx| 在线观看午夜av| 91免费日韩| 国产福利视频在线| 99热在线免费播放| 黄色网址在线免费播放| а√最新版在线天堂| 99精品老司机免费视频| 精品一区二区在线欧美| 国产福利小视频在线观看| 国产一级大片| 午夜国产视频| 国产成人午夜电影| 国产福利在线免费观看| 国产精品jvid在线观看| 精品日韩av| eeuss影影院www在线播放| 天天干天天摸| 免费a级毛片在线观看| 四虎一区二区三区| 男女午夜视频在线观看| 狠狠狠狠狠狠操| 国产美女在线看| 国产一区二区三区四区尤物| 中文字幕在线视频观看| 中文字幕第一页av| 国产盗摄一区二区| 亚洲欧美综合乱码精品成人网| 亚洲色婷婷综合开心网| 精品中文字幕不卡在线视频| 国内a∨免费播放| 国产网友自拍电影在线| 国产成人精品综合网站| 亚洲精品aaaa| 国产在线视频精品视频免费看| 国产麻豆精品一区二区三区v视界| 国产一二在线观看| 亚洲视频网站在线| 国产老肥熟xxxx在线观看| 国产日产精品久久久久久婷婷| av免费在线一区二区三区| 欧美日韩**字幕一区| 国产偷倩在线播放| 欧美亚洲另类在线观看| 国产福利图片| 国产美女被遭强高潮免费网站| 国产黄色片中文字幕| 六月天色婷婷| 精品国产一区二区三区不卡在线| 免费视频中文字幕| 国产三级在线看| www在线视频| 中文字幕2019第三页| 国产精品一品| 欧美日韩在线视频免费观看| 在线中文字幕观看| 国产色在线播放| 国产嫩草在线视频| 人xxxx性xxxxx欧美| 国产高清av在线| 五月婷婷视频在线观看| 黄色av电影在线播放| 在线观看午夜av| 在线中文av| 91最新在线| 中文字幕在线视频不卡| 狠狠综合久久久综合| 欧美婷婷久久五月精品三区| 亚洲欧美自拍另类| 夜夜爽夜夜操| 四虎a级欧美在线观看| 99福利在线| 亚洲精品一线| www.eeuss影院| 青青草免费在线观看| 欧美专区日韩| 国自产拍在线网站网址视频| 久久五月精品中文字幕 | 亚洲永久免费网站| 97在线超碰| 伊人网站在线| baoyu777.永久免费视频| 先锋影音av中文字幕| 欧美色第一页| 国产一级黄色| 99综合精品久久| 日本亚洲欧美| 最近中文字幕在线中文视频| 国产精品第八页| 在线中文字幕视频| 牛牛热在线视频| 天堂资源在线中文| 国产区视频在线| 在线视频1区2区| 天天插天天色| 中文字幕第一页在线| 伊人中文字幕在线| 国产精品偷乱一区二区三区| 91嫩草在线播放| 交视频在线观看国产| 国产福利在线视频| 狠狠色丁香婷婷| 2021天堂中文幕一二区在线观| www.狠狠操.com| 国产盗摄一区二区| 日本a级黄色| 国产大学生粉嫩无套流白浆| 欧美性xxxx交| 国产超级va在线视频| 免费av在线| 亚洲尤物在线视频| 国产精品美女一区二区三区四区| 人成在线免费视频| 国产成人综合美国十次| 高清在线观看av| 亚洲精品影院在线| 精品欧美日韩一区二区| 最近中文字幕在线中文视频 | 亚洲夜夜综合| 91免费日韩| 国产丝袜视频在线播放| 久久一本精品| 亚洲精品影视在线| 在线中文免费视频| 99在线视频影院| 樱花草在线观看www| 国产黄色小视频| 国产精品入口麻豆电影| 国产乱精品一区二区三区| 四虎网站在线观看| 亚洲社区在线| 青青草免费在线视频| 青青草视频免费在线观看| 亚洲激情丁香| 伊人中文字幕在线| 日本视频在线观看一区二区三区| 在线视频色在线| 国产黄色免费电影| 国产深夜视频在线观看| 国产污视频在线| 国产精品剧情一区二区三区| 2018中文字幕在线| av网站在线播放| 欧美xxxxx性| 国产男女猛烈无遮挡免费视频| 国内a∨免费播放| 国产黄色在线观看| av丝袜在线| 国产免费高清| 国产成人亚洲欧美电影| gogo高清在线播放免费| 超碰在线97国产| 国产午夜精品一区理论片| 精品无人区乱码1区2区3区免费| v天堂福利视频在线观看| 久久99亚洲网美利坚合众国 | 国产系列电影在线播放网址| 国产精品jvid在线观看| 在线播放黄色网址| 国产精品亚洲色图| 一本大道久久精品| 最好看更新中文字幕| 在线观看国产视频| 国产特黄在线| 毛片视频免费观看| 国产嫩草在线视频| 香蕉视频网站在线播放| 国产女主播在线观看|