docker-compose如何實現(xiàn)滾動更新
docker-compose實現(xiàn)滾動更新
平時我們在用docker-compose更新服務(wù)的時候,當(dāng)我們敲下docker-compose up -d service
回車之后到服務(wù)成功啟動起來之前的這段時間,該service是不會提供服務(wù)的。
這還是建立在服務(wù)正常啟動的情況下,如果服務(wù)沒有正常啟動,那該service停止服務(wù)的時間會更長。
有沒有一種可以在更新的時候不打擾原本服務(wù)的運行,在更新結(jié)束后替換調(diào)原本的服務(wù)呢?
思路
命令行輸入docker-compose up --help
回車我們會發(fā)現(xiàn):
相信看到這,大家或多或少都有點思路了吧~那就是我們的更新服務(wù)的時候,容器數(shù)量設(shè)置成2個,因為原本該服務(wù)已經(jīng)有一個容器在跑了,這個時候docker會再生成一個新的容器用來跑新的服務(wù),當(dāng)新的服務(wù)起來的時候,我們可以停止并刪除原來老的容器,這樣就實現(xiàn)了滾動更新。
步驟
1.加載要更新的鏡像包
docker load < service.tar
2.啟動服務(wù)(設(shè)置兩個運行容器)
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 # 查看運行的容器 docker ps -a # 刪除指定鏡像 docker rmi 鏡像ID # 刪除全部鏡像 docker rmi -f $(docker images -qa) # 啟動容器 docker start 容器ID/容器名 # 停止容器 docker stop 容器ID/容器名 # 重啟容器 docker restart 容器ID/容器名 # 刪除容器 docker rm 容器ID/容器名 # 刪除鏡像 docker rmi 鏡像ID/鏡像名 # 構(gòu)建鏡像 docker build -t 鏡像名:tag名 . # 拉取在線鏡像 docker pull 鏡像名 # 導(dǎo)出鏡像 docker save -o images.tar 鏡像名:tag名 # 后面支持輸入多個 # 導(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è)置容器自啟動 新建容器 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
# 啟動全部容器 docker-compose up -d # 啟動指定容器 docker-compose up -d 服務(wù)名(如mysql) # 停止容器 docker-compose stop 容器ID # 刪除容器(刪除前必須關(guān)閉容器,執(zhí)行stop) docker-compose rm nginx # 啟動被停止的容器 docker-compose start 容器ID # 更新容器 docker-commpose up -d --build # 停止所有容器并清除 docker-compose down # 重啟nignx容器 docker-compose restart nginx
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Skywalking?Docker單機環(huán)境搭建過程
這篇文章主要介紹了Skywalking?Docker單機環(huán)境搭建,本次搭建是基于MySQL進(jìn)行持久化,因此需要提前準(zhǔn)備好一個MySQL容器,需要的朋友可以參考下2024-02-02CentOS 7安裝Docker服務(wù)詳細(xì)過程
這篇文章主要為大家介紹了CentOS 7安裝Docker服務(wù)詳細(xì)過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11教你使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過程
很多朋友不太清楚使用Docker搭建gitlab社區(qū)漢化版的過程,總是容易出現(xiàn)錯誤,今天小編抽空給大家分享使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過程,一起看看吧2021-09-09Docker容器定時備份數(shù)據(jù)庫并發(fā)送到指定郵箱(設(shè)計思路)
這篇文章主要介紹了Docker容器定時備份數(shù)據(jù)庫并發(fā)送到指定郵箱,文中寫了一下shell腳本,邏輯也很簡單,當(dāng)前時間與啟動時間相同時,則調(diào)用sendmail函數(shù)發(fā)送郵件,具體腳本跟隨小編一起看看吧2022-01-01Linux搭建Docker環(huán)境的詳細(xì)過程(最新推薦)
Docker從17.03版本之后分為CE(Community Edition: 社區(qū)版)和EE(Enterprise Edition: 企業(yè)版),相對于社區(qū)版本,企業(yè)版本強調(diào)安全性,但需付費使用,這里我們使用社區(qū)版本即可,這篇文章給大家介紹Linux搭建Docker環(huán)境的詳細(xì)過程,感興趣的朋友一起看看吧2025-04-04