柚子快報(bào)邀請碼778899分享:Docker的運(yùn)用
柚子快報(bào)邀請碼778899分享:Docker的運(yùn)用
文章目錄
一、 Docker介紹二、Docker常用命令三、Docker 部署微服務(wù)項(xiàng)目四、Docker 使用場景五、Docker模擬場景5.1 模擬部署Nacos5.2 模擬部署Mongodb5.3 模擬部署RabbitMQ
一、 Docker介紹
Docker是一種開源軟件平臺(tái),用于在不同的操作系統(tǒng)(如Windows、Linux等)之間隔離應(yīng)用程序,以便更有效和可靠地管理這些應(yīng)用程序的部署和運(yùn)行。 Docker平臺(tái)由三個(gè)基本概念組成:
鏡像(Image):鏡像是 Docker 包含應(yīng)用所需的一切的文件系統(tǒng)和配置的靜態(tài)表示。鏡像是一個(gè)只讀的模板,可以用來創(chuàng)建 Docker 容器。 容器(Container):容器是鏡像的運(yùn)行時(shí)實(shí)例。容器包含了一個(gè)應(yīng)用程序及其依賴項(xiàng),并且可以在任何 Docker 主機(jī)上運(yùn)行。 倉庫(Repository):倉庫是存放鏡像的地方,類似于代碼倉庫。Docker Hub是一個(gè)公共的倉庫,用戶可以從中獲取各種鏡像。
Docker平臺(tái)的優(yōu)勢包括:
快速部署:Docker平臺(tái)可以快速創(chuàng)建和部署應(yīng)用程序,無需很長時(shí)間的安裝和配置過程。 可靠性:Docker的容器隔離使應(yīng)用程序更加可靠,因?yàn)樗梢员苊庖蕾図?xiàng)沖突和環(huán)境變化。 可移植性:由于 Docker 平臺(tái)在各種操作系統(tǒng)上都能運(yùn)行,因此應(yīng)用程序可以更輕松地在不同的環(huán)境中遷移。
在應(yīng)用程序開發(fā)中,Docker 可以在以下方面提供幫助:
開發(fā)環(huán)境一致性:開發(fā)人員可以使用 Docker 鏡像構(gòu)建開發(fā)環(huán)境,以確保團(tuán)隊(duì)成員之間具有一致的開發(fā)環(huán)境。 持續(xù)集成和部署:Docker 使得在 CI/CD 環(huán)境中更容易進(jìn)行自動(dòng)化部署和升級(jí)操作,幫助開發(fā)人員更加頻繁地發(fā)布和測試新版本。 開發(fā)和生產(chǎn)環(huán)境一致性:使用 Docker 平臺(tái)可以確保在開發(fā)和生產(chǎn)環(huán)境中使用完全相同的應(yīng)用程序和配置,從而減少可能會(huì)導(dǎo)致生產(chǎn)環(huán)境故障的變量。
二、Docker常用命令
docker run:運(yùn)行一個(gè)容器docker ps:列出所有正在運(yùn)行的容器docker images:列出所有鏡像docker stop:停止一個(gè)或多個(gè)容器docker rm:刪除一個(gè)或多個(gè)容器docker rmi:刪除一個(gè)或多個(gè)鏡像docker build:構(gòu)建一個(gè)新的鏡像docker exec:在正在運(yùn)行的容器中執(zhí)行命令docker inspect:查看容器或鏡像的詳細(xì)信息docker logs:查看容器的日志信息docker pull:下載一個(gè)鏡像docker push:將本地的鏡像推送到遠(yuǎn)程倉庫docker-compose:使用docker-compose命令編排容器docker network:管理Docker網(wǎng)絡(luò)docker volume:管理Docker卷
三、Docker 部署微服務(wù)項(xiàng)目
Docker 部署微服務(wù)項(xiàng)目需要以下步驟:
準(zhǔn)備 Docker 鏡像
首先需要將微服務(wù)應(yīng)用程序打包成 Docker 鏡像??梢允褂?Dockerfile 文件定義 Docker 鏡像的構(gòu)建過程,然后使用命令 docker build 構(gòu)建鏡像。
部署 Docker 鏡像
在 Docker 主機(jī)上部署 Docker 鏡像,可以使用 Docker compose 工具來定義和管理多個(gè) Docker 容器的生命周期。在 Docker Compose 文件中,定義每個(gè)組件(或微服務(wù))所需的鏡像、環(huán)境變量、網(wǎng)絡(luò)配置等。
配置 Docker 網(wǎng)絡(luò)
微服務(wù)應(yīng)用程序在 Docker 中運(yùn)行時(shí),需要使用 Docker 網(wǎng)絡(luò)來實(shí)現(xiàn)相互通信??梢詣?chuàng)建自定義 Docker 網(wǎng)絡(luò)來提供服務(wù)發(fā)現(xiàn)和負(fù)載均衡等功能。
監(jiān)控和管理
使用 Docker 容器和鏡像管理工具,如 Docker Swarm,Kubernetes 等來監(jiān)控、管理、升級(jí)和擴(kuò)展微服務(wù)應(yīng)用程序。
總體來說,Docker 可以幫助簡化微服務(wù)應(yīng)用程序的部署、升級(jí)和擴(kuò)展過程,提高應(yīng)用程序的可靠性和可維護(hù)性。
四、Docker 使用場景
快速開發(fā)環(huán)境搭建:Docker 可以快速構(gòu)建適合于不同語言、不同框架的開發(fā)環(huán)境,避免本地環(huán)境的差異性。 應(yīng)用的打包和發(fā)布:將應(yīng)用程序和其依賴項(xiàng)打包到一個(gè) Docker 鏡像中,然后在各種環(huán)境中進(jìn)行部署,包括本地環(huán)境、云環(huán)境或者其他服務(wù)器。 微服務(wù)架構(gòu):Docker 可以在其容器中高效地運(yùn)行各種服務(wù),包括數(shù)據(jù)庫、緩存、消息隊(duì)列等,讓整個(gè)架構(gòu)變得更加模塊化和可維護(hù)。 持續(xù)集成和持續(xù)部署:Docker 可以與 CI/CD 工具一起使用,提高應(yīng)用程序的交付速度和質(zhì)量。 多租戶環(huán)境:Docker 可以在一個(gè)主機(jī)上運(yùn)行多個(gè)容器,每個(gè)容器隔離運(yùn)行,可以實(shí)現(xiàn)多租戶的環(huán)境。
五、Docker模擬場景
5.1 模擬部署Nacos
Nacos是一個(gè)開源的,易于構(gòu)建,易于使用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn),配置管理和服務(wù)管理平臺(tái)。Nacos使用了一系列的技術(shù)來實(shí)現(xiàn)它的功能,其中包括Spring Cloud Config,Eureka,Dubbo等。
在Docker中,我們可以使用Nacos來模擬部署,下面是具體的步驟:
安裝Docker和Docker Compose
在使用Docker模擬部署Nacos之前,我們需要先安裝Docker和Docker Compose。
下載Nacos的Docker鏡像
使用以下命令從Docker Hub下載Nacos的Docker鏡像:
docker pull nacos/nacos-server
創(chuàng)建Docker Compose文件
創(chuàng)建一個(gè)docker-compose.yaml文件,將以下內(nèi)容復(fù)制到文件中。
version: '3.1'
services:
nacos:
image: nacos/nacos-server
container_name: nacos
ports:
- "8848:8848"
environment:
- PREFER_HOST_MODE=hostname
volumes:
- "./data:/home/nacos/data"
- "./logs:/home/nacos/logs"
- "./init.d:/home/nacos/init.d"
其中,我們將Nacos映射到端口號(hào)為8848,并將數(shù)據(jù)和日志保存在本地的data和logs目錄中。
啟動(dòng)Nacos
使用以下命令啟動(dòng)Nacos:
docker-compose up -d
訪問Nacos
訪問http://localhost:8848/nacos/,即可進(jìn)入Nacos的控制臺(tái)。
至此,我們已經(jīng)成功地使用Docker模擬部署了Nacos??梢栽诳刂婆_(tái)中進(jìn)行服務(wù)的注冊和發(fā)現(xiàn)等操作。
5.2 模擬部署Mongodb
要使用 Docker 模擬部署 Mongodb,可以按照以下步驟操作:
安裝 Docker:在您的計(jì)算機(jī)上安裝 Docker。 下載 Mongodb 鏡像:使用以下命令從 Docker Hub 下載最新的 Mongodb 鏡像。
docker pull mongo
運(yùn)行 Mongodb 容器:使用以下命令運(yùn)行 Mongodb 容器。
docker run -d -p 27017:27017 --name mymongodb mongo
注:-d 選項(xiàng)用于在后臺(tái)運(yùn)行容器,-p 選項(xiàng)將容器端口映射到主機(jī)端口,–name 選項(xiàng)為容器命名。
測試 Mongodb 容器:使用以下命令測試 Mongodb 容器是否正在運(yùn)行。
docker ps
如果一切正常,您應(yīng)該能夠看到正在運(yùn)行的容器。
連接 Mongodb 容器:使用以下命令連接到 Mongodb 容器。
docker exec -it mymongodb bash
運(yùn)行 Mongodb shell:使用以下命令運(yùn)行 Mongodb shell。
mongo
現(xiàn)在您可以在 Mongodb shell 中使用所有 Mongodb 命令來管理數(shù)據(jù)庫。
退出 Mongodb shell:使用以下命令退出 Mongodb shell。
exit
停止 Mongodb 容器:使用以下命令停止 Mongodb 容器。
docker stop mymongodb
現(xiàn)在,您已經(jīng)成功地使用 Docker 模擬部署了 Mongodb。
5.3 模擬部署RabbitMQ
在Docker中模擬部署RabbitMQ可以分為以下步驟:
下載RabbitMQ鏡像
docker pull rabbitmq:management
運(yùn)行RabbitMQ容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
訪問RabbitMQ的web管理頁面 在瀏覽器中輸入 http://localhost:15672 訪問RabbitMQ的web管理頁面,默認(rèn)用戶名和密碼為 guest/guest。 配置RabbitMQ 我們可以在web管理頁面中配置RabbitMQ,例如創(chuàng)建隊(duì)列、交換機(jī)、綁定等等。 連接RabbitMQ 我們可以使用客戶端代碼連接RabbitMQ,例如使用Python的pika庫連接RabbitMQ并發(fā)送和接收消息。
參考代碼如下:
import pika
# 連接RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 創(chuàng)建隊(duì)列
channel.queue_declare(queue='hello')
# 發(fā)送消息
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
# 定義回調(diào)函數(shù)
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
# 接收消息
channel.basic_consume(queue='hello',
on_message_callback=callback,
auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
以上就是在Docker中模擬部署RabbitMQ的步驟。
盈若安好,便是晴天
柚子快報(bào)邀請碼778899分享:Docker的運(yùn)用
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。