Mac環(huán)境SpringBoot項目Docker部署(獨家完整版)

一捞魁、Docker 簡介

Docker 是一種開源的容器化平臺仅父,允許開發(fā)人員將應用程序和所有其依賴項打包成輕量級、可移植的容器羊始,以便在任何地方運行旱幼。Docker 的優(yōu)勢和劣勢分析如下:

優(yōu)勢:

輕量級:Docker 容器僅包含應用程序及其依賴項,因此它們非常輕量級突委,可以非嘲芈保快地啟動和運行。

可移植性:Docker 容器可以在任何支持 Docker 的操作系統(tǒng)上運行匀油,這使得 Docker 容器可以輕松地在不同的環(huán)境中部署和運行闷旧。

容器化應用程序:Docker 可以將應用程序及其依賴項打包成容器,這使得應用程序更加可移植钧唐、可復用和可移植忙灼。

自動化:Docker 提供了一組工具,可以幫助開發(fā)人員自動化容器的部署钝侠、管理和監(jiān)控该园,這使得容器的生命周期管理更加簡單和可靠。

高可用性:Docker 容器可以在多個主機上部署和運行帅韧,并且可以自動進行故障轉(zhuǎn)移和負載均衡里初,從而提高了應用程序的高可用性。

劣勢:

初始學習曲線較高:Docker 是一個新興的技術(shù)忽舟,因此對于初學者來說可能存在一些學習曲線双妨。

需要一定的配置和管理:Docker 容器需要一些配置和管理淮阐,這可能需要一些經(jīng)驗和技能。

需要一定的開銷:Docker 容器是輕量級的刁品,但在使用中也可能會存在一些開銷泣特,特別是在部署和運行大型應用程序時。

對 Linux 的依存度較高:Docker 主要支持 Linux 系統(tǒng)挑随,因此在 Windows 或其他操作系統(tǒng)上部署和使用 Docker 可能需要更多的工作状您。

存在一些安全問題:由于 Docker 容器是輕量級的,因此它們很容易受到攻擊兜挨,因此在使用 Docker 時需要格外小心安全問題膏孟。

二、Docker 與Kubernetes的區(qū)別

Docker 和 Kubernetes(簡稱 K8s) 都是容器技術(shù)的代表拌汇,但它們在應用場景柒桑、實現(xiàn)方式和優(yōu)缺點等方面存在一些區(qū)別。

應用場景:

Docker 主要用于部署噪舀、運行和交付應用程序魁淳,它可以獨立運行、打包應用程序和依賴項傅联,并提供便捷的容器編排工具,例如 Docker Compose疚察、Docker Swarm 等蒸走。

Kubernetes 則主要用于容器集群的管理,例如容器的部署貌嫡、擴展比驻、伸縮和管理等,它可以支持多個容器編排工具岛抄,如 Docker Compose别惦、Kubernetes Deployment、Kubernetes Service 等夫椭。

實現(xiàn)方式:

Docker 是通過鏡像和容器實現(xiàn)的掸掸,其中鏡像是應用程序和依賴項的打包,容器則是應用程序的運行環(huán)境蹭秋。Kubernetes 則是通過 Pod扰付、Service、Deployment仁讨、ReplicaSet 等概念實現(xiàn)的羽莺,其中 Pod 是容器的集合,Service 是容器間通信的工具洞豁,Deployment 是容器部署工具盐固,ReplicaSet 是容器副本的編排工具荒给。

優(yōu)缺點:

Docker 的優(yōu)點包括易于使用、可移植性強刁卜、靈活性高志电、管理簡單等。缺點包括容器獨立性強长酗、難以擴展溪北、缺乏集群管理等功能。

Kubernetes 的優(yōu)點包括易于擴展夺脾、集群管理功能強大之拨、可靠性高、靈活性強等咧叭。缺點包括需要一些技術(shù)背景蚀乔、上手難度較大等。

總的來說菲茬,Docker 和 Kubernetes 都是容器技術(shù)的代表吉挣,它們在應用場景、實現(xiàn)方式和優(yōu)缺點等方面存在一些不同婉弹,用戶可以根據(jù)自己的需求選擇適合自己的工具睬魂。

三、Docker 的安裝

本教程以Mac環(huán)境為例安裝Docker镀赌。

1.下載Docker Desktop

通過https://docs.docker.com/desktop/release-notes/氯哮,下載相應的的版本。這里要注意一個問題商佛,如果后續(xù)要啟用Kubernetes喉钢,需要下載對應的版本,保證二者匹配良姆。

