docker-compose如何實(shí)現(xiàn)滾動(dòng)更新
docker-compose實(shí)現(xiàn)滾動(dòng)更新
平時(shí)我們?cè)谟胐ocker-compose更新服務(wù)的時(shí)候,當(dāng)我們敲下docker-compose up -d service回車(chē)之后到服務(wù)成功啟動(dòng)起來(lái)之前的這段時(shí)間,該service是不會(huì)提供服務(wù)的。
這還是建立在服務(wù)正常啟動(dòng)的情況下,如果服務(wù)沒(méi)有正常啟動(dòng),那該service停止服務(wù)的時(shí)間會(huì)更長(zhǎng)。
有沒(méi)有一種可以在更新的時(shí)候不打擾原本服務(wù)的運(yùn)行,在更新結(jié)束后替換調(diào)原本的服務(wù)呢?
思路
命令行輸入docker-compose up --help回車(chē)我們會(huì)發(fā)現(xiàn):

相信看到這,大家或多或少都有點(diǎn)思路了吧~那就是我們的更新服務(wù)的時(shí)候,容器數(shù)量設(shè)置成2個(gè),因?yàn)樵驹摲?wù)已經(jīng)有一個(gè)容器在跑了,這個(gè)時(shí)候docker會(huì)再生成一個(gè)新的容器用來(lái)跑新的服務(wù),當(dāng)新的服務(wù)起來(lái)的時(shí)候,我們可以停止并刪除原來(lái)老的容器,這樣就實(shí)現(xiàn)了滾動(dòng)更新。
步驟
1.加載要更新的鏡像包
docker load < service.tar
2.啟動(dòng)服務(wù)(設(shè)置兩個(gè)運(yùn)行容器)
docker-compose up -d --scale service=2 --no-recreate
ps:這里的service是你的服務(wù)名
3.停止并刪除原本服務(wù)容器
docker stop containerId docker rm containerId
ps:這里的containerId是你老服務(wù)的容器id
docker和docker-compose常用命令
docker
# 查看鏡像列表 docker images # 查看運(yùn)行的容器 docker ps -a # 刪除指定鏡像 docker rmi 鏡像ID # 刪除全部鏡像 docker rmi -f $(docker images -qa) # 啟動(dòng)容器 docker start 容器ID/容器名 # 停止容器 docker stop 容器ID/容器名 # 重啟容器 docker restart 容器ID/容器名 # 刪除容器 docker rm 容器ID/容器名 # 刪除鏡像 docker rmi 鏡像ID/鏡像名 # 構(gòu)建鏡像 docker build -t 鏡像名:tag名 . # 拉取在線(xiàn)鏡像 docker pull 鏡像名 # 導(dǎo)出鏡像 docker save -o images.tar 鏡像名:tag名 # 后面支持輸入多個(gè) # 導(dǎo)入鏡像 docker load < images.tar # 查看容器的相關(guān)信息 docker inspect 容器ID/容器名 # 查看容器日志 docker logs 容器ID/容器名 # 查看所有容器 docker ps -a # 容器復(fù)制文件 docker cp 容器ID/容器名:/opt /opt # 容器拷到本地 docker cp /opt 容器ID/容器名:/opt # 本地拷到容器 # 登錄容器 docker exec -it 容器ID/容器名 /bin/bash # 設(shè)置容器自啟動(dòng) 新建容器 docker run --restart=always 容器ID/容器名 # 已存在的容器配置自啟 docker update --restart=always 容器ID/容器名 # 取消容器自啟 docker update --restart=no 容器ID/容器名 # 批量設(shè)置容器自啟 docker update --restart=always $(docker ps -aq)
docker-compose
# 啟動(dòng)全部容器 docker-compose up -d # 啟動(dòng)指定容器 docker-compose up -d 服務(wù)名(如mysql) # 停止容器 docker-compose stop 容器ID # 刪除容器(刪除前必須關(guān)閉容器,執(zhí)行stop) docker-compose rm nginx # 啟動(dòng)被停止的容器 docker-compose start 容器ID # 更新容器 docker-commpose up -d --build # 停止所有容器并清除 docker-compose down # 重啟nignx容器 docker-compose restart nginx
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別
這篇文章主要介紹了dockerfile中ENTRYPOINT與CMD的結(jié)合使用,大家都知道CMD 與 ENTRYPOINT都是用于指定啟動(dòng)容器執(zhí)行的命令,那么他們倆有什么區(qū)別呢,本文給大家詳細(xì)介紹,需要的朋友可以參考下2021-08-08
在Docker中安裝OnlyOffice的詳細(xì)過(guò)程記錄
OnlyOffice是一款免費(fèi)且開(kāi)源的Office協(xié)作辦公套件,支持桌面端和移動(dòng)端等多平臺(tái),下面這篇文章主要給大家介紹了關(guān)于如何在Docker中安裝OnlyOffice的詳細(xì)過(guò)程記錄,需要的朋友可以參考下2024-01-01
Docker如何給Springboot項(xiàng)目動(dòng)態(tài)傳參的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker如何給Springboot項(xiàng)目動(dòng)態(tài)傳參的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Docker暴露2375端口導(dǎo)致服務(wù)器被攻擊問(wèn)題及解決方法
這篇文章主要介紹了Docker暴露2375端口導(dǎo)致服務(wù)器被攻擊問(wèn)題及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Docker部署Microsoft Sql Server詳細(xì)步驟
大家好,本篇文章主要講的是Docker部署Microsoft Sql Server詳細(xì)步驟,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12
詳解私有 Docker Registry 部署方案及用戶(hù)手冊(cè)
本文主要介紹了詳解私有 Docker Registry 部署方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04

