一、實驗内容與涉及知識
1.實驗内容
在阿裡雲申請,配置一台CentOS 7.7的ECS執行個體(雲伺服器)。基于ECS執行個體快速搭建一個Docker環境,并在Docker環境中部署一個Nginx服務;再将CounterWebApp制作鏡像并釋出到DockerHub,然後部署上線。
2.涉及的相關知識
(1)容器技術
容器是一個允許我們在資源隔離的過程中,運作應用程式和其依賴項的 、輕量的 、作業系統級别的虛拟化技術, 運作應用程式所需的所有必要元件都打包為單個鏡像,這個鏡像是可以重複使用的。當鏡像運作時,它是運作在獨立的環境中,并不會和其他的應用共享主機作業系統的記憶體、CPU或磁盤。這保證了容器内的程序不會影響到容器外的任何程序。
(2)Docker的原理
Docker 容器的實質就是一個虛拟環境,容器内包含單一應用程式和它所需的全部依賴環境,相當于最小化的虛拟機。它的狀态不會影響到主控端,反過來主控端的狀态也不會影響到容器。隻有容器預先設定好的端口和存儲卷才能與外界環境通信,除此之外,對外界而言容器就是一個黑箱,外界看不到它的内在,也不需要關心。
Docker 的部署較簡單,容器從鏡像建立,而鏡像内包含所需的全部依賴環境,做到了一個鏡像直接部署,不再需要修改伺服器的系統配置。注意 Docker 鏡像(Image)是無狀态的,而容器(Container)是有狀态的,容器在運作時生成的資料是被儲存在容器内的,這就是說容器内的程序生成的臨時檔案仍然被存放在容器内,并且當整個容器被删除時也會跟着被删除。如果生成的檔案包含重要資料,則需要把對應生成的目錄指向主控端目錄或者資料卷容器。資料卷容器與普通容器沒有差別,隻不過裡面不包含應用程序,隻為了儲存資料而存在的容器。不要在容器内儲存重要資料(除已挂載的資料卷位置),也就是說,容器的内部狀态應該是不重要的,容器可以随時删除随時建立。不應在容器内部儲存配置檔案,而應将調試确認好的配置檔案移出容器并妥善儲存。
(3)一個完整的Docker 以下幾個部分組成:
- Docker Client用戶端
- Docker Daemon守護程序
- Docker Image鏡像
- Docker Container容器
二、實驗環境
硬體:PC 微型計算機、1G以上記憶體,40G以上硬碟
系統環境:Window、Linux
軟體:阿裡雲伺服器、FinalShell
三、實驗準備
1.申請阿裡雲賬号
申請阿裡雲賬号并領取學生優惠:
登入阿裡雲(
https://help.aliyun.com/learn/getting-started.html)官網完成阿裡雲的注冊——實名認證——學生認證——專享優惠購買(需要完成模拟使用與成長計劃考試)
2.下載下傳SSH工具,這裡我下載下傳的是FinalShell。
四、實驗步驟
第一步:連接配接ECS伺服器
1.打開FinalShell,建立SSH連接配接(Linux),填寫資訊後點選确認
2.在終端中連接配接ECS,使用者名以及ip為建立ECS伺服器的登入名和公網Ip:
登陸成功後會顯示如下資訊:
第二步:安裝Docker CE
Docker有兩個分支版本:Docker CE和Docker EE,即社群版和企業版。本教程基于CentOS 8安裝Docker CE。
1.安裝Docker的依賴庫
yum install -y yum-utils device-mapper-persistent-data lvm2
輸入結果如下:
2.添加Docker CE的軟體源資訊
yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo輸入結果如下:
3.安裝Docker CE
yum makecache fast
yum -y install docker-ce
4.啟動Docker服務
systemctl start docker
第三步:使用Docker安裝Nginx服務
1.檢視Docker鏡像倉庫Nginx的可用版本
docker search nginx
指令輸出結果如下所示:
2.拉取最新版的Nginx鏡像
docker pull nginx:latest
3.檢視本地鏡像,我們可以看見nginx
docker images
4.運作容器
docker run --name nginx-test -p 8080:80 -d nginx
指令參數說明:
- --name nginx-test:容器名稱。
- -p 8080:80: 端口進行映射,将本地8080端口映射到容器内部的80端口。
-
-d nginx: 設定容器在背景一直運作。
指令輸出結果如下所示:
5.在浏覽器通路Nginx
(1)換到實列清單,點選管理
(2)點選安全組
(3)點選配置規則——快速添加增加選擇HTTP(8080)
添加成功顯示如下:
(4)配置完成後,通路公網IP,即可通路nginx
第四步:在本地虛拟機制作鏡像
1.從gitlab上拉取已經開發好的CounterWebApp項目
git clone
https://gitlab.com/bobyuan/20190224_cloudappdev_code.gitcd 20190224_cloudappdev_code/spring_maven_webapp/CounterWebApp
輸出結果如圖下:
2.将項目打包成war檔案
mvn package
輸出結果如下:
打包成功結果輸出如下:
3.檢視是否打包成功
ls -l target/CounterWebApp.war
4.在war包相同路徑建立一個Dockerfile檔案寫以下語句:
from tomcat
MAINTAINER pinkxu [email protected]
COPY CounterWebApp.war /usr/local/tomcat/webapps
輸入結果如下(這裡的pinkxu 和郵箱是申請Dockerhub賬号的使用者名和郵箱):
5.建構自己的鏡像
docker build .
可以看到已經建構成功,隻是沒有給鏡像命名,執行以下指令給鏡像命名以及指定版本并重新建構
docker build -t pinkxu:latest .
第五步:将鏡像釋出到DockerHub
1.在docker上登Dockehub
docker login --username=pinkxu
輸出顯示結果如下:
2.在dockerhub上建立倉庫
結果如圖下所示:
3.給鏡像打tag 一定要在tag前面加上使用者名
docker tag pinkxu pinkxu/cloudxu:v1
4.上傳鏡像到Dockerhub
docker push pinkxu/cloudxu:v1
5.在Dockerhub中看見上傳的鏡像
第六步:在阿裡雲上部署鏡像
1.從dockerhub上拉取counterwebapp鏡像到阿裡雲伺服器上
docker pull pinkxu/cloudxu:v1
2.通過端口運作鏡像
docker run -d -p 8080:8080 pinkxu
3.在浏覽器輸入120.79.178.135:8080/war包名,運作war包