自動化整合:Docker容器入門簡介

知了一笑發表於2021-12-30

前言:該系列文章,圍繞持續整合:Jenkins+Docker+K8S相關元件,實現自動化管理原始碼編譯、打包、映象構建、部署等操作;本篇文章主要描述Docker基礎用法

一、Docker簡介

1、基礎描述

Docker作為開源的應用容器引擎,可以把應用程式和其相關依賴打包生成一個Image映象檔案,是一個標準的執行環境,提供可持續交付的能力,通過映象檔案可以建立多個Docker容器,這裡可以理解為類建立物件的原理;映象檔案可以推送到倉庫Repository中,這裡可以理解為Git倉庫管理程式碼的原理。

2、核心概念

  • Image映象:包含應用和依賴的類庫,配置等;
  • Container容器:通過映象檔案建立多個容器,執行打包應用;
  • Repository倉庫:存放映象檔案的雲端服務;

映象檔案與容器,可以理解為基於快照啟動虛擬機器;或者類與例項物件的關係。

3、架構原理

Docker基於客戶端-伺服器的架構模式,Docker的守護程式(daemon)監聽客戶端的請求命令,從而管理映象檔案、容器等。

二、管理命令

1、查docker資訊

# 檢視基礎資訊
docker info

# 檢視版本資訊
docker version

# 檢視命令說明
docker --help

2、映象檔案

基礎命令

# 檢視本地映象列表
docker images  或者 docker image ls

# 搜尋映象
docker search ImageName

# 拉取映象
docker image pull ImageName

# 刪除映象
docker image rm ImageName

推送倉庫

首先在雲服務平臺申請私有的映象管理倉庫,並配置好訪問倉庫的賬號和密碼,通過docker命令把本地映象檔案推送到該倉庫,這裡以阿里云為例:

# 1、登入倉庫
docker login --username=賬戶名 倉庫_url

提示輸出倉庫密碼:Login Succeeded

# 2、檢視本地映象
docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
cloud-app     latest    b11d221cc3e0   13 seconds ago   662MB

# 3、標記上述映象
docker tag b11d221cc3e0 倉庫_url/cicada-image/cloud-app:latest

# 4、執行推送命令
docker push 倉庫_url/cicada-image/cloud-app:latest

# 5、拉取該映象到本地
docker pull 倉庫_url/cicada-image/cloud-app:latest

注意:cicada-image是倉庫的名稱空間,點選cloud-app可以檢視映象操作的步驟文件:

3、容器管理

# 列出正在執行或執行過的容器
docker ps -a

# 停止容器執行
docker stop 容器ID

# 刪除指定容器
docker rm 容器ID

# 刪除全部暫停容器
docker rm -f $(docker ps -a -q)

4、入門案例

- 拉取hello-world映象
docker image pull hello-world

輸出日誌:
Using default tag: latest
latest: Pulling from library/hello-world

- 檢視本地映象
docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   7 weeks ago   13.3kB

- 執行hello-world
docker container run hello-world

輸出日誌:
Hello from Docker!
This message shows that your installation appears to be working correctly.

三、構建映象

1、Dockerfile

Dockerfile是一個文字文件,包含構建Docker映象的指令,通過讀取該指令碼中的指令並執行,完成相關build過程。

注意事項

  • 指令碼命名Dockerfile並且沒有任何字尾;
  • Docker在構建映象時,預設識別該檔案;
  • 通常指令碼檔案放在打包工程的根目錄下;

2、基礎樣例

語法說明

  • FROM:指定需要使用的基礎映象;
  • MAINTAINER:定義指令碼維護者;
  • VOLUME:指定持久化檔案目錄;
  • WORKDIR:切換到工作目錄;
  • ADD:將指定檔案新增到容器中;
  • COPY:將指定檔案複製到容器中;
  • RUN:映象構建時執行的命令;
  • ENTRYPOINT:容器引數配置;

使用案例

# 基礎映象
FROM java:8

# 維護者
MAINTAINER cicadasmile

# 持久化目錄
VOLUME /data/docker/logs

# 新增應用服務JAR包
ADD auto-client.jar application.jar

# 配置引數
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"]

3、構建映象

專案打包

這裡獲取maven專案打包後的jar包,即auto-client.jar包,然後複製到docker映象製作的目錄下,與Dockerfile在同一級。

結構如下

映象構建命令

docker build -t client-img:latest .

構建流程執行完之後,檢視映象列表,上面構建的映象已經存在;

4、執行容器

# 執行命令
docker run -d -p 8079:8079 client-img:latest

# 檢視日誌
docker logs 容器ID

訪問容器中應用的介面,檢視響應正常即可。


同系列推薦


四、原始碼地址

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note

相關文章