Docker學習筆記6 容器的版本公升級

2021-09-29 13:50:58 字數 1450 閱讀 5333

版本公升級分為兩部分,一部分是資料庫服務的公升級,一部分是其他服務的公升級。

1、當然,首先要判斷是否需要公升級,我沒想到更好的辦法,我是根據docker映象的tag來判斷的,tag可以作為版本號,通過比較以安裝的映象的tag和要安裝的版本號比較即可得知是否需要公升級。

(1)查詢某個映象的tag

declare tag=$(docker images | grep '映象名' | awk )  

docker images | grep '映象名' | awk 的意思是,查詢docker images列表中包含某個字串的映象,並返回列表的第二列即tag列。

(2)比較版本號大小

if [ -z "$" ]; then  

#tag為空說明沒裝docker,走安裝流程.  

elif [[ "$" < "最新版本" ]]; then  

#走公升級流程  

fi  

2、其他服務的公升級比較簡單,只需要銷毀容器和映象,重新構建即可。

(1)銷毀容器,在docker-compose.yml所在目錄下執行:

docker-compose down  

(2)刪除映象

docker rmi -f $(docker images | grep athena | awk )  

(3)重新構建映象並執行容器,在docker-compose.yml所在目錄下執行

docker-compose up -d  

3、資料庫的公升級,我自己琢磨的,不清楚是不是有更好的方案。

步驟:(1)將公升級指令碼拷貝到mysql容器中

(2)執行公升級指令碼

下面分別來說一下(本例中資料庫容器名稱為mysql-server):

(1)將公升級指令碼拷貝到mysql容器中

docker cp 要拷貝的檔案路徑 容器名:要拷貝到容器裡面對應的路徑

在本例中:

docker cp upgrade.sql mysql-server:/usr/local/work  

docker cp upgrade.sh mysql-server:/usr/local/work  

(2)執行公升級指令碼

在docker-compose.yml檔案目錄下執行:

docker-compose exec 容器名 命令

在本例中:

docker-compose exec mysql-server bash /usr/local/work/upgrade.sh  

upgrade.sh:

mysql -uroot -p$mysql_root_password << eof  

source /usr/local/work/upgrade.sql  

eof  

ps:由於mysql容器資料庫的資料是放在宿主機檔案系統的,所以mysql容器的銷毀或建立甚至mysql映象的重新構建都不會影響資料,容器重新執行後資料庫依然能正常使用。

Docker學習筆記 Docker容器

docker利用容器執行應用,容器是從映象建立的執行例項,每個容器都是相互隔離的。映象是唯讀的,容器在啟動的時候在其上建立了一層可讀寫層。啟動乙個容器有兩種方法,一種是從映象建立乙個容器並執行,另一種是重新啟動處於終止狀態的容器。使用docker run命令從映象建立並啟動乙個容器。使用docker...

Docker學習筆記 容器的連線

當我們學會了使用映象和容器後,我們需要能夠連線到容器,比如我們在自己的伺服器上部署了自己的應用,我們怎麼連線到這個應用呢?網路埠對映 首先我們建立了乙個python應用的容器,然後啟動它 兩種方式的區別是 p 容器內部埠隨機對映到主機的高埠 p 容器內部埠繫結到指定的主機埠 同時我們還可以繫結網路位...

docker學習 docker容器

1.容器檢視 已經啟動的容器 docker ps 所有的容器 docker ps a2.啟動容器相關引數 互動式容器 退出時容器處於停止狀態,無法使用 docker run it name mynginx nginx bin bash 退出當前容器 exit 守護式容器 埠88是宿主機的對映埠 do...