自动化集成:Docker容器入门简介
前言:該系列文章,圍繞持續集成: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 --help2、鏡像文件
基礎命令
# 查看本地鏡像列表 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訪問容器中應用的接口,查看響應正常即可。
同系列推薦:
- Jenkins管理工具詳解
- Pipeline流水語法詳解
- 微服務灰度發布原理
- 服務自動化部署和管理
- 微服務組件二次淺封裝
四、源代碼地址
GitEE·地址 https://gitee.com/cicadasmile/butte-auto-parent Wiki·地址 https://gitee.com/cicadasmile/butte-java-note總結
以上是生活随笔為你收集整理的自动化集成:Docker容器入门简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博客重新定位
- 下一篇: SecureCRT上传bash: rz: