Docker高級管理

一、Docker 容器的網絡模式

????????當項目大規模使用 Docker 時,容器通信的問題也就產生了。要解決容器通信問題,必須先了解很多關于網絡的知識。Docker 的網絡模式非常豐富,可以滿足不同容器的通信要求,下表列出了這些網絡模式的主要信息

網絡模式創建此種網絡模式的關鍵選項簡單說明
host 模式--network host容器直接使用宿主機的網絡棧,沒有獨立的網絡命名空間,網絡性能高,但容器與宿主機共享網絡資源,易出現端口沖突
container 模式--network container:<已有容器名或 ID>新容器共享指定已有容器的網絡命名空間,兩個容器網絡配置相同,適用于需要緊密耦合通信的容器組合
none 模式--network none容器僅有一個 lo 回環接口,無任何外部網絡連接,適用于對網絡安全性要求極高或需手動配置網絡的場景
bridge 模式默認模式,可通過 -d bridge 手動指定(一般省略)Docker 默認網絡模式,創建 docker0 虛擬網橋,容器通過 veth 設備連到該網橋,容器有獨立 IP,借助主機 NAT 訪問外部網絡
Overlay 模式-d overlay用于 Docker Swarm 集群,基于 VXLAN 技術創建跨主機的虛擬覆蓋網絡,實現不同宿主機上容器間的通信
macvlan 模式-d macvlan,還需指定 --subnet、--gateway 和 -o parent=<宿主機物理網卡>為容器分配唯一 MAC 地址,使其像獨立物理設備,直接連接宿主機物理網絡接口,繞過 docker0 網橋,提高網絡性能
自定義網絡模式docker network create 結合如 --subnet、--gateway、--ip-range 等參數用戶可根據需求靈活配置網絡參數,如子網、網關、IP 范圍等,創建符合特定要求的網絡

1、查看網絡

docker network ls

2、bridge模式

橋接模式(Bridge)

特點:容器通過宿主機的網橋(docker0)與外界通信,默認分配獨立 IP。

優點:隔離性好,適合多數場景。

缺點:需要 NAT 轉發,性能略低;端口需手動管理避免沖突。

特性描述
網絡隔離每個容器擁有獨立的網絡命名空間(IP、端口、路由表)。
核心組件- 虛擬網卡對(veth pair):連接容器與宿主機。
- 網橋(docker0):宿主機上的虛擬交換機。
通信機制- 容器內流量通過 veth pair 到達 docker0。
- 通過 NAT 轉發訪問外部網絡。
IP 分配Docker 自動分配私有 IP(默認網段 172.17.0.0/16)。
端口映射通過?-p?或?-P?參數將容器端口映射到宿主機。
數據流向容器 → veth pair → docker0 → 宿主機網卡 → 外部網絡。

創建

#創建
docker network create -d bridge aaa

刪除

#刪除
docker network rm my-net

運行容器連接到該網絡

docker run -itd --rm --name zhangsan --network aaa  busybox sh -c "top"docker run -itd --rm --name lisi --net=aaa busybox sh -c "top"

運行一個容器加入到該網絡

docker run -it --rm --name wangwu --net=aaa busybox sh

3、host模式

主機模式(Host)

特點:容器直接使用宿主機網絡,無獨立 IP 和端口空間。

優點:性能最佳,適合對網絡延遲敏感的應用。

缺點:容器間、容器與宿主機共享端口,需手動避免沖突。

特性描述
網絡隔離容器直接使用宿主機的網絡命名空間,無隔離。
核心組件共享宿主機的網卡、IP、端口、路由表等。
通信機制容器內應用直接通過宿主機網絡接口通信,無需 NAT 轉發。
端口管理容器暴露的端口直接占用宿主機端口,需手動避免沖突。
性能優勢消除網絡虛擬化開銷,性能接近原生應用。
數據流向容器 → 宿主機網卡 → 外部網絡。

運行容器連接到該網絡

docker run -itd --net=host --name host1 busybox sh

docker exec -it host1 shifconfig

4、container模式

容器模式(Container)

特點:容器共享另一個容器的網絡棧,IP 和端口完全相同。

適用場景:緊密耦合的應用(如 sidecar 模式)

特性描述
網絡隔離多個容器共享同一個網絡命名空間(IP、端口、路由表)。
核心組件- 基礎容器(Base Container):提供網絡棧。
- 共享容器:加入基礎容器的網絡命名空間。
通信機制容器間通過?localhost?直接通信,無需網絡開銷。
典型場景- Sidecar 模式(如主應用與日志收集器)。
- 容器間高性能通信。
數據流向容器 A → 共享網絡棧 → 容器 B。

創建并啟動一個容器

docker run -itd --name AAA busybox

創建容器時指定模式為container并加入AAA這個命名空間中

docker run -itd --net=container:AAA --name aaaaaa busybox

兩個容器的IP一致

5、none模式

無網絡模式(None)

特點:容器僅有 loopback 接口,無外部網絡連接。

適用場景:純離線計算或數據處理任務。

特性描述
網絡隔離容器僅有 loopback 接口(127.0.0.1),無外部網絡連接。
核心組件空網絡命名空間,無虛擬網卡或網橋。
適用場景- 純離線計算任務。
- 敏感數據處理(需完全隔離)。
通信限制無法與外部網絡或其他容器通信,僅支持容器內部進程間通信。
docker network lsdocker run -itd --net=none --name libai busybox shdocker exec -it libai sh

6、macvlan模式

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=ens160 -o macvlan_mode=bridge macvlan111docker network lsdocker run -itd --net=macvlan111 --name lihei busybox shdocker exec -it lihei shifconfig# 創建一個名為macvlan111的macvlan網絡
# -d macvlan:指定網絡驅動為macvlan
# --subnet=192.168.1.0/24:設置子網為192.168.1.0,子網掩碼為255.255.255.0
# --gateway=192.168.1.1:設置網關為192.168.1.1
# -o parent=ens160:指定物理網卡為ens160
# -o macvlan_mode=bridge:設置macvlan模式為橋接模式
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=ens160 -o macvlan_mode=bridge macvlan111# 列出所有Docker網絡,驗證macvlan111網絡是否創建成功
docker network ls# 運行一個名為lihei的busybox容器
# -itd:交互式運行并在后臺保持容器運行
# --net=macvlan111:將容器連接到macvlan111網絡
# --name lihei:指定容器名稱為lihei
# busybox sh:使用busybox鏡像并執行sh shell
docker run -itd --net=macvlan111 --name lihei busybox sh# 進入lihei容器的交互式shell
docker exec -it lihei sh# 在容器內部執行ifconfig命令,查看網絡接口配置
ifconfig

7、自定義模式

特點:基于 Bridge 或 Overlay 創建自定義網絡,支持 DNS 自動解析。

優點:靈活配置網絡策略,推薦生產環境使用

特性描述
網絡隔離基于用戶定義的網橋或 overlay 網絡,支持多子網隔離。
核心組件- 自定義網橋(如?docker network create my-net)。
- DNS 服務:自動解析容器名到 IP。
通信機制- 同一網絡內容器通過容器名直接通信。
- 跨網絡通信需路由或端口映射。
IP 管理通過 IPAM(IP Address Management)自動分配唯一 IP。
高級特性- 支持網絡策略(如防火墻規則)。
- 跨主機 overlay 網絡(VXLAN/GRE)。
數據流向容器 → 自定義網橋 → 宿主機網卡 → 外部網絡。
docker network create --subnet=172.100.0.0/16 --gateway=172.100.0.1 dufu
docker network ls
docker run -itd --name songjiang --net=dufu busybox
docker run -itd --name linchong --net=dufu busybox
docker ps -a
docker exec -it songjiang sh
ping linchong

二、端口映射

????????Docker 是一個開源的容器化平臺,用于構建、運行和管理應用程序。它使用容器來打包應用程序及其依賴項,使得應用程序可以在不同的環境中快速、可靠地運行。在 Docker 中,端口映射是一個重要的特性,它允許容器內部的應用程序與宿主機進行通信。

