前言:該系列文章,圍繞持續整合: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