docker(一):Develop faster. Run anywhere.

努力的小雨發表於2023-05-11

前言

在進行微服務部署時,首先需要進行部署環境的搭建。目前,Docker 已經成為了微服務部署的主流解決方案之一。Docker 可以幫助我們更快地打包、測試以及部署應用程式,從而縮短從編寫到部署執行程式碼的週期。

在本文中,我們將對 Docker 進行初步的講解,並介紹如何將映像生成並作為容器執行、使用 Docker Hub 共享映像。具體的功能點如下:

  1. 將映像生成並作為容器執行。
  2. 使用 Docker Hub 共享映像。
  3. 使用 Docker Compose 執行應用程式。

基本概念

Docker 是一個開源的應用容器引擎,可以讓開發者將應用程式打包成一個容器,並透過容器來部署、執行和管理應用程式。Docker 的核心概念包括容器和映象。

容器:容器是映象的可執行例項,可以透過 Docker API 或 CLI 來建立、啟動、停止、移動或刪除容器。容器提供了一種輕量級、可移植的解決方案,使得應用程式可以在不同的環境中執行。

映象:映象是一個只讀模板,包含了建立 Docker 容器的說明。沒有映象,就無法建立容器。Docker 映象可以透過 Dockerfile 檔案來建立,也可以從公有倉庫中下載使用。公有倉庫中包含了大量的映象,可以供開發者快速使用。

docker架構:Docker 的架構包括 Docker 客戶端、Docker 伺服器和 Docker 映象倉庫。Docker 客戶端是一個命令列工具,可以透過它來與 Docker 伺服器進行通訊。Docker 伺服器是一個後臺程式,負責管理容器和映象。Docker 映象倉庫是一箇中央儲存庫,可以用來儲存和分享 Docker 映象。

image

這裡不在贅述基礎知識了,如果需要可以自行去docker官網進行檢視;

安裝

windows:window安裝地址,直接按照安裝提示,一直下一步即可安裝成功。

linux:如果想要簡單快速直接安裝寶塔皮膚,命令列安裝有些複雜,需要根據不同情況安裝,這裡是博主的安裝流程:

  1. 使用 root 許可權登入 Centos。確保 yum 包更新到最新。yum ‐y update
  2. 安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的。yum install ‐y yum‐utils device‐mapper‐persistent‐data lvm2
  3. 設定yum源,並更新 yum 的包索引 yum‐config‐manager ‐‐add‐repo http://mirrors.aliyun.com/docker‐ce/linux/centos/docker‐ce.repo yum makecache fast
  4. 可以檢視所有倉庫中所有docker版本,並選擇特定版本安裝 yum list docker‐ce ‐‐showduplicates | sort ‐r
  5. 安裝docker yum ‐y install docker‐ce‐18.03.1.ce # 這是指定版本安裝 yum ‐y install docker‐ce # 這是安裝最新穩定版
  6. 啟動並加入開機啟動 systemctl start docker systemctl enable docker
  7. 驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了) docker version
  8. 解除安裝docker yum ‐y remove docker‐engine

建立映象

公有映象

Docker Hub 是 Docker 官方提供的公有映象倉庫,包含大量的 Docker 映象,供開發者使用。與 Maven 倉庫類似,開發者可以在 Docker Hub 上搜尋並下載需要的映象,從而快速搭建開發環境。以java為例,命令列模式:

  1. docker search java
  2. 執行完 docker pull 命令後,Docker 會從 Docker Hub 中的 Java 倉庫下載最新版本的 Java 映象。如果需要下載指定版本的映象,則可以在映象名後面加上冒號並指定版本號。例如: docker pull java:8
  3. docker images 列出映象
  4. 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先在網頁端註冊,並記住賬號密碼

image

然後再本地使用docker login命令進行登入,這樣我們的伺服器也會進行登入到私有庫,否則你將push失敗。

登入成功後,就可以將本地的映象上傳到 Docker Registry 中。可以使用 docker tag 命令來為映象打上標籤,然後使用 docker push 命令來上傳映象。例如:

docker tag app 【你的賬號名】/app

修改tag成功後即可推送image到遠端倉庫:docker push 【你的賬號名】/app

執行映象

使用以下docker run命令即可新建並啟動一個容器,該命令是最常用的命令,它有很多選項,下面將列舉一些常用的選項。

  1. -d選項:表示後臺執行
  2. -P選項:隨機埠對映
  3. -p選項:指定埠對映,有以下四種格式:-- ip:hostPort:containerPort、-- ip::containerPort、-- hostPort:containerPort、-- containerPort
  4. --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 技術的原理和使用方法。

公眾號

相關文章