????????Docker 的端口映射使用 -p 或 --publish 選項來實現。通過該選項,可以將容器內部的端口映射到宿主機上的某個端口。這樣,容器內部的應用程序可以通過宿主機的端口來訪問外部的網絡或服務。宿主機上的端口號,表示容器內部的端口號。通過指定這兩個端口號,Docker 會將容器內部的端口映射到宿主機的端口上。

1:端口映射

(1)-P(大寫):指的是容器應用 PORT 隨機映射到宿主機上的 PORT
  • 自動綁定所有對外提供服務的容器端口,映射的端口將會從沒有使用的端口池中自動隨機選擇。但是如果連續啟動多個容器的話,則下一個容器的端口默認是當前容器占用端口號 +1。
  • 生產場景一般不使用隨機映射,好處是由 docker 分配,宿主機端口不會沖突。
(2)-p(小寫):(宿主機 PORT: 容器 PORT)
  • 宿主機 IP 不寫表示 “0.0.0.0”,宿主機 PORT 不寫表示隨機端口,容器 PORT 必須指定,可以同時對多個端口進行映射綁定。
  • 指定端口映射,在標準化場景下使用頻率高。
  • 端口的取值范圍 32768--61000 之間

2、隨機映射

docker run --rm -d -P nginxdocker ps -acurl 192.168.10.101:32768

宿主機隨機映射

docker run --rm -d -p 80 nginx
docker ps -a

3、指定映射

docker run --rm -d -p 8080:80 nginx
docker ps -a

三、持久化

1:什么是數據卷

數據卷是一個可供一個或多個容器使用的特殊目錄,它繞過了容器的文件系統,直接將宿主機上的目錄或文件掛載到容器內部。這意味著即使容器被刪除,數據卷中的數據也不會丟失,從而實現了數據的持久化存儲。

2:數據卷的作用

?數據持久化

????????容器的生命周期可能是短暫的,當容器被刪除時,其內部文件系統中的數據也會隨之消失。而數據卷可以將數據存儲在宿主機上,確保數據不會因為容器的刪除而丟失。

數據共享

????????多個容器可以同時掛載同一個數據卷,從而實現容器之間的數據共享。這對于需要共享配置文件、日志文件或其他數據的應用場景非常有用。

數據備份和恢復

????????由于數據卷中的數據存儲在宿主機上,因此可以方便地進行備份和恢復操作。

分離數據和應用

????????將數據存儲在數據卷中,可以使容器的鏡像更加輕量級,只包含應用程序本身,而將數據分離出來,提高了容器的可移植性和可維護性。

3、匿名

docker run -itd -v /data1 -v /data2 --name web01 centos:7docker ps -adocker exec -it web01 /bin/bashcd /data1touch aaacd /data2touch bbbexit

cd /var/lib/docker/volumes/
cd 0cb20dc1253c4a323eaad507d1c1d26ab1c365eb053e5002456be259657d5fec/_data
ls

4、具名

docker volume create my_volumedocker run -itd -v my_volume:/data --name web02 centos:7docker exec -it web02 /bin/bashcd datatouch AAAAAAAexit
cd /var/lib/docker/volumes/_data/
ls

5、共享容器數據卷

創建掛載點

mkdir -p /www/html
mkdir -p /www/conf
mkdir -p /www/log

準備數據

配置文件
vim /www/conf/nginx.conf###編輯內容###
#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /www/html;index  index.html index.htm index.php;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           /www/html;#    fastcgi_pass   php01:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi.conf;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}
daemon off;
網頁文件
echo "KGC" > /www/html/index.html

創建容器

docker run -d -p 9999:80 -v /www/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/html:/www/html -v /www/log:/var/log/nginx --name web999 nginx /bin/bash -c "nginx"docker ps -a

訪問測試

curl 192.168.10.101:9999

cat /www/log/access.log

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913764.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ABP VNext + Tye:本地微服務編排與調試

ABP VNext Tye&#xff1a;本地微服務編排與調試 &#x1f680; &#x1f4da; 目錄ABP VNext Tye&#xff1a;本地微服務編排與調試 &#x1f680;TL;DR ?一、環境與依賴 &#x1f6e0;?二、核心配置詳解 &#x1f680;1. 主配置 tye.yaml三、多環境文件 &#x1f331;&am…

