前言
在進行微服務部署時,首先需要進行部署環境的搭建,目前,Docker 已經成為了微服務部署的主流解決方案之一,Docker 可以幫助我們更快地打包、測驗以及部署應用程式,從而縮短從撰寫到部署運行代碼的周期,
在本文中,我們將對 Docker 進行初步的講解,并介紹如何將映像生成并作為容器運行、使用 Docker Hub 共享映像,具體的功能點如下:
- 將映像生成并作為容器運行,
- 使用 Docker Hub 共享映像,
- 使用 Docker Compose 運行應用程式,
基本概念
Docker 是一個開源的應用容器引擎,可以讓開發者將應用程式打包成一個容器,并通過容器來部署、運行和管理應用程式,Docker 的核心概念包括容器和鏡像,
容器:容器是鏡像的可運行實體,可以通過 Docker API 或 CLI 來創建、啟動、停止、移動或洗掉容器,容器提供了一種輕量級、可移植的解決方案,使得應用程式可以在不同的環境中運行,
鏡像:鏡像是一個只讀模板,包含了創建 Docker 容器的說明,沒有鏡像,就無法創建容器,Docker 鏡像可以通過 Dockerfile 檔案來創建,也可以從公有倉庫中下載使用,公有倉庫中包含了大量的鏡像,可以供開發者快速使用,
docker架構:Docker 的架構包括 Docker 客戶端、Docker 服務器和 Docker 鏡像倉庫,Docker 客戶端是一個命令列工具,可以通過它來與 Docker 服務器進行通信,Docker 服務器是一個后臺行程,負責管理容器和鏡像,Docker 鏡像倉庫是一個中央存盤庫,可以用來存盤和分享 Docker 鏡像,

