測試開發之系統篇-Docker常用操作

陳琦聊測試發表於2021-08-19

Docker容器(Container)的執行基於映象(image),您可以在 上檢索,或透過Dockerfile檔案自己構建映象。

首先拉取 的最新版(latest)。

docker pull mysql

使用docker images顯示本地的 映象


docker images

使用docker run命令來執行容器,-d設定在後臺執行,並返回容器ID。

docker run -itd --name db-server -e MYSQL_ROOT_PASSWORD=P2ssw0rd mysql

使用docker ps檢視正在執行的映象,-a引數顯示所有例項。

docker ps -a

使用docker exec命令,可進入容器內部系統的Shell。

docker exec -it db-server /bin/bash

在容器內完成相應操作/修改後,commit命令可提交更新到指定的映象。

docker commit -m "update" -a "aaron" db-server registry.cn-shanghai.aliyuncs.com/aaron-share/db-server

更新本地映象到映象管理伺服器,此處先完成了到阿里雲映象伺服器的登入。

docker login --username=18626200000 registry.cn-shanghai.aliyuncs.com docker push registry.cn-shanghai.aliyuncs.com/aaron-share/db-server:latest

以下命令分別刪除容器和映象,-f可強制刪除執行中的容器。

docker rm -f db-server docker rmi registry.cn-shanghai.aliyuncs.com/aaron-share/db-server

下面,我們簡單介紹下,如何使用Dockerfile來構建映象。以下Dockerfile以官方ubuntu系統映象為起點,完成了一個簡單的示例。

FROM ubuntu:latest                       # 基準映象 
MAINTAINER aaron                         # 作者資訊 
ARG APT=apt-get                          # 臨時變數,構建容器時有效 
RUN $APT update \                        # 構建容器時執行的命令 
  && $APT install -y curl \
  && rm -rf /var/lib/apt/lists/*
CMD [ "curl", "-s", "] # 執行容器時執行的命令

然後,就可以使用docker build命令來構建映象。

docker build -t registry.cn-shanghai.aliyuncs.com/aaron-share/ubuntu-server:latest .


軟體測試中,我們通常使用預製好的、不同環境的Docker映象,來進行相應的測試。
可以使用上述的docker exec命令進入容器,執行測試命令;也可以直接在宿主機上執行docker run來執行測試。

docker run -i --rm \
  --name testng-in-docker  -v "$(pwd)":/usr/src/mymaven  -v ~/.m2:/root/.m2 -w /usr/src/mymaven  maven:latest 
  mvn clean test

以上使用了Java常見的Maven構建工具來執行測試,-v表示從宿主機到容器的路徑對映,它

  • 透過$(pwd)命令獲取當前專案路徑,並對映到了容器內部的/usr/src/mymaven目錄;
  • 將Maven類庫的根目錄~/.m2,對映到了容器內部的/usr/src/mymaven目錄;
  • 拉取、執行名為maven的容器映象的latest版本;
  • 容器啟動時,立即執行mvn clean test命令執行測試;
  • 執行結束後容器直接退出,測試結果位於當前路徑下。


另外,Docker Compose是一個用於定義和執行多容器的工具,如果您的服務包括了多個相互依賴的容器,可以使用他來編排、啟動所有服務。詳情可以參考 。


本人在開源專案中,實現了基於Docker容器的按需測試環境管理,詳情請參照網址 。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978795/viewspace-2787694/,如需轉載,請註明出處,否則將追究法律責任。

相關文章