2.docker環(huán)境檢查:

docker --version

docker-compose --version

docker-machine --version

可以使用以上三個命令檢查環(huán)境肠虽。

  1. 嘗試運行nginx

docker run -d -p 80:80 --name webserver nginx

可以看到Docker通過pull自動拉去nginx鏡像,完成后在Docker Desktop中就能看到玛追。

  1. Docker Desktop 開啟 Kubernetes

(1)為 Docker daemon 配置鏡像加速

參考阿里云鏡像服務 或中科大鏡像加速地址https://docker.mirrors.ustc.edu.cn

{

"builder": {

"gc": {

  "defaultKeepStorage": "20GB",

  "enabled": true

}

},

"experimental": false,

"features": {

"buildkit": true

},

"registry-mirrors": [

"https://docker.mirrors.ustc.edu.cn"

]

}


配置完成后點擊右下角的Apply&restart税课。

(2)下載kubernetes

git clone <u>https://github.com/AliyunContainerService/k8s-for-docker-desktop.git</u>

切換到對應的分支,需要與Docker Desktop支持的kubernetes版本相一致痊剖。

git checkout v1.25.2

(3)執(zhí)行腳本

進入下載的目:cd k8s-for-docker-desktop

執(zhí)行:./load_images.sh

(4)啟動kubernetes

(5)使用Kubectl連接k8s

查看kubernetes狀態(tài):kubectl cluster-info

查看kubernetes運行的應用:kubectl get nodes:

查看kubernetes運行的服務:kubectl get pods

(6)配置Kubernetes 控制臺

cd k8s-for-docker-desktop

部署 Kubernetes dashboard:kubectl create -f kubernetes-dashboard.yaml

檢查 kubernetes-dashboard應用狀態(tài):kubectl get pod -n kubernetes-dashboard

開啟 API Server 訪問代理:kubectl proxy

訪問 Kubernetes dashboard:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

配置控制臺訪問令牌:

kubectl apply -f kube-system-default.yaml

對于Mac環(huán)境:

TOKEN=(kubectl -n kube-system describe secret default| awk '1=="token:"{print $2}')

kubectl config set-credentials docker-desktop --token="${TOKEN}"

echo $TOKEN

登錄dashboard:

選擇令牌伯复,輸入上面控制臺輸出的內(nèi)容。

四邢笙、安裝和啟動mysql

1.查詢 mysql最新的鏡像:docker search mysql

2.拉取最新的mysql版本:docker pull mysql:latest

3.創(chuàng)建容器內(nèi)在本地的映射文件夾

mkdir -p /xxxe/docker-mysql/data /xxx/docker-mysql/logs /xxx/docker-mysql/conf

初始化mysql的配置文件*.cnf啸如,在 /xxx/docker-mysql/conf下

touch /xxx/docker-mysql/conf//my.cnf

4.創(chuàng)建docker容器并啟動,將數(shù)據(jù),日志,配置文件映射到本機:

docker run -p 3306:3306 --name mysql -v /xxx/docker-mysql/conf:/etc/mysql/conf.d -v /xxx/docker-mysql/logs:/var/log/mysql -v /xxx/docker-mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

  1. 進入mysql容器

輸入:docker exec -it mysql /bin/bash

  1. 登錄mysql并設(shè)置權(quán)限

(1)輸入:mysql -uroot -p 氮惯,然后再輸入密碼即可

選擇數(shù)據(jù)庫:

show databases;

use mysql;

(2)查看用戶連接情況

select host, user, plugin, authentication_string, password_expired from user;

(3)修改密碼和權(quán)限

如果對應的host是localhost就需要將其改為 % 叮雳,不然會遠程連接失敗想暗。

修改密碼認證方式:ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456';

ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

由于mysql中root執(zhí)行綁定在了localhost,因此需要對root進行授權(quán):grant all on . to root@'%';// 允許所有終端訪問帘不。

刷新權(quán)限:FLUSH PRIVILEGES;

(4)遠程連接mysql

通過以上設(shè)置说莫,我們可以使用navicat或其他數(shù)據(jù)庫管理工具遠程連接mysql。

五寞焙、安裝和啟動mysql

1.創(chuàng)建掛載目錄以及獲取 redis.conf 配置文件

(1)創(chuàng)建掛載目錄

mkdir -p /xxx/docker-redis

mkdir -p /xxx/docker-redis/data

  1. 進入掛載目錄

cd /xxx/docker-redis

  1. 下載 redis.conf 文件

http://download.redis.io/redis-stable/redis.conf

  1. 更改 redis.conf 文件的權(quán)限

