天天看點

阿裡雲:快速搭建Docker環境

一、實驗内容與涉及知識

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),填寫資訊後點選确認

阿裡雲:快速搭建Docker環境

2.在終端中連接配接ECS,使用者名以及ip為建立ECS伺服器的登入名和公網Ip:

阿裡雲:快速搭建Docker環境

登陸成功後會顯示如下資訊:

阿裡雲:快速搭建Docker環境

第二步:安裝Docker CE

Docker有兩個分支版本:Docker CE和Docker EE,即社群版和企業版。本教程基于CentOS 8安裝Docker CE。

1.安裝Docker的依賴庫

yum install -y yum-utils device-mapper-persistent-data lvm2

輸入結果如下:

阿裡雲:快速搭建Docker環境

2.添加Docker CE的軟體源資訊

yum-config-manager --add-repo

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

輸入結果如下:

阿裡雲:快速搭建Docker環境

3.安裝Docker CE

yum makecache fast

yum -y install docker-ce

阿裡雲:快速搭建Docker環境
阿裡雲:快速搭建Docker環境

4.啟動Docker服務

systemctl start docker

第三步:使用Docker安裝Nginx服務

1.檢視Docker鏡像倉庫Nginx的可用版本

docker search nginx

指令輸出結果如下所示:

阿裡雲:快速搭建Docker環境

2.拉取最新版的Nginx鏡像

docker pull nginx:latest

阿裡雲:快速搭建Docker環境

3.檢視本地鏡像,我們可以看見nginx

docker images

阿裡雲:快速搭建Docker環境

4.運作容器

docker run --name nginx-test -p 8080:80 -d nginx

指令參數說明:

  • --name nginx-test:容器名稱。
  • -p 8080:80: 端口進行映射,将本地8080端口映射到容器内部的80端口。
  • -d nginx: 設定容器在背景一直運作。

    指令輸出結果如下所示:

阿裡雲:快速搭建Docker環境

5.在浏覽器通路Nginx

(1)換到實列清單,點選管理

阿裡雲:快速搭建Docker環境

(2)點選安全組

阿裡雲:快速搭建Docker環境

(3)點選配置規則——快速添加增加選擇HTTP(8080)

添加成功顯示如下:

阿裡雲:快速搭建Docker環境

(4)配置完成後,通路公網IP,即可通路nginx

阿裡雲:快速搭建Docker環境

第四步:在本地虛拟機制作鏡像

1.從gitlab上拉取已經開發好的CounterWebApp項目

git clone

https://gitlab.com/bobyuan/20190224_cloudappdev_code.git

cd 20190224_cloudappdev_code/spring_maven_webapp/CounterWebApp

輸出結果如圖下:

阿裡雲:快速搭建Docker環境

2.将項目打包成war檔案

mvn package

輸出結果如下:

阿裡雲:快速搭建Docker環境

打包成功結果輸出如下:

阿裡雲:快速搭建Docker環境

3.檢視是否打包成功

ls -l target/CounterWebApp.war

阿裡雲:快速搭建Docker環境

4.在war包相同路徑建立一個Dockerfile檔案寫以下語句:

from tomcat

MAINTAINER pinkxu [email protected]

COPY CounterWebApp.war /usr/local/tomcat/webapps

輸入結果如下(這裡的pinkxu 和郵箱是申請Dockerhub賬号的使用者名和郵箱):

阿裡雲:快速搭建Docker環境

5.建構自己的鏡像

docker build .

阿裡雲:快速搭建Docker環境

可以看到已經建構成功,隻是沒有給鏡像命名,執行以下指令給鏡像命名以及指定版本并重新建構

docker build -t pinkxu:latest .

阿裡雲:快速搭建Docker環境

第五步:将鏡像釋出到DockerHub

1.在docker上登Dockehub

docker login --username=pinkxu

輸出顯示結果如下:

阿裡雲:快速搭建Docker環境

2.在dockerhub上建立倉庫

結果如圖下所示:

阿裡雲:快速搭建Docker環境

3.給鏡像打tag 一定要在tag前面加上使用者名

docker tag pinkxu pinkxu/cloudxu:v1

阿裡雲:快速搭建Docker環境

4.上傳鏡像到Dockerhub

docker push pinkxu/cloudxu:v1

阿裡雲:快速搭建Docker環境

5.在Dockerhub中看見上傳的鏡像

阿裡雲:快速搭建Docker環境

第六步:在阿裡雲上部署鏡像

1.從dockerhub上拉取counterwebapp鏡像到阿裡雲伺服器上

docker pull pinkxu/cloudxu:v1

阿裡雲:快速搭建Docker環境

2.通過端口運作鏡像

docker run -d -p 8080:8080 pinkxu

阿裡雲:快速搭建Docker環境

3.在浏覽器輸入120.79.178.135:8080/war包名,運作war包

阿裡雲:快速搭建Docker環境