欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker容器依賴link連接按順序啟動方式

 更新時間:2023年05月18日 14:20:01   作者:神神的蝸牛  
這篇文章主要介紹了Docker容器依賴link連接按順序啟動方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Docker 中的容器一般都會遇到相互之間服務依賴的問題,通過 --link 指定一個或多個依賴容器服務,但啟動的時候卻因為容器內(nèi)的服務啟動的延時不確定,并不能保證所有容器都能成功啟動,于是需要強制按容器內(nèi)的服務順序來啟動容器。

需要一個工具

先下載這個腳本, 然后根據(jù)項目中容器的服務依賴順序配置就可以了, 唯一的問題就是服務都需要有可訪問的端口.

舉個栗子

nginx 依賴 php-fpm 依賴 redis | mysql

那么就倒序啟動, web_up.sh

wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
docker container start my-mysql-8.0 && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'
  • -s: 表示嚴格模式, 若檢測的服務在
  • -t: xx秒 內(nèi)沒有啟動, 則終止后續(xù)所有命令.

這個腳本是在宿主機上運行的, 監(jiān)聽的端口也都是宿主機上的端口, 如: 16033 映射 mysql 容器內(nèi) 3306

也可以用來監(jiān)聽 Docker 服務的啟動狀態(tài):

wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
$wait_for_it -s -t 60 localhost:2375  -- echo 'docker is up ~'      && docker container start my-mysql-8.0    && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'

等 Dockerd 服務啟動后自動按服務順序啟動所有容器.

至于 -t 參數(shù)的時長可以在服務器上先測試一下根據(jù)實際情況再調(diào)整下.

全部正常成功啟動的效果圖

Docker多容器link連接后按順序啟動容器


上面的啟動命令每個 -- 后的所有命令都是一個整體, 前面沒有執(zhí)行成功后面都不會觸發(fā).

再來測試下啟動失敗的情況

當前容器全部已啟動的狀態(tài), 我們關閉其中一個依賴的服務 redis-6.2-19740 然后再執(zhí)行腳本.

docker container stop redis-6.2-19740
wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
$wait_for_it -s -t 60 localhost:2375  -- echo 'docker is up ~'      && docker container start my-mysql-8.0    && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
#$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'

wait-for-it.sh: timeout occurred after waiting 15 seconds for localhost:19740
wait-for-it.sh: strict mode, refusing to execute subprocess

由于 redis-6.2-19740 沒有啟動, 而且使用了 -sstrict mode 因此后續(xù)存在依賴的命令全都不會執(zhí)行了.

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • docker搭建logstash和使用方法詳解

    docker搭建logstash和使用方法詳解

    這篇文章主要介紹了docker搭建logstash和使用方法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 是三種流行的容器工具,它們都用于容器的創(chuàng)建、管理和運行,但它們在設計理念、功能和使用場景上有一些差異,這篇文章主要介紹了Docker、Podman 和 Containerd 三者區(qū)別,需要的朋友可以參考下
    2025-02-02
  • 通過Docker創(chuàng)建CentOS容器的實現(xiàn)步驟

    通過Docker創(chuàng)建CentOS容器的實現(xiàn)步驟

    本文主要介紹了Docker創(chuàng)建CentOS容器,使用文內(nèi)的腳本可以快速創(chuàng)建CentOS 7.8虛擬系統(tǒng)集群,并通過SSH(Secure Shell)遠程工具連接,感興趣的可以了解一下
    2021-11-11
  • 手工制作docker鏡像-包含多個服務ssh+nginx

    手工制作docker鏡像-包含多個服務ssh+nginx

    這篇文章主要介紹了手工制作docker鏡像-包含多個服務ssh+nginx,需要的朋友可以參考下
    2024-07-07
  • docker-compose安裝RabbitMQ及插件操作步驟

    docker-compose安裝RabbitMQ及插件操作步驟

    這篇文章主要為大家介紹了docker-compose安裝RabbitMQ及插件操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    這篇文章主要介紹了docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • docker 實現(xiàn)容器與宿主機無縫調(diào)用shell命令

    docker 實現(xiàn)容器與宿主機無縫調(diào)用shell命令

    這篇文章主要介紹了docker 實現(xiàn)容器與宿主機無縫調(diào)用shell命令的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧
    2021-03-03
  • 詳解docker-compose.yml文件常用模版命令

    詳解docker-compose.yml文件常用模版命令

    這篇文章主要介紹了docker-compose.yml文件常用模版命令,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • Docker綁定端口后仍無法遠程直接訪問的解決方法

    Docker綁定端口后仍無法遠程直接訪問的解決方法

    在Docker中,如果容器的端口綁定錯誤或只綁定到了容器的內(nèi)部IP地址,將導致外部主機無法訪問該端口,所以本文小編給大家介紹了Docker綁定端口后仍無法遠程直接訪問的解決方法,需要的朋友可以參考下
    2024-09-09
  • 利用Docker部署PostgreSQL 12.4主從方式

    利用Docker部署PostgreSQL 12.4主從方式

    這篇文章主要介紹了利用Docker部署PostgreSQL 12.4主從方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論