官术网_书友最值得收藏!

5.4.4 容器遷移的流程

從5.4.3節的示例可以知道,在同一個架構下,很容易實現容器的遷移,也就是把容器提交為鏡像,然后把鏡像推送到倉庫,其他的服務器可以從倉庫下載這個鏡像,然后從這個鏡像創建容器,這樣就實現了容器的遷移,過程如圖5-12所示。

圖5-12 同架構容器遷移

但是,在不同的架構下,直接使用其他架構的鏡像會出現錯誤,因為鏡像包含的軟件本身也與架構相關,在一個架構下生成的鏡像,在其他的架構中是無法直接運行的。但是,鏡像也可以使用Dockerfile生成,可以修改一個架構下的Dockerfile文件,使其在其他架構下也可以生成相同功能的鏡像。

這里通過在x86架構和鯤鵬架構下分別構建一個Redis5.0.9的鏡像,演示不同架構之間容器的遷移。

1.x86架構Redis鏡像構建

步驟1:準備x86架構服務器的容器環境,參考5.4.3節Docker的安裝部分。

步驟2:創建/data/redis/文件夾,然后在該文件夾內創建Dockerfile文件,命令如下:

     mkdir -p /data/redis/
     cd /data/redis/
     vim Dockerfile

步驟3:在Dockerfile文件內輸入構建指令,保存并退出,指令如下:

構建文件指令簡介:

FROM:構建基于系統的鏡像,這里使用的是基于CentOS的精簡鏡像,體積較小。

ENV:設置環境變量,這里把下載網址和文件名稱設置成環境變量,方便制作不同Redis版本的鏡像。

RUN:要執行的指令。本構建文件中,RUN指令執行的過程如下:

(1)使用yum安裝必需的依賴項。

(2)刪除了yum的緩存文件。

(3)使用wget下載redis的tar源碼包。

(4)解壓源碼包到源碼目錄。

(5)刪除tar包。

(6)使用make命令編譯redis源碼,編譯時使用-j"$nproc"指定使用的核心數量。

(7)使用make install安裝。

(8)刪除源碼目錄。

VOLUME:創建掛載點/data。

WORKDIR:設置工作目錄,這里把/data設置為工作目錄。

EXPOSE:聲明服務端口,這里把Redis提供服務的6379端口聲明為服務端口。

CMD:設置容器啟動后默認執行的命令及其參數,這里默認啟動Redis服務。

步驟4:創建Redis鏡像,命令如下:

     docker build -t x86/centos_redis:5.0.9 .

構建過程所需時間較長,最后構建成功后的回顯如下:

步驟5:查看新構建的鏡像,命令及回顯如下:

可以看到新的鏡像x86/centos_redis:5.0.9。

步驟6:創建/data/redis/data/文件夾,使用x86/centos_redis:5.0.9鏡像運行容器,容器名稱為x86_redis,命令如下:

創建成功后,查看容器運行狀態,命令及回顯如下:

容器狀態為Up,表示已經正常運行了。

步驟7:使用redis-cli連接redis容器,然后輸入ping,正常會返回PONG,命令及回顯如下:

     [root@ecs-x86 redis]#docker exec - it x86_redis redis-cli
     127.0.0.1:6379> ping
     PONG

步驟8:測試set/get方法,指令及回顯如下:

     127.0.0.1:6379> set x86 hello
     OK
     127.0.0.1:6379> get x86
     "hello"

這表明x86架構下使用鏡像x86/centos_redis:5.0.9運行容器成功。

2.鯤鵬架構Redis鏡像構建

步驟1:準備鯤鵬架構服務器的容器環境,可以使用5.4.3節安裝的環境。

步驟2:創建/data/redis/文件夾,然后在該文件夾內創建Dockerfile文件,命令如下:

     mkdir -p /data/redis/
     cd /data/redis/
     vim Dockerfile

步驟3:在Dockerfile文件內輸入構建指令,保存并退出,指令如下:

可以看出,鯤鵬架構的Dockerfile文件指令和x86架構的指令基本類似,主要區別在兩個部分,一個是構建基于的鏡像,這里選擇的是Debian系統;另一個是apt-install,用來取代CentOS中的yum。除此之外,其他指令基本一致。

步驟4:創建Redis鏡像,命令如下:

     docker build -t arm64v8/debian_redis:5.0.9 .

構建過程也需要較長時間,最后出現Successfully built表示構建成功了顯示信息如下:

步驟5:查看新構建的鏡像,命令及回顯如下:

可以看到新的鏡像arm64v8/debian_redis:5.0.9。

步驟6:創建/data/redis/data/文件夾,使用arm64v8/debian_redis:5.0.9鏡像運行容器,容器名稱為kunpeng_redis,命令如下:

創建成功后,查看容器運行狀態,命令及回顯如下:

可以看到kunpeng_redis已經成功運行。

步驟7:使用redis-cli連接redis容器,輸入ping,正常會返回PONG,然后測試set/get方法,命令及回顯如下:

這表明鯤鵬架構下redis服務運行成功了。

3.基于本地鏡像構建Redis鏡像

在使用Dockerfile構建新鏡像時,除了可以基于倉庫的鏡像,也可以基于本地的鏡像。這里創建一個生成Redis5.0.9鏡像的Dockerfile文件,使用在5.4.3節中創建的arm64v8/centos4make鏡像作為基礎鏡像。下面列出簡化的步驟。

步驟1:進入鯤鵬服務器的/data/redis/文件夾。

步驟2:創建Dockerfile文件,文件指令如下:

步驟3:創建Redis鏡像,命令如下:

     docker build -t arm64v8/debian4make_redis:5.0.9 .

構建成功后的回顯如下:

后續的創建容器、測試Redis服務的過程和本節第2段“鯤鵬架構Redis鏡像構建”的步驟6、7、8類似,就不再演示了,有興趣的讀者可以自己試一下。

主站蜘蛛池模板: 阜康市| 玉树县| 上饶县| 健康| 宜兰县| 奉节县| 独山县| 靖远县| 哈巴河县| 祥云县| 大邑县| 南丰县| 安吉县| 体育| 元氏县| 靖州| 乐陵市| 杭锦后旗| 丹东市| 淄博市| 禄劝| 德庆县| 高安市| 乌兰县| 乌兰浩特市| 乌什县| 嵊州市| 富顺县| 台湾省| 镇平县| 鄂尔多斯市| 甘孜县| 噶尔县| 彰化市| 芮城县| 高雄县| 玉龙| 彰化县| 晋城| 泗水县| 改则县|