這里不在贅述基礎知識了,如果需要可以自行去docker官網進行查看;
安裝
windows:window安裝地址,直接按照安裝提示,一直下一步即可安裝成功,
linux:如果想要簡單快速直接安裝寶塔面板,命令列安裝有些復雜,需要根據不同情況安裝,這里是博主的安裝流程:
- 使用 root 權限登錄 Centos,確保 yum 包更新到最新,
yum ‐y update - 安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的,
yum install ‐y yum‐utils device‐mapper‐persistent‐data lvm2 - 設定yum源,并更新 yum 的包索引
yum‐config‐manager ‐‐add‐repo http://mirrors.aliyun.com/docker‐ce/linux/centos/docker‐ce.repoyum makecache fast - 可以查看所有倉庫中所有docker版本,并選擇特定版本安裝
yum list docker‐ce ‐‐showduplicates | sort ‐r - 安裝docker
yum ‐y install docker‐ce‐18.03.1.ce # 這是指定版本安裝 yum ‐y install docker‐ce # 這是安裝最新穩定版 - 啟動并加入開機啟動
systemctl start docker systemctl enable docker - 驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
docker version - 卸載docker
yum ‐y remove docker‐engine
創建鏡像
公有鏡像
Docker Hub 是 Docker 官方提供的公有鏡像倉庫,包含大量的 Docker 鏡像,供開發者使用,與 Maven 倉庫類似,開發者可以在 Docker Hub 上搜索并下載需要的鏡像,從而快速搭建開發環境,以java為例,命令列模式:
docker search java- 執行完 docker pull 命令后,Docker 會從 Docker Hub 中的 Java 倉庫下載最新版本的 Java 鏡像,如果需要下載指定版本的鏡像,則可以在鏡像名后面加上冒號并指定版本號,例如:
docker pull java:8 docker images列出鏡像docker rmi java洗掉鏡像
本地鏡像
使用Dockerfile構建Docker鏡像,其中的 FROM、 RUN都是 Dockerfile的指令, FROM 指令用于指定基礎鏡像,即構建新鏡像所依賴的鏡像,基礎鏡像包含了作業系統、軟體環境等基本組件,通過 FROM 指令,可以使用已有的鏡像作為基礎鏡像,并在其之上添加新的軟體包或配置,RUN 指令用于在鏡像中執行命令,通過 RUN 指令,可以在基礎鏡像之上安裝軟體包、配置環境變數等,
FROM java:8
# 復制生成的 jar 檔案到容器中
COPY --from=0 /app/bootstrap/target/*.jar /app/app.jar
# 設定作業目錄
WORKDIR /app
# 暴露埠
EXPOSE 3112
# 設定時區為 Asia/Shanghai
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
# 設定容器的時區
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install -y fontconfig
# 定義啟動命令
ENTRYPOINT ["sh","-c","java -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -jar app.jar"]
然后在Dockerfile所在路徑執行以下命令構建鏡像:-t指定鏡像名字,命令最后的點(.)表示Dockerfile檔案所在路徑
docker build ‐t app .
共享鏡像
Docker Hub 是 Docker 官方提供的公共鏡像倉庫,提供了大量的公共鏡像供開發者使用,此外,Docker 還提供了一個私有鏡像倉庫,稱為 Docker Registry,可以用于存盤和分享私有鏡像,
如果開發者需要在自己的專案中使用 Docker 鏡像,可以將自己的鏡像上傳到 Docker Registry 上,然后在其他機器或環境中使用 Docker 命令來下載和運行,
請注意,Docker Hub 只提供一個免費的私有倉庫,如果需要使用多個私有倉庫,則需要購買額外的訂閱服務,
docker倉庫地址:hub.docker先在網頁端注冊,并記住賬號密碼

然后再本地使用docker login命令進行登錄,這樣我們的服務器也會進行登錄到私有庫,否則你將push失敗,
登錄成功后,就可以將本地的鏡像上傳到 Docker Registry 中,可以使用 docker tag 命令來為鏡像打上標簽,然后使用 docker push 命令來上傳鏡像,例如:
docker tag app 【你的賬號名】/app
修改tag成功后即可推送image到遠程倉庫:docker push 【你的賬號名】/app
運行鏡像
使用以下docker run命令即可新建并啟動一個容器,該命令是最常用的命令,它有很多選項,下面將列舉一些常用的選項,
- -d選項:表示后臺運行
- -P選項:隨機埠映射
- -p選項:指定埠映射,有以下四種格式:-- ip:hostPort:containerPort、-- ip::containerPort、-- hostPort:containerPort、-- containerPort
- --net選項:指定網路模式,該選項有以下可選引數:--net=bridge:默認選項,表示連接到默認的網橋、--net=host:容器使用宿主機的網路、--net=container:NAME-or-ID:告訴 Docker讓新建的容器使用已有容器的網路配置、--net=none:不配置該容器的網路,用戶可自定義網路配置,
docker run ‐d ‐p 3112:3112 app這樣就能啟動一個容器,需要注意的是,使用 docker run命令創建容器時,會先檢查本地是否存在指定鏡像,如果本地不存在該名稱的鏡像, Docker就會自動從 Docker Hub下載鏡像并啟動一個 Docker容器,
結語
通過使用 Docker,開發者可以實作快速、可重復的應用程式部署和管理,提高應用程式的可移植性和可擴展性,Docker 的優勢在于它可以將應用程式和依賴項打包成一個容器,從而避免了因環境差異而導致的應用程式無法運行的問題,此外,Docker 還提供了一套完整的工具鏈,包括 Docker Compose、Docker Swarm 等,可以幫助開發者更方便地管理多個容器和多個主機,
Docker Compose 是一個用于定義和運行多個容器的工具,可以將多個容器組合為一個應用程式,并通過一個組態檔來管理這些容器,在使用 Docker Compose 之前,需要先撰寫一個 docker-compose.yml 檔案,該檔案包含了所需的容器和配置資訊,然后,可以使用 docker-compose 命令來創建、啟動、停止和洗掉多個容器,下一節我們將詳細介紹 Docker Compose 技術的原理和使用方法,
ps:以上內容,純屬個人見解,有任何問題下方評論!關注博主公眾號,原始碼專題、面試精選、AI最新擴展等你來看!原創撰寫不易,轉載請說明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552186.html
標籤:Java
上一篇:實作高并發秒殺的 7 種方式,寫的太好了,建議收藏!!
下一篇:返回列表
