華為云云容器快速搭建網站實踐隨記—利用私有鏡像搭建GuestBook

      網友投稿 2138 2025-03-31

      一、華為云云容器簡單介紹


      云容器引擎 CCE 是基于 K8S 和 Docker 的企業級容器服務,為企業應用提供快速部署、自動化運維、彈性伸縮等容器生命周期管理能力。

      這個實踐是通過 docker 容器以及云容器引擎 CCE 平臺快速實現了網站搭建,體驗到容器為企業應用所帶來的極大的便利性。

      而網站建站是一個IT從業人員的基本功,所以通過本篇文章,利用私有鏡像搭建GuestBook說明借助華為云等云生態資源,進行快速、高效的實踐,大家可以對比體會下,如果是采用CES單購、自建容器或采用自有服務器搭建的性價比之分,個人覺得,差別還是很大的,如果我們能把原本需要2天的時間縮短到2個小時,那么即使付出幾百塊錢的成本也是值得的。

      二、下面對具體實踐步驟進行分享說明:

      實踐的大致內容說明如下:

      在安裝好 docker 環境的虛擬機中制作 Guestbook 的三個鏡像:frontend, redis 和 redisslave,并

      上傳到云容器引擎 CCE 的鏡像倉庫中,通過私有鏡像發布容器服務,搭建 Guestbook 留言簿。

      1、創建彈性云服務器 ECS

      注冊登錄后,在頁面的左上方點擊【服務列表】,從顯示的服務中選擇【計算】-【彈性云服務器ECS】

      點擊后進入彈性云服務器購買頁面:

      按需計費,華北-北京一,可用區1,通用計算型1核1G,公共鏡像 ubantu 16.04,帶寬1G,確定后點擊【立即購買】

      勾選同意,然后點擊提交,等待創建,然后?返回云服務器控制臺,等待片刻后,可查看到已創建好的彈性云服務器。記錄下彈性 IP 地址,以作后續登陸使用。此處如我的是?114.xx.xxx.7

      2、安裝 docker 客戶端

      打開 putty,輸入彈性云服務器 ECS 的彈性 IP 地址,單擊“open”。如下圖所示:

      最好是保存會話,再次打開的話,就可以直接雙擊,點擊【打開】后會進入DOC命令框,輸入root和購買時設置的密碼,出現如下畫面,則表示已經登錄成功:

      使用如下命令快速安裝 Docker。

      curl -fsSL get.docker.com -o get-docker.sh

      sh get-docker.sh

      安裝后,使用docker?version?或docker?info?查看版本及安裝信息,如下圖所示:

      docker?info?可自行嘗試

      3、制作 Guestbook 鏡像

      制作 Guestbook 鏡像中,需要制作三個鏡像:frontend 作為前端網頁服務鏡像,代碼邏輯全在

      Frontend 組件內,redis 和 redisslave 負責存儲,互為主備

      (1)制作 Frontend 組件鏡像

      《1》執行如下命令,新建用于存放 frontend 組件文件的目錄。

      mkdir guestbook

      cd guestbook

      mkdir frontend

      cd frontend

      如下圖所示:

      《2》執行如下命令,新建 guestbook.php 文件。并復制代碼到 guestbook.php 文件中。

      vi guestbook.php

      guestbook.php ?文件 的 代碼?內容如下:

      set_include_path('.:/usr/local/lib/php');

      error_reporting(E_ALL);

      ini_set('display_errors',1);

      require 'Predis/Autoloader.php';

      Predis\Autoloader::register();

      if (isset($_GET['cmd'])===true){

      $host = 'redis-master';

      header('Content-Type: application/json');

      if ($_GET['cmd']=='set'){

      $client = new Predis\Client([

      'scheme' => 'tcp',

      'host' => $host,

      'port' => 6379,

      ]);

      $client->set($_GET['key'],$_GET['value']);

      print('{"message": "Updated"}');

      }

      else {

      $host = 'redis-slave';

      $client = new Predis\Client ([

      'scheme' => 'tcp',

      'host' => $host,

      'port' => 6379,

      ]);

      $value = $client->get($_GET['key']);

      print('{"data": "' . $value . '"}');

      }

      } else {

      phpinfo();

      } ?>

      注意:復制上述代碼的時候,檢查頭和尾,以確保完整,如若缺失頭的部分,則把光標先移動至最頭部第一個字符,然后復制缺失的部分,粘貼

      復制完成后,檢查無誤,則ESC退出輸入,SHIFT+冒號,然后輸入? wq,保存后退出文件

      《3》執行如下命令,新建 controllers.js 文件。并復制代碼到 controllers.js 文件中。

      vi controllers.js

      controllers.js ?文件 的 代碼 內容如下 :

      var redisApp = angular.module('redis',['ui.bootstrap']);

      /**

      *Constructor

      */

      function RedisController() {}

      RedisController.prototype.onRedis = function() {

      this.scope_.messages.push(this.scope_.msg);

      this.scope_.msg = "";

      var value = this.scope_.messages.join();

      this.http_.get("guestbook.php?cmd=set&key=messages&value=" + value)

      .success(angular.bind(this, function(data) {

      this.scope_.redisResponse = "Updated.";

      }));

      };

      redisApp.controller('RedisCtrl',function($scope, $http, $location) {

      $scope.controller = new RedisController();

      $scope.controller.scope_= $scope;

      $scope.controller.location_= $location;

      $scope.controller.http_= $http;

      $scope.controller.http_.get("guestbook.php?cmd=get&key=messages")

      .success(function(data) {

      console.log(data);

      $scope.messages =data.data.split(",");

      });

      });

      復制完成后,檢查無誤,則ESC退出輸入,SHIFT+冒號,然后輸入? wq,保存后退出文件

      《4》執行如下命令,新建 index.html 文件。并復制代碼到 index.html 文件中。

      vi index.html

      index.html ?文件 的 代碼 內容如下

      Guestbook

      href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css?t=1023">

      src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js">

      ipt>

      華為云云容器快速搭建網站實踐隨記—利用私有鏡像搭建GuestBook

      Guestbook

      type="text" name="input">

      {{msg}}

      復制完成后,檢查無誤,則ESC退出輸入,SHIFT+冒號,然后輸入? wq,保存后退出文件

      《5》通過 ls 命令可以查詢到“frontend”目錄下已創建好的三個文件。

      《6》在當前 frontend 目錄下,編寫 Dockerfile 文件構建 frontend 鏡像。

      vi Dockerfile

      Dockerfile ?文件 代碼內容如下:

      FROM php:5-apache

      RUN apt-get update

      RUN pear channel-discover pear.nrk.io

      RUN pear install nrk/Predis

      ADD guestbook.php /var/www/html/guestbook.php

      ADD controllers.js /var/www/html/controllers.js

      ADD index.html /var/www/html/index.html

      其中

      FROM 語句:表示使用 php:5-apache 鏡像作為基礎。

      RUN語句:表示使用 apt-get 命令來更新軟件包列表和安裝 Predis。

      ADD語句:將本地代碼文件添加到鏡像中。

      《7》執行如下命令制作 frontend 鏡像。

      docker build -t?frontend .? ? ? ? ? (不要漏了最后有個點)

      《8》驗證成功與否:

      屏幕回顯信息如下,當出現“successfully built”的時候表示鏡像制作成功,如下圖所示:

      (2)制作 redis 和 redisslave 鏡像

      《1》?redis 鏡像通過如下命令直接從鏡像倉庫中獲取

      docker pull redis:3.0

      如下圖所示:

      《2》返回 guestbook 目錄下,創建 redisslave 文件夾

      cd ..

      mkdir redisslave

      cd redisslave

      如下圖所示:

      《3》編寫 run.sh 文件。

      vi run.sh

      run.sh ?文件 內容 如下 :

      redis-server --slaveof redis-master 6379

      如下圖所示:

      ESC,使用SHIFT+冒號,然后輸入wq 保存并退出文檔。

      《4》在當前 redisslave 目錄下,編寫 redisslave 鏡像的 Dockerfile 文件。

      vi Dockerfile

      Dockerfile ?文件內容如下:

      FROM redis:3.0

      ADD run.sh /run.sh

      RUN chmod a+x /run.sh

      CMD /run.sh

      ESC,使用SHIFT+冒號,然后輸入wq 保存并退出文檔。

      其中:

      FROM 語句:表示基于 redis 鏡像。

      ADD 語句:表示將本地的 run.sh 文件放到鏡像中。

      RUN 語句:表示給所有用戶寫的 run.sh 賦予可執行權限。

      CMD 語句:表示容器啟動后自動運行 run.sh 腳本。

      《5》執行如下命令,制作 redisslave 的鏡像。

      docker build -t?redisslave .? ? ? ? (不要漏了最后有個點)

      屏幕回顯信息如下,當出現“successfully built”的時候表示鏡像制作成功

      如下圖所示:

      《6》?執行 docker images 命令,可以查看到已經制作好的 guestbook 的三個鏡像。如下圖所示:

      4、連接華為云私有鏡像倉庫并上傳鏡像

      (1)頁面左上角,點擊【服務列表】,從服務頁面中,選擇“云容器引擎 CCE”服務,進入云容器引擎頁面

      (2)進入到云容器引擎控制臺后,進入【鏡像倉庫】。

      (3)在容器鏡像服務中,選擇【組織管理】 創建組織。

      為組織定義一個名稱,注意此處名稱全局唯一,名稱可能已被他人占用,請設置一個唯一的名

      稱。(此處以?rongzhen?為例)

      (4)組織創建成功后,進入“我的鏡像”,單擊“客戶端上傳”。點擊彈出對話框中的“生成

      臨時 docker login 指令”

      (5)用 putty 打開 ECS,粘貼 docker login 指令。回顯如下:

      當顯示“Login Succeeded”時,已成功連接到鏡像倉庫。

      (6)成功連接鏡像倉庫后,執行 docker images 命令,查看到已制作好的三個鏡像以及鏡像的版

      本(TAG),現在需要對這三個鏡像打上新的標簽,然后推送到鏡像倉庫中。

      (7)首先為 frontend 鏡像打上標簽并推送 frontend 鏡像到鏡像倉庫。

      docker tag [{鏡像名稱}:{版本名稱}] swr.cn-north-1.myhuaweicloud.com/{組織名稱}/{鏡像名稱}:{版本

      名稱}

      docker push swr.cn-north-1.myhuaweicloud.com/{組織名稱}/{鏡像名稱}:{版本名稱}

      {鏡像名稱}:frontend

      {版本名稱}:latest

      {組織名稱}:rongzhen(上述步驟中創建的組織名稱)

      此處示例為:

      docker tag frontend:latest swr.cn-north-1.myhuaweicloud.com/rongzhen/frontend:latest

      docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/frontend:latest

      回顯如下:

      (8)按照同樣的方式,為 redis 和 redisslave 鏡像打上標簽并推送到鏡像倉庫。

      redis:

      docker tag redis:3.0 swr.cn-north-1.myhuaweicloud.com/rongzhen/redis:3.0

      docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/redis:3.0

      redisslave:

      docker tag redisslave:latest swr.cn-north-1.myhuaweicloud.com/rongzhen/redisslave:latest

      docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/redisslave:latest

      在執行redis:3.0時,如果復制不行,就直接照著手打一遍,應該就可以,復制的過程中會有一些字符出現非正常顯示

      全部執行完畢后,到【容器鏡像服務】-【我的鏡像】中查看是否上傳成功

      5、創建 guestbook 容器工作負載

      為已經上傳的 guestbook 三個鏡像創建容器工作負載,因為三個工作負載有相關性,需要按照

      順序進行創建:1.redis;2.redisslave;3.frontend。

      集群的創建可查看另外一篇文章:

      https://blog.csdn.net/weixin_37896608/article/details/91881053

      作為操作的參照

      此處直接使用之前的集群test,并使用我的鏡像進行私有鏡像創建無狀態工作負載

      (1)進入到云容器引擎控制臺,打開【工作負載】界面,點擊【創建無狀態工作負載】。如下圖所示:

      (2)?創建 redis 工作負載,填寫工作負載基本信息,參數參考如下:

      工作負載名稱:redis

      集群名稱:選擇已創建的集群,如 test

      命名空間:default

      實例數量:1

      點擊【下一步】后,進入如下頁面,添加容器,并選擇鏡像,此處選擇【我的鏡像】,此處有兩個redis,選擇3.0的,因為這個是我們上述步驟中生成的,選擇后,點擊【確定】

      容器配置頁面,使用默認,點擊【下一步】,進入添加服務頁面

      添加 redis-master 服務,設置參數參考如下:

      服務名稱:redis-master(此處名稱與 guestbook.php 中服務名稱保持一致)

      訪問方式:集群內訪問

      端口映射:協議-TCP;容器端口-6379;訪問端口-6379(此處端口號與 guestbook.php

      中端口號保持一致)

      如下圖所示:

      單擊【確定】后,點擊 【下一步】,高級設置頁面保持默認,點擊【創建】,返回無狀態工作負載列表

      (3)以同樣的方式創建 redisslave 工作負載,添加容器中選擇 redisslave 鏡像。添加服務中

      設置服務名稱為“redis-slave”,容器端口與訪問端口均為“6379”

      注意修改工作負載名稱和實例數量,選擇鏡像時,注意區分,其他的均可采用默認

      (4)返回云容器引擎界面,繼續創建 guestbook 無狀態工作負載。

      需要特別注意的是,在添加服務時,按以下步驟操作:

      添加 guestbook 服務,設置參數如下:

      服務名稱:guestbook

      訪問類型:負載均衡

      服務親和:集群級別

      端口映射:協議-TCP,容器端口-80,訪問端口-80

      如下圖所示:點擊【確定】,然后點擊【下一步】

      其他的配置通其他操作,以上操作完畢后,返回工作負載列表,進行查看,如下圖所示:

      6、訪問 guestbook 應用

      通過?guestbook?工作負載的外部訪問地址,打開瀏覽器進行訪問,如下圖所示:

      至此 Guestbook 網站搭建完畢。

      有興趣的可以注冊華為云賬號,然后到華為云學院的微認證中進行學習和實踐,相信能收獲不少,以下是相關鏈接:

      https://edu.huaweicloud.com/certifications/

      附件是華為云官方的實踐指導手冊,部分截圖或操作因華為云產品的迭代更新,與實際會有差異,可以我博客為主,附件的指導手冊作為輔助,應該能更好的理解和學習

      此篇博客原文發布在CSDN的網站上,歡迎訪問和關注:

      https://blog.csdn.net/weixin_37896608/article/details/91881724

      附件: 1 云容器快速搭建網站實驗指導手冊V2.0.pdf 3.39M 下載次數:2次

      鏡像服務 云速建站 容器 彈性云服務器 ECS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word手動換行符如何替換為段落標記(如何將手動換行符替換為段落標記)
      下一篇:使用指南】華為IdeaHub Enterprise功能介紹及操作指導
      相關文章
      亚洲成a人无码亚洲成www牛牛| 亚洲无砖砖区免费| 亚洲午夜精品国产电影在线观看| 国产亚洲精品观看91在线| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲国产精品尤物yw在线| 国产成人综合亚洲| 亚洲码和欧洲码一码二码三码| 亚洲国产乱码最新视频| 亚洲色偷偷色噜噜狠狠99 | 国产精品亚洲精品| 亚洲第一成人在线| 亚洲人成77777在线观看网| 亚洲娇小性xxxx| 亚洲日韩AV一区二区三区中文| 亚洲欧美日韩一区二区三区在线| 亚洲综合激情五月色一区| 亚洲乱妇老熟女爽到高潮的片 | 在线观看午夜亚洲一区| 亚洲综合国产一区二区三区| 亚洲精品卡2卡3卡4卡5卡区| 亚洲高清专区日韩精品| 久久精品7亚洲午夜a| 亚洲三级电影网站| 久久久久亚洲AV无码观看| 亚洲精品福利网站| 亚洲日本久久一区二区va| 中文字幕亚洲精品无码| 噜噜综合亚洲AV中文无码| 亚洲av无码乱码在线观看野外| 亚洲人成电影网站国产精品| 亚洲性久久久影院| 亚洲精品成人无限看| 久久久久亚洲AV成人片| 亚洲ts人妖网站| 亚洲精华液一二三产区| 国产亚洲女在线线精品| 久久久无码精品亚洲日韩软件 | 亚洲人xxx日本人18| 亚洲日本一线产区和二线| 亚洲VA综合VA国产产VA中|