Vue響應式原理一:認識響應式邏輯

核心思想&#xff1a;當數據發生變化時&#xff0c;依賴該數據的代碼能夠自動重新執行Vue中的應用&#xff1a;在data或ref/reactive中定義的數據&#xff0c;當數據變化時template會自動更新template的本質&#xff1a; 是render()函數, 用變化之后的數據重新執行render()函數…

Redis:分組與設備在 Redis 中緩存存儲設計

一、緩存存儲結構設計 分組與設備的映射關系&#xff08;使用 Set 結構&#xff09;&#xff1a; 鍵格式&#xff1a;采用 group:{groupId}:devices 的格式作為 Redis 中 Set 的鍵&#xff0c;例如 group:1:devices 就代表了分組 ID 為 1 的分組所關聯的設備集合。值內容&#…

Leetcode 3605. Minimum Stability Factor of Array

Leetcode 3605. Minimum Stability Factor of Array 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3605. Minimum Stability Factor of Array 1. 解題思路 這一題的核心思路是二分法&#xff0c;本質上就是我們給定一個常數kkk&#xff0c;然后考察是否存在一個構造使得能夠…

編譯安裝的Mysql5.7報“Couldn‘t find MySQL server (mysqld_safe)“的原因 筆記250709

編譯安裝的Mysql5.7報"Couldn’t find MySQL server (mysqld_safe)"的原因 筆記250709 MySQL 的安裝路徑與配置文件&#xff08;如 my.cnf 或 mysql.server&#xff09;中指定的 basedir 不一致。 mysqld_safe 文件實際位置與系統查找路徑不匹配&#xff08;常見于自…

在 Ubuntu 下配置 oh-my-posh —— 普通用戶 + root 各自使用獨立主題(共享可執行)

&#x1f9e9; 在 Ubuntu 下配置 oh-my-posh —— 普通用戶 root 各自使用獨立主題&#xff08;共享可執行&#xff09;? 目標說明普通用戶 使用 tokyonight_storm 主題 root 用戶 使用 1_shell 主題 共用全局路徑下的 oh-my-posh 可執行文件 正確加載 Homebrew 到環境變量中…

Spring Boot 項目中的多數據源配置

關鍵詞&#xff1a;Spring Boot、多數據源配置、MySQL、SQL Server、Oracle、動態切換 ? 摘要 在實際企業級開發中&#xff0c;一個 Spring Boot 項目可能需要連接多個數據庫&#xff0c;比如 MySQL、SQL Server 和 Oracle。不同的業務模塊可能依賴不同的數據源&#xff0c;這…

MATLAB/Simulink電機控制仿真代做 同步異步永磁直驅磁阻雙饋無刷

以下是針對 MATLAB/Simulink 電機控制仿真 的系統性解決方案&#xff0c;涵蓋 同步電機、異步電機、永磁電機、直驅電機、磁阻電機、雙饋電機、無刷直流電機&#xff08;BLDC&#xff09; 的建模與控制策略實現&#xff0c;支持代做服務的技術細節和代碼示例。一、電機建模與仿…

限流算法深度探索:從理論到實踐的生產級避坑指南

凌晨3點&#xff0c;監控警報刺耳地尖叫著。我盯著屏幕上垂直下跌的服務可用性曲線&#xff0c;意識到那個被忽視的限流配置項終于引爆了——每秒1000次的支付請求正像洪水般沖垮我們的系統。這次事故讓我深刻理解&#xff1a;限流不是可選項&#xff0c;而是分布式系統的生存法…

企業級后臺管理系統的困境與飛算 JavaAI 的破局之道

企業級后臺管理系統如 CRM&#xff08;客戶關系管理系統&#xff09;、ERP&#xff08;企業資源計劃系統&#xff09;已成為支撐企業高效運轉的核心骨架。它們如同企業的 “神經中樞”&#xff0c;串聯起客戶數據、財務信息、供應鏈流程等關鍵環節&#xff0c;為決策制定、業務…

快速上手百寶箱搭建知識闖關游戲助手

