1. 程式人生 > 其它 >Unittest(3):unittest_斷言操作

Unittest(3):unittest_斷言操作

Docker

一.什麼是Docker?

百度百科:Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的映象中,然後釋出到任何流行的 Linux或Windows作業系統的機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。
docker官網:http://www.docker.com

二.為什麼說Docker是容器化技術?

  • 容器化技術的特點:
  • 標準化:每個容器都是標準化、可移植的,因為他們直接執行在宿主機的核心上
  • 隔離:容器互相隔離,互不干擾,獨立執行
  • 高效能:容器效能開銷極低,可以實現分鐘級甚至秒級的部署和啟動
  • 版本:CE(Community Edition:社群版)和 EE(Enterprise Edition:企業版)

三.Docker 理念

Build,Ship and Run Any App,Anywhere,在任何地方構建、 釋出並執行任何應用程式(一次封裝,到處執行)

四.Docker 架構

docker 由三部分組成:

  • Client 客戶端
  • docker 主機
  • Registry 映象倉庫伺服器

docker daemon:

  • docker 安裝後,會以後臺執行、守護程序的形式存在
  • images 映象: 映象可以用來建立 docker 容器,一個映象可以建立很多容器
  • containers: 映象和容器的關係類似面向物件設計中的類和物件, 映象是容器的模板,容器是基於映象創建出來的。 容器可以被建立、啟動、停止、刪除等等。

Registry:

  • 映象註冊伺服器 https://hub.docker.com 一個 docker Registry(倉庫註冊伺服器) 中可以包含多個 Repository(倉庫); 每個倉庫可以包含多個標籤/版本(Tag);每個標籤對應一個映象。 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式,公開倉庫就是 docker 官方倉庫,私有倉庫是自己搭建的 docker 私服

Client:

  • docker 終端 安裝好 docker 中,同時包含了 docker 客戶端,客戶端負責執行 docker 命令, 傳送給 docker 主機中的 docker 守護程序,例如:從倉庫下載映象,通過映象創 建容器等等

五.CentOS7 安裝 docker

(1)安裝需要的軟體包:

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

(2)設定 docker 下載映象(推薦用阿里雲,一個字:快)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)更新 yum 軟體包索引

yum makecache fas

(4)安裝 DOCKER CE (社群版)

yum install -y docker-ce docker-ce-cli containerd.io
注意第一次安裝可能會出現錯誤,重新執行一下安裝的命令就好了

(5)啟動 docker

systemctl start docker # 啟動docker
systemctl enable docker # 設定開機自啟動

(6)檢視版本

docker version

(7)docker 解除安裝,一次執行下面的三行命令

systemctl stop docker
yum remove -y docker-ce
rm -rf /var/lib/docker

六.配置阿里雲映象服務加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ny5dsu6o.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

七.Docker 常用命令

(1).Docker 基本命令

  • 版本資訊:docker version

  • 詳細資訊:docker info

  • 幫助文件:docker --help 列出所有的docker命令

(2)Docker服務相關命令

  • 啟動Docker服務:systemctl start docker

  • 關閉Docker服務:systemctl stop docker

  • 檢視Docker狀態:systemctl status docker

  • 重啟Docker服務:systemctl restart docker

  • 設定Docker服務跟隨虛擬機器開機自啟:systemctl enable docker

  • 取消Docker服務跟隨虛擬機器開機自啟:systemctl disable docker

(3)Docker 映象命令(docker官方映象網站)

  • 檢視所有的本機映象:docker images [-q|--no-trunc],-q:檢視映象ID --no-trunc:檢視完成的映象ID

  • 查詢映象:docker search 映象名稱

  • 下載映象:docker pull 映象名稱:版本號,不加版本號預設是latest最新版

  • 刪除映象:docker rmi [-f] 映象名|映象ID:版本號,刪除指定版本映象,版本為latest版本號可以省略,[-f]:強制刪除

  • 批量刪除:docker rmi [-f] mysql tomcat redis ,除多個映象,使用空格間隔不同的映象名稱

我就不演示了

  • 刪除全部映象:docker rmi -f $(docker images -q)

我就不演示了

  • 檢視映象詳情:docker inspect 映象名|映象ID

(4)容器操作

  • 列出所有正在執行的容器,不包含已停止的容器(容器怎麼執行可以看後面):docker ps

  • 列出當前所有已經建立的容器:docker ps [-aq]

  • 建立容器:

