一、Docker簡介
Docker 是一個開源的項目,誕生於2013 年初,最初是 dotCloud 公司內部一個雲平台的項目。它基於 Google 公司推出的 Go 語言實現。Docker 自開源後受到廣泛的關注和討論,甚至被喻為“下一次開源革命的領導者”。
Docker 利用 LXC 技術,以及 Linux 內核的 Cgroups 和 Namespace 等獨特技術對進程進行封裝,以達到和虛擬機類似的隔離效果,但更加輕便和高效。
Docker 以容器為單位進行應用程序的封裝和交付。它可以自動化的構建、測試和部署應用程序。容器提供了一個獨立的運行環境,它的配置和依賴關係被打包在一個可移植的靜態容器中。由於所有的容器通過同一種方式進行封裝,因此它們可以在任何 Docker 容器運行的環境中運行。
二、Docker 部署 jar
1、創建一個應用
首先,我們需要創建一個 Spring Boot 項目,作為我們的應用程序。使用以下命令創建並啟動一個默認 Spring Boot 應用程序。
spring init --dependencies=web myapp
cd myapp
./mvnw spring-boot:run
您應該可以在瀏覽器中訪問該應用程序,在 http://localhost:8080 上看到 Hello World!。
2、Dockerfile
創建 Dockerfile 文件, 並使用以下命令構建 Docker 鏡像。
FROM openjdk:8-jdk-alpine
WORKDIR /app
COPY target/myapp-0.0.1-SNAPSHOT.jar /app
ENTRYPOINT ["java","-jar","myapp-0.0.1-SNAPSHOT.jar"]
該 Dockerfile 文件從官方的 openjdk 鏡像構建一個新鏡像,並設置一個工作目錄 /app。將構建好的 jar 包放置在容器中的 /app 目錄,並運行 ENTRYPOINT 命令啟動應用程序。
使用以下命令構建 Docker 鏡像。
docker build -t myapp .
構建好的鏡像可以在本地鏡像列表中看到,使用以下命令列出鏡像。
docker images
3、運行 Docker 容器
運行容器前,我們需要停止之前的應用程序,並使用以下命令啟動 Docker 容器。
docker run -d -p 8080:8080 myapp
-d 參數表示容器在後台運行。-p 參數表示將容器內部的 8080 端口映射到主機的 8080 端口。
您應該可以在瀏覽器中訪問該應用程序,在 http://localhost:8080 上看到 Hello World!。
三、Docker Compose
1、創建 Docker Compose 文件
Docker Compose 是 Docker 官方推出的工具,用於定義和運行多容器的 Docker 應用程序。我們可以使用它來定義多個容器並相互通信的應用程序。
創建一個 docker-compose.yml 文件,添加以下內容。
version: '3'
services:
myapp:
build: .
ports:
- "8080:8080"
depends_on:
- mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
在這個文件中,我們定義了兩個服務。myapp 服務使用之前構建的 Docker 鏡像,並映射容器中的 8080 端口到主機的 8080 端口。mysql 服務使用官方的 MySQL 鏡像,並設置 ROOT 密碼。
2、啟動 Docker Compose
使用以下命令啟動 Docker Compose。
docker-compose up
啟動後,應用程序可以在 http://localhost:8080 上訪問。
3、關閉 Docker Compose
使用以下命令停止 Docker Compose。
docker-compose down
四、Docker Swarm
1、初始化 Docker Swarm
Docker Swarm 是 Docker 官方提供的容器編排工具。它可以讓您輕鬆地擴展和管理 Docker 容器。在使用 Docker Swarm 之前,我們需要初始化一個 Docker Swarm。
docker swarm init
這個命令將初始化一個 Docker Swarm,並返回一個命令,用於加入一個節點到 Swarm 中。
2、創建一個 Stack
創建一個名為 myapp 的 Stack,使用以下命令。
docker stack deploy -c docker-compose.yml myapp
這個命令將在 Swarm 中部署一個名為 myapp 的 Stack,它將啟動一個 myapp 服務和一個 mysql 服務。
3、查看服務
使用以下命令查看正在運行的服務。
docker service ls
您應該可以看到兩個服務,“myapp_myapp”和“myapp_mysql”。
使用以下命令查看服務的詳細信息。
docker service inspect myapp_myapp
您應該可以看到 myapp_myapp 服務的詳細信息,包括它的名稱、鏡像、副本數量、端口映射等。
4、擴展服務
使用以下命令將 myapp_myapp 服務的副本數量擴展到 3。
docker service scale myapp_myapp=3
您應該可以看到 myapp_myapp 服務的副本數量被擴展到 3。
5、關閉 Stack
使用以下命令關閉 Stack。
docker stack rm myapp
這個命令將刪除名為 myapp 的 Stack,停止所有關聯的服務。
五、總結
本文介紹了使用 Docker 部署 jar 文件的方法,包括手動部署、使用 Docker Compose 和使用 Docker Swarm。Docker 提供的容器化方式可以讓我們更輕鬆地進行應用程序的開發、測試和部署。希望本文可以幫助您更好的使用 Docker。
原創文章,作者:WKRJA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/360940.html