引言&#xff1a;讓學習更有趣&#xff0c;AI 賦能知識闖關新體驗 1.在信息爆炸的時代&#xff0c;傳統的填鴨式教學方式已難以滿足現代用戶對高效、個性化和趣味化學習的需求。越來越多的學習者傾向于通過互動性強、參與感十足的方式獲取知識。在此背景下&#xff0c;游戲化學…

【YOLOv11-目標檢測】目標檢測數據格式(官方說明)

原文鏈接&#xff1a; https://docs.ultralytics.com/datasets/detect/ 寫在前面 訓練一個魯棒且準確的目標檢測模型需要一個全面的數據集。本文介紹&#xff1a;與Ultralytics YOLO模型兼容的各種數據集格式&#xff0c;并深入解析了它們的結構、使用方法以及如何在不同的格…

yolo8實現目標檢測

?步驟一&#xff1a;安裝 PyTorch&#xff08;M1 專用&#xff09;# 推薦使用官方 MPS 后端&#xff08;Apple Metal 加速&#xff09; pip install torch torchvision torchaudio確認是否使用了 Apple MPS&#xff1a;import torch print(torch.backends.mps.is_available()…

安全管理協議(SMP):配對流程、密鑰生成與防中間人攻擊——藍牙面試核心考點精解

一、SMP 核心知識點高頻考點解析1.1 SMP 在藍牙安全體系中的定位考點&#xff1a;SMP 的功能與協議棧位置解析&#xff1a; SMP&#xff08;Security Manager Protocol&#xff0c;安全管理協議&#xff09;是藍牙核心規范中負責設備配對、密鑰生成與安全連接的關鍵協議&#x…

U盤實現——U 盤類特殊命令

文章目錄 U 盤類特殊命令U 盤的命令封包命令階段數據階段狀態階段get max luninquiry(0x12)read format capacities(0x23)read capacity(0x25)mode sense(0x1a)test unit ready(0x00)read(10) 0x28write(10) 0x2aU 盤類特殊命令 U 盤的命令封包 命令階段 命令階段主要由主機通…

深度帖:瀏覽器的事件循環與JS異步

一、瀏覽器進程 早期的瀏覽器是單進程的&#xff0c;所有功能雜糅在一個進程中&#xff1b;現在的瀏覽器是多進程的&#xff0c;包含瀏覽器進程、網絡進程、渲染進程等等&#xff0c;每個進程負責的工作不同。瀏覽器進程&#xff1a;負責界面顯示&#xff08;地址欄、書簽、歷史…

Linux網絡:UDP socket創建流程與簡單通信

本文介紹 UDP 服務端與客戶端 的創建流程&#xff0c;和相關的函數接口 核心流程 創建 socket → socket()填寫服務器地址信息 → sockaddr_in 結構體綁定地址和端口 → bind()接收并響應客戶端數據 → recvfrom() / sendto()socket() #include<sys/so…

windows內核研究(系統調用 1)

WindowsAPI函數的調用過程什么是WindowsApi&#xff1f;Windows API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;是微軟為Windows操作系統提供的一套系統級編程接口&#xff0c;允許開發者與操作系統內核、硬件、系統服務等進行交互…

【前端】異步任務風控驗證與輪詢機制技術方案(通用筆記版)

一、背景場景 在某類生成任務中&#xff0c;例如用戶點擊“執行任務”按鈕后觸發一個較耗時的后端操作&#xff08;如生成報告、渲染圖像、轉碼視頻等&#xff09;&#xff0c;由于其調用了模型、渲染服務或需要較長處理時間&#xff0c;為了防止接口被頻繁惡意調用&#xff0c…

Vim 編輯器常用操作詳解(新手快速上手指南)

&#x1f4bb; Vim 編輯器常用操作詳解&#xff08;新手快速上手指南&#xff09;作者&#xff1a;Lixin 日期&#xff1a;2025-07-09 學習內容&#xff1a;Vim 編輯器基礎 常用快捷鍵 Xshell/Xftp連接 Linux基本操作 學習目標&#xff1a;掌握 Vim 的三種常用模式切換與基本…