chmod 777 redis.conf

修改默認的 redis.conf 配置文件

vi redis.conf

#這行要注釋掉储狭,解除本地連接限制

bind 127.0.0.1 --> 需要注釋掉

# 默認 yes,如果設(shè)置為 yes捣郊,則只允許在本機的回環(huán)連接辽狈,其他機器無法連接。

protected-mode no

# 默認 no 為不守護進程模式呛牲,docker 部署不需要改為 yes刮萌,docker run -d 本身就是后臺啟動,不然會沖突

daemonize no

# 設(shè)置密碼

requirepass 123456

# 持久化

appendonly yes

5.docker run 運行 redis 鏡像

docker run --name redis -p 6380:6379 --privileged=true -v /xxx/docker-redis/redis.conf:/etc/redis/redis.conf -v /xxx/docker-redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

六娘扩、SpringBoot項目Docker打包部署

關(guān)于SpringBoot項目的搭建着茸,之前的文章已經(jīng)做過介紹,這里默認已經(jīng)具備完整的SpringBoot的項目琐旁,且使用到了redis和mysql涮阔,并且能夠在本地環(huán)境通過java -jar命令啟動。

1.Docker查看容器的ip地址

查看ip地址的目的在于灰殴,通常我們會在SpringBoot項目的yml配置文件中配置redis敬特、mysql等參數(shù),因此需要獲取到它們在容器內(nèi)的ip地址验懊。

輸入:docker inspect xxx| grep IPAddress

xxx為redis或mysql的容器名稱擅羞。

2.springboot項目docker打包部署

(1)pom添加docker依賴尸变。

(2)通過idea的maven工具打出jar包或war包义图。

(3)制作Dockerfile

在項目目錄下創(chuàng)建Dockerfile文件,文件內(nèi)容為:

FROM openjdk:8

EXPOSE 8081

VOLUME /tmp

ADD springbootdocker-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

(4)把打好的jar包移動到和Dockerfile同級目錄

(5)制作鏡像

下載jdk鏡像:docker pull openjdk:8

編譯:docker build -f Dockerfile -t app:1.0 .

執(zhí)行完畢后直接就在docker images中看到app這個SpringBoot的鏡像召烂。

(5)創(chuàng)建容器并啟動

docker run --name app -p 8081:8081 -d app:2.0碱工,也可以在Docker Desktop客戶端啟動。

運行或停止容器:

docker start app

docker stop app

(6)查看日志

訪問SpringBoot項目的服務奏夫,如需查看接口日志可以通過如下方式:

docker logs -f -t --tail 50 app

至此怕篷,Mac環(huán)境SpringBoot項目Docker部署就完成了,非常詳細酗昼,供大家參考廊谓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市麻削,隨后出現(xiàn)的幾起案子蒸痹,更是在濱河造成了極大的恐慌春弥,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叠荠,死亡現(xiàn)場離奇詭異匿沛,居然都是意外死亡,警方通過查閱死者的電腦和手機榛鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門逃呼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人者娱,你說我怎么就攤上這事抡笼。” “怎么了肺然?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵蔫缸,是天一觀的道長。 經(jīng)常有香客問我际起,道長拾碌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任街望,我火速辦了婚禮校翔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灾前。我一直安慰自己防症,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布哎甲。 她就那樣靜靜地躺著蔫敲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炭玫。 梳的紋絲不亂的頭發(fā)上奈嘿,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音吞加,去河邊找鬼裙犹。 笑死,一個胖子當著我的面吹牛衔憨,可吹牛的內(nèi)容都是我干的叶圃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼践图,長吁一口氣:“原來是場噩夢啊……” “哼掺冠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起码党,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤德崭,失蹤者是張志新(化名)和其女友劉穎悍及,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體接癌,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡心赶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缺猛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缨叫。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荔燎,靈堂內(nèi)的尸體忽然破棺而出耻姥,到底是詐尸還是另有隱情,我是刑警寧澤有咨,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布琐簇,位于F島的核電站,受9級特大地震影響座享,放射性物質(zhì)發(fā)生泄漏婉商。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一渣叛、第九天 我趴在偏房一處隱蔽的房頂上張望丈秩。 院中可真熱鬧,春花似錦淳衙、人聲如沸蘑秽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肠牲。三九已至,卻和暖如春靴跛,著一層夾襖步出監(jiān)牢的瞬間缀雳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工汤求, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俏险,地道東北人严拒。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓扬绪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親裤唠。 傳聞我的和親對象是個殘疾皇子挤牛,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容