docker create 映象名稱 # 根據映象名建立一個容器

docker create --name tomcat1 映象名稱 # 根據映象建立名為 tomcat1 的容器

docker create 映象 id # 根據映象 id 新建一個容器

  • 啟動、停止、重啟容器:

docker start 容器名|容器ID

docker stop 容器名|容器ID

docker restart 容器名|容器ID

docker kill 容器名|容器ID 根據容器名強制停止一個容器

  • 建立並啟動容器:docker run --name tomcat2 tomcat
    當本地映象存在時,相當於 docker create + docker start
    當本地映象不存在時,相當於 docker pull + docker create + docker start

  • 刪除容器:

docker rm 容器名稱 #刪除未啟動的容器

docker rm -f 容器名稱 #強制刪除已啟動的容器

docker rm -f $(docker ps -qa) #刪除所有容器,包括正在執行的容器
我就不演示了

docker ps -a -q | xargs docker rm #刪除所有容器,不包括正在執行的容器
我就不演示了

  • 互動式啟動:docker run -it --name qiu 映象名|映象ID

  • 進入容器:docker exec -it 容器ID|容器名稱 /bin/bash

  • 退出容器:

ctrl + p + q # 不停止退出容器

exit #容器停止退出,此時執行

  • 啟動守護式容器:docker run -d --name qiu 映象名|映象ID

推薦直接使用:docker run -itd --name qiu 映象名|映象ID

八.資料卷

(1)什麼是資料卷:資料卷是存在於一個或多個容器中的特定檔案或資料夾,這個檔案或資料夾以獨立於 docker 檔案 系統的形式存在於宿主機中

(2)解決了什麼問題?例如:MySQL 容器損壞無法啟動,需要刪除容器重新建立,那麼資料庫資料將會丟失

(3)安裝centos:7映象:docker pull centos:7

(4)做一個例子

將宿主機根目錄中的 qiu 掛載到容器根目錄中的 qiu

(5)掛載資料卷

docker run -itd -v /qiu:/qiu --name myMysql mysql

-v:掛載資料卷格式:
	/宿主機目錄(檔案):/容器內目錄(檔案)
	目錄必須是絕對路徑
	如果目錄不存在,
	則自動建立
	可以掛載多個數據卷

(6)檢視資料卷是否掛載成功

docker inspect myMysql

(7)資料共享

首先進入容器,在容器的資料卷掛載目錄中建立檔案並寫入內容
然後退出容器,檢視宿主機掛載目錄,可以看到同步更新的檔案

(8)資料的同步

首先停止容器
然後在宿主機修改共享資料 接下來啟動前面的容器,
檢視共享資料檔案,發現數據在容器中同步

(9)資料的持久化

首先刪除容器
然後在宿主機修改共享資料
接著重新建立容器並掛載資料卷
發現數據在容器中恢復

(10)一個容器掛載多個數據卷,兩個容器掛載同一個資料卷

docker run -it -v /dataVolumeHost31:/dataVolumeContainer31 -v /dataVolumeHost32:/dataVolumeContainer32 --name centos3 centos:7
docker run -it -v /dataVolumeHost:/dataVolumeContainer4 --name centos4 centos:7
docker run -it -v /dataVolumeHost:/dataVolumeContainer5 --name centos5 centos:7

九.應用部署

(1)部署 tomcat

建立並執行tomcat容器
docker run -d -p 8080:8080 -v /docker/tomcat/webapps:/usr/local/tomcat/webapps -v /docker/tomcat/logs:/usr/local/tomcat/logs --name qiu_tomcat tomcat:8.5

準備一個index.html頁面,使用 ftp 工具上到 /docker/tomcat/webapps/qbb 中

瀏覽器訪問一下:http://192.168.137.72:8080/qbb/

也可以檢視一下tomcat的日誌:docker logs -tf --tail 20 atguigu_tomcat

(2)部署MySQL

docker run -d -p 3306:3306 -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/logs -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name atguigu_mysql mysql:5.7

十.docker 容器化技術和虛擬機器技術

十一.映象製作

(1)方式一:通過容器製作映象

①生成映象

docker commit 容器名 映象名稱:版本號

②壓縮映象

docker save -o 壓縮檔名稱 映象名稱:版本號

③還原映象

docker load -i 壓縮檔名稱