LINUX中Docker?Swarm的介紹和詳細(xì)使用教程
一:Docker
(1)什么是Docker Swarm
DockerSwarm 是什么?
Docker Swarm 是 Docker 的集群管理工具。
其主要作用是把若干臺(tái) Docker 主機(jī)抽象為一個(gè)整體,并且通過(guò)一個(gè)入口統(tǒng)一管理這些 Docker 主機(jī)上的各種 Docker 資源。
Docker Swarm 將一個(gè)或多個(gè) Docker 節(jié)點(diǎn)組織起來(lái),使得用戶能夠以集群方式管理它們。
(2)組成部分
swarm 集群由管理節(jié)點(diǎn)(Manager)和工作節(jié)點(diǎn)(Worker)構(gòu)成。
管理節(jié)點(diǎn):主要負(fù)責(zé)整個(gè)集群的管理工作包括集群配置、服務(wù)管理等所有跟集群有關(guān)的工作,諸如監(jiān)控集群狀態(tài)、分發(fā)任務(wù)至工作節(jié)點(diǎn)等操作。
工作節(jié)點(diǎn):主要負(fù)責(zé)執(zhí)行運(yùn)行服務(wù)的任務(wù)。
- 在 Docker Swarm 集群中,節(jié)點(diǎn)的角色分為 Manager 和 Worker。
- Manager 節(jié)點(diǎn)不僅負(fù)責(zé)管理集群(如調(diào)度任務(wù)、維護(hù)集群狀態(tài)等),也可以運(yùn)行服務(wù)的任務(wù)(即容器)。
- 默認(rèn)情況下,當(dāng)你創(chuàng)建一個(gè)服務(wù)時(shí),Swarm 會(huì)根據(jù)其調(diào)度策略將服務(wù)的任務(wù)分配到可用的節(jié)點(diǎn)上,包括 Manager 節(jié)點(diǎn)。
docker swarm 是 Docker 引擎內(nèi)置的一個(gè)功能模塊,不需要單獨(dú)安裝,它是隨著 Docker Engine 一起發(fā)布的。
只要 Docker 已經(jīng)正確安裝并運(yùn)行,就可以使用 docker swarm 命令來(lái)初始化和管理 Swarm 集群。

(3)相關(guān)命令說(shuō)明
[root@localhost data]# docker swarm COMMAND Usage: docker swarm COMMAND Manage Swarm Commands: ca Display and rotate the root CA init Initialize a swarm join Join a swarm as a node and/or manager join-token Manage join tokens leave Leave the swarm unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm Run 'docker swarm COMMAND --help' for more information on a command.
| 命令 | 說(shuō)明 |
|---|---|
docker swarm init | 初始化一個(gè) Swarm 集群,將當(dāng)前節(jié)點(diǎn)設(shè)為 Manager 節(jié)點(diǎn)。 |
docker swarm join --token <TOKEN> <MANAGER_IP>:2377 | 將當(dāng)前節(jié)點(diǎn)加入到已有的 Swarm 集群中(作為 Worker 或 Manager)。 |
docker swarm ca | 顯示或輪換集群的根 CA 證書(shū)(用于安全通信)。 |
docker swarm join-token worker | 顯示用于添加 Worker 節(jié)點(diǎn)的 token 和命令。 |
docker swarm join-token manager | 顯示用于添加 Manager 節(jié)點(diǎn)的 token 和命令。 |
docker swarm leave | 當(dāng)前節(jié)點(diǎn)離開(kāi) Swarm 集群。 |
docker swarm unlock | 如果集群被加密鎖定了,使用該命令解鎖。 |
docker swarm unlock-key | 查看或刪除集群的解鎖密鑰。 |
docker swarm update [OPTIONS] | 更新 Swarm 集群配置(如調(diào)度策略、默認(rèn)安全設(shè)置等)。 |
[root@localhost data]# docker swarm init --help
Usage: docker swarm init [OPTIONS]
Initialize a swarm
Options:
--advertise-addr string Advertised address (format: "<ip|interface>[:port]")
--autolock Enable manager autolocking (requiring an unlock key to start a
stopped manager)
--availability string Availability of the node ("active", "pause", "drain") (default "active")
--cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
--data-path-addr string Address or interface to use for data path traffic (format:
"<ip|interface>")
--data-path-port uint32 Port number to use for data path traffic (1024 - 49151). If no value
is set or is set to 0, the default port (4789) is used.
--default-addr-pool ipNetSlice default address pool in CIDR format (default [])
--default-addr-pool-mask-length uint32 default address pool subnet mask length (default 24)
--dispatcher-heartbeat duration Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
--external-ca external-ca Specifications of one or more certificate signing endpoints
--force-new-cluster Force create a new cluster from current state
--listen-addr node-addr Listen address (format: "<ip|interface>[:port]") (default 0.0.0.0:2377)
--max-snapshots uint Number of additional Raft snapshots to retain
--snapshot-interval uint Number of log entries between Raft snapshots (default 10000)
--task-history-limit int Task history retention limit (default 5)二、Docker Swarm的使用
2.1、集群節(jié)點(diǎn)規(guī)劃
為了利用 swarm 模式的容錯(cuò)功能,可以根據(jù)組織的高可用性要求實(shí)現(xiàn)奇數(shù)個(gè)節(jié)點(diǎn)。
當(dāng)有多個(gè)管理中心時(shí),可以從一個(gè)管理中心節(jié)點(diǎn)的故障中恢復(fù),而無(wú)需停機(jī)。
- 三個(gè)管理器群可以容忍最多損失一個(gè)管理器。
- 五個(gè)管理器群最多可以同時(shí)丟失兩個(gè)管理器節(jié)點(diǎn)。
- 七個(gè)管理器群最多可以同時(shí)丟失三個(gè)管理器節(jié)點(diǎn)。
- 九個(gè)管理器群最多可以同時(shí)丟失四個(gè)管理器節(jié)點(diǎn)。
- Docker 建議一個(gè)群最多有七個(gè)管理器節(jié)點(diǎn)。
添加更多管理器并不意味著可伸縮性或性能的提高。一般來(lái)說(shuō),情況恰恰相反。
| 主機(jī)名 | IP地址 | docker版本號(hào) | 角色 | 備注 |
|---|---|---|---|---|
| manager01 | 192.168.66.146 | 26.1.4 | 管理節(jié)點(diǎn) | 主管 |
| manager02 | 192.168.66.152 | 26.1.4 | 管理節(jié)點(diǎn) | 從管 |
| manager03 | 192.168.66.153 | 26.1.4 | 管理節(jié)點(diǎn) | 從管 |
| worker01 | 192.168.66.154 | 26.1.4 | 工作節(jié)點(diǎn) | 工作 |
| worker02 | 192.168.66.155 | 26.1.4 | 工作節(jié)點(diǎn) | 工作 |
2.2、環(huán)境準(zhǔn)備
- 1、修改主機(jī)名
- 2、配置IP地址
- 3、關(guān)閉防火墻和SELINUX安全模式
- 4、配置系統(tǒng)YUM源和Docker鏡像源
- 5、更新系統(tǒng)(yum update -y)
- 6、安裝好docker環(huán)境
2.3、創(chuàng)建集群
docker swarm init --advertise-addr
| --advertise-addr | 行為 | 推薦程度 |
|---|---|---|
| 不指定 | Docker 自動(dòng)選擇一個(gè) IP | 不推薦(尤其在生產(chǎn)環(huán)境) |
| 指定 | 明確控制節(jié)點(diǎn)間通信的 IP | 推薦 |
m1配置信息(manager)
初始化一個(gè)新的 Swarm 集群,并將當(dāng)前節(jié)點(diǎn)設(shè)置為 Manager 節(jié)點(diǎn)。
docker swarm init --advertise-addr 192.168.66.146
Swarm initialized: current node (og3lc3bbg990qc0mkr7mbaoz2) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-1wgm41bp9zb04tbzvv6p7q21ke5bbkp2a4p71o6o666si24ssf-ch84gl3dpmxavtx479zkglt59 192.168.66.146:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Swarm 集群創(chuàng)建成功,獲取用于添加新 Manager 的命令
docker swarm join-token manager
To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-1wgm41bp9zb04tbzvv6p7q21ke5bbkp2a4p71o6o666si24ssf- bug5lagqesuzehgbnuha66ktk 192.168.66.146:2377
在另一臺(tái)主機(jī)上執(zhí)行上面這條命令,可以成功加入集群,并作為新的 Manager
| 操作 | 命令 | 是否添加新節(jié)點(diǎn) | 用途 |
|---|---|---|---|
| 初始化集群 | docker swarm init | 否 | 創(chuàng)建一個(gè)新的 Swarm 集群 |
| 獲取 Manager 加入命令 | docker swarm join-token manager | 否 | 生成供其他主機(jī)使用的命令 |
| 執(zhí)行 join 命令(在其他主機(jī)) | docker swarm join --token xxx IP:2377 | 是 | 把該主機(jī)加入集群并設(shè)為 Manager |
m2配置信息(manager)
# 添加至集群中成為管理節(jié)點(diǎn) [root@docker-m2 ~]# docker swarm join --token SWMTKN-1- 2m0zoq7mc98hsecvt3jrshltywt42w8jtlx7zifa84n8gm6hog-das8vljcfnlzv7gwjbrcg84er 192.168.66.146:2377 This node joined a swarm as a manager.
m3配置信息(manager)
# 添加至集群中成為管理節(jié)點(diǎn) [root@docker-m3 ~]# docker swarm join --token SWMTKN-1- 2m0zoq7mc98hsecvt3jrshltywt42w8jtlx7zifa84n8gm6hog-das8vljcfnlzv7gwjbrcg84er 192.168.66.146:2377 This node joined a swarm as a manager.
n1配置信息(worker)
# 添加至集群中成為工作節(jié)點(diǎn) [root@docker-n1 ~]# docker swarm join --token SWMTKN-1- 2m0zoq7mc98hsecvt3jrshltywt42w8jtlx7zifa84n8gm6hog-73vr18usjr5mz23td976369xb 192.168.66.146:2377 This node joined a swarm as a worker.
n2配置信息(worker)
# 添加至集群中成為工作節(jié)點(diǎn) [root@docker-n2 ~]# docker swarm join --token SWMTKN-1- 2m0zoq7mc98hsecvt3jrshltywt42w8jtlx7zifa84n8gm6hog-73vr18usjr5mz23td976369xb 192.168.66.146:2377 This node joined a swarm as a worker.
2.4、檢查配置情況
查看集群節(jié)點(diǎn)狀態(tài)信息
發(fā)現(xiàn)docker-m1是主管理節(jié)點(diǎn),docker-m2、docker-03是備用管理節(jié)點(diǎn);
兩個(gè)工作節(jié)點(diǎn)docker-n1、docker-n2也正常添加至集群中來(lái)。
[root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 409i7chz9723h64qph463her5 * m1 Ready Active Leader 26.1.4 vq7gdmivvizdnm17rya29e395 m2 Ready Active Reachable 26.1.4 hqgphq68rvrp3sh3dmy7j3ytv m3 Ready Active Reachable 26.1.4 pq4w82fq0wn7rbi24ybzinayq s1 Ready Active 26.1.4 kwlfsipeln7u0sstejmr8s8wm s2 Ready Active 26.1.4
查看整個(gè)Docker系統(tǒng)的信息
發(fā)現(xiàn)docker swarm集群已經(jīng)創(chuàng)建完成。 共有五臺(tái)節(jié)點(diǎn),其中三臺(tái)為管理節(jié)點(diǎn)。
[root@docker-m1 ~]# docker info
Client: Docker Engine - Community
Version: 26.1.4
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.27.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 6
Server Version: 26.1.4
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: active
NodeID: 409i7chz9723h64qph463her5
Is Manager: true
ClusterID: tpezv4gb4895pm0xyivmez2ng
Managers: 3
Nodes: 5
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.66.146
Manager Addresses:
192.168.66.146:2377
192.168.66.152:2377
192.168.66.153:2377
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-1160.71.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 972.3MiB
Name: m1
ID: bb7b1d09-3c39-4cec-8e91-b3d249c92aa8
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://docker.m.daocloud.io/
Live Restore Enabled: false查詢集群網(wǎng)絡(luò)信息 查看到集群中各個(gè)節(jié)點(diǎn)的IP地址
[root@docker-m1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
7544bf512308 bridge bridge local
575614844e29 docker_gwbridge bridge local
c50925c91744 host host local
utmwp4dtmdwe ingress overlay swarm
b9f09410831a net1 bridge local
a6bdb177b438 net2 bridge local
3eac8d80c11d none null local
[root@docker-m1 ~]# docker network inspect ingress
[
{
"Name": "ingress",
"Id": "utmwp4dtmdwe4t0rtb44l1pdt",
"Created": "2025-06-06T11:25:55.280963109+08:00",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": true,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"ingress-sbox": {
"Name": "ingress-endpoint",
"EndpointID": "6ffbebbd8103e689e070e9d7b131d4217b8cc72424d77c60662dadec80be887c",
"MacAddress": "02:42:0a:00:00:02",
"IPv4Address": "10.0.0.2/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4096"
},
"Labels": {},
"Peers": [
{
"Name": "07527edc7cf2",
"IP": "192.168.66.146"
},
{
"Name": "51e9b4f53752",
"IP": "192.168.66.152"
},
{
"Name": "19682ed354a6",
"IP": "192.168.66.153"
},
{
"Name": "3161d8159fff",
"IP": "192.168.66.154"
},
{
"Name": "8b58eb7829cd",
"IP": "192.168.66.155"
}
]
}
]2.5、角色變化
(1)將Manager降級(jí)為Worker
以docker-m3為例,將docker-m3管理節(jié)點(diǎn)由manager角色變成worker角色。
# 查看幫助命令
[root@docker-m1 ~]# docker node update -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker node update [OPTIONS] NODE
Update a node
Options:
--availability string Availability of the node ("active"|"pause"|"drain")
--label-add list Add or update a node label (key=value)
--label-rm list Remove a node label if exists
--role string Role of the node ("worker"|"manager")
# 執(zhí)行如下命令,將docker-m3管理節(jié)點(diǎn)由manager角色變成worker角色。
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 26.1.4
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4
[root@docker-m1 ~]# docker node update --role worker docker-m3
docker-m3
[root@docker-m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4
hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4
4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 26.1.4
4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4
xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4
# 更改之后,查看docker-m3節(jié)點(diǎn)詳細(xì)信息情況
# 發(fā)現(xiàn)已經(jīng)由管理節(jié)點(diǎn)變成工作節(jié)點(diǎn)
[root@docker-m1 ~]# docker node inspect m3
[
{
"ID": "4q34guc6hp2a5ok0g1zkjojyh",
"Version": {
"Index": 39
},
"CreatedAt": "2022-05-03T10:59:07.69499678Z",
"UpdatedAt": "2022-05-03T11:27:02.178601504Z",
"Spec": {
"Labels": {},
"Role": "worker",
"Availability": "active"
},
"Description": {
"Hostname": "docker-m3",
"Platform": {
"Architecture": "x86_64",
"OS": "linux"
},
"Resources": {
"NanoCPUs": 1000000000,
"MemoryBytes": 2076499968
},
"Engine": {
"EngineVersion": "26.1.4",
"Plugins": [
{
"Type": "Log",
"Name": "awslogs"
},
{
"Type": "Log",
"Name": "fluentd"
},
{
"Type": "Log",
"Name": "gcplogs"
},
{
"Type": "Log",
"Name": "gelf"
},
{
"Type": "Log",
"Name": "journald"
},
{
"Type": "Log",
"Name": "json-file"
},
{
"Type": "Log",
"Name": "local"
},
{
"Type": "Log",
"Name": "logentries"
},
{
"Type": "Log",
"Name": "splunk"
},
{
"Type": "Log",
"Name": "syslog"
},
{
"Type": "Network",
"Name": "bridge"
},
{
"Type": "Network",
"Name": "host"
},
{
"Type": "Network",
"Name": "ipvlan"
},
{
"Type": "Network",
"Name": "macvlan"
},
{
"Type": "Network",
"Name": "null"
},
{
"Type": "Network",
"Name": "overlay"
},
{
"Type": "Volume",
"Name": "local"
}
]
},
"TLSInfo": {
"TrustRoot": "-----BEGIN CERTIFICATE-----\nMIIBaTCCARCgAwIBAgIUYUzIe4mqhjKYxuilbhVByLwzzeMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMjIwNTAzMTA0NzAwWhcNNDIwNDI4MTA0\nNzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABK8XzVHRM50TgsAxrgXg18ti69dkedf9LsaHm2I2ub9kKzkLsnTV+bIHGOHK\n0/Twi/B9OCFSsozUGDP7qR3/rRmjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQ3iXSq5FKnODK2Qqic39A0bg9qjjAKBggqhkjO\nPQQDAgNHADBEAiASv1HdziErIzBJtsVMxfp8zAv0EJ5/eVeIldYdUIVNTQIgXUc3\nakty/iBy5/MhFt9JRRMV1xH1x+Dcf35tNWGH52w=\n-----END CERTIFICATE-----\n",
"CertIssuerSubject": "MBMxETAPBgNVBAMTCHN3YXJtLWNh",
"CertIssuerPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErxfNUdEznROCwDGuBeDXy2Lr12R51/0uxoebYja5v2QrOQuydNX5sgcY4crT9PCL8H04IVKyjNQYM/upHf+tGQ=="
}
},
"Status": {
"State": "ready",
"Addr": "192.168.66.153"
}
}
](2)將Worker晉升為Manager
以docker-n2為例,將docker-n2管理節(jié)點(diǎn)由worker角色變成manager角色。
[root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4 [root@docker-m1 ~]# docker node update --role manager docker-n2 docker-n2 [root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active Reachable 26.1.4

(3)移除再添加管理節(jié)點(diǎn)
將集群中某臺(tái)管理節(jié)點(diǎn)移除集群,重新獲取管理節(jié)點(diǎn)的令牌,再添加至集群中。
# 查看幫助命令 [root@docker-m1 ~]# docker swarm leave --help Usage: docker swarm leave [OPTIONS] Leave the swarm Options: -f, --force Force this node to leave the swarm, ignoring warnings
在docker-m3節(jié)點(diǎn)執(zhí)行操作,將docker-m3管理節(jié)點(diǎn)移除集群
[root@docker-m3 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh * docker-m3 Ready Active Reachable 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4 [root@docker-m3 ~]# docker swarm leave -f Node left the swarm.

在docker-m1管理節(jié)點(diǎn)上查看。發(fā)現(xiàn)docker-m3管理節(jié)點(diǎn)已經(jīng)關(guān)閉
在某個(gè)節(jié)點(diǎn)上執(zhí)行 docker swarm leave -f 時(shí),該節(jié)點(diǎn)會(huì)退出集群,但這個(gè)操作并不會(huì)自動(dòng)從其他節(jié)點(diǎn)的節(jié)點(diǎn)列表中刪除它。
也就是說(shuō):
m3已經(jīng)不再是 Swarm 的一部分。- 但它曾經(jīng)是集群的一部分,Swarm 管理節(jié)點(diǎn)(Manager)仍保留它的記錄。
- 所以在
docker node ls中它依然顯示,只是狀態(tài)變成Down(表示無(wú)法通信或已離開(kāi))。
如果確認(rèn) m3 永遠(yuǎn)不會(huì)再加入集群,并且你想清理這個(gè)節(jié)點(diǎn)記錄,你需要在 Manager 節(jié)點(diǎn)上手動(dòng)刪除它:
docker node rm m3
如果執(zhí)行docker node rm s2
會(huì)出現(xiàn)以下錯(cuò)誤
Error response from daemon: rpc error: code = FailedPrecondition desc = node kwlfsipeln7u0sstejmr8s8wm is a cluster manager and is a member of the raft cluster. It must be demoted to worker before removal
Docker Swarm 不允許直接刪除處于 Manager 角色的節(jié)點(diǎn)
先將該 Manager 節(jié)點(diǎn) 降級(jí)為 Worker,然后再刪除
[root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Ready Active Reachable 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4 [root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Down Active Unreachable 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4

重新獲取添加管理節(jié)點(diǎn)的令牌命令。
執(zhí)行docker swarm join-token manager命令,獲取命令。
[root@docker-m1 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx
192.168.66.146:2377
[root@docker-m1 ~]#重新將docker-m3管理節(jié)點(diǎn)添加到集群中。
[root@docker-m3 ~]# docker swarm join --token SWMTKN-1-528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-1z6k8msio37as0vaa467glefx 192.168.66.146:2377 This node joined a swarm as a manager. [root@docker-m3 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Down Active Reachable 26.1.4 jvtiwv8eu45ev4qbm0ausivv2 * docker-m3 Ready Active Reachable 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Ready Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4 [root@docker-m3 ~]#
(4)移除再添加工作節(jié)點(diǎn)
將集群中某臺(tái)工作節(jié)點(diǎn)移除集群,重新獲取工作節(jié)點(diǎn)的令牌,再添加至集群中。
在docker-n1節(jié)點(diǎn)執(zhí)行操作,將docker-n1工作節(jié)點(diǎn)移除集群
[root@docker-n1 ~]# docker swarm leave Node left the swarm.
在docker-m1管理節(jié)點(diǎn)上查看。發(fā)現(xiàn)docker-n1工作節(jié)點(diǎn)已經(jīng)關(guān)閉
[root@docker-m1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 34cug51p9dw83u2np594z6ej4 * docker-m1 Ready Active Leader 26.1.4 hwmwdk78u3rx0wwxged87xnun docker-m2 Ready Active Reachable 26.1.4 4q34guc6hp2a5ok0g1zkjojyh docker-m3 Down Active Reachable 26.1.4 jvtiwv8eu45ev4qbm0ausivv2 docker-m3 Ready Active Reachable 26.1.4 4om9sg56sg09t9whelbrkh8qn docker-n1 Down Active 26.1.4 xooolkg0g9epddfqqiicywshe docker-n2 Ready Active 26.1.4
重新獲取添加工作節(jié)點(diǎn)的令牌命令。
執(zhí)行docker swarm join-token worker命令,獲取命令。
[root@docker-m1 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-
528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a
192.168.66.146:2377
[root@docker-m1 ~]#重新將docker-n1工作節(jié)點(diǎn)添加到集群中。
[root@docker-n1 ~]# docker swarm join --token SWMTKN-1- 528o8bfk061miheduvuvnnohhpystvxnwiqfqqf04gou6n1wmz-3ixu6we70ghk69wghfrmo0y6a 192.168.66.146:2377 This node joined a swarm as a worker.

刪除多余的節(jié)點(diǎn)。
[root@docker-m1 ~]# docker node rm 34emdxnfc139d6kc4ht2xsp4b 4om9sg56sg09t9whelbrkh8qn 34emdxnfc139d6kc4ht2xsp4b 4om9sg56sg09t9whelbrkh8qn [root@docker-m1 ~]#

三、部署NGINX應(yīng)用測(cè)試
3.1、service命令
- Service(服務(wù)) 是一個(gè)抽象概念,表示你希望運(yùn)行的應(yīng)用(比如 Nginx、Redis 等),以及它的期望狀態(tài)(如副本數(shù)、網(wǎng)絡(luò)、端口等)。
- Task(任務(wù)) 是服務(wù)在某個(gè)節(jié)點(diǎn)上的實(shí)際運(yùn)行實(shí)例。每個(gè) Task 對(duì)應(yīng)一個(gè)容器(Container)。
只有 Manager 節(jié)點(diǎn)才能管理服務(wù)(執(zhí)行這些命令)。
服務(wù)是 Swarm 模式下的核心資源之一,適合用于部署高可用、可擴(kuò)展的分布式應(yīng)用。
# 查看service 幫助命令 [root@docker-m1 ~]# docker service Usage: docker service COMMAND Manage services Commands: create Create a new service inspect Display detailed information on one or more services logs Fetch the logs of a service or task ls List services ps List the tasks of one or more services rm Remove one or more services rollback Revert changes to a service's configuration scale Scale one or multiple replicated services update Update a service Run 'docker service COMMAND --help' for more information on a command.
| 命令 | 作用描述 | 常用用途/示例 |
|---|---|---|
create | 創(chuàng)建一個(gè)新的服務(wù)(Service),由 Swarm 管理調(diào)度 | 啟動(dòng)一個(gè) Nginx 服務(wù)并指定副本數(shù):docker service create --replicas 3 -p 80:80 nginx |
inspect | 查看一個(gè)或多個(gè)服務(wù)的詳細(xì)信息 | 查看服務(wù)配置和狀態(tài):docker service inspect my_service |
logs | 獲取某個(gè)服務(wù)或任務(wù)的日志 | 查看服務(wù)日志:docker service logs my_service 查看具體任務(wù)日志:docker service logs <task_id> |
ls | 列出當(dāng)前 Swarm 集群中的所有服務(wù) | 查看所有運(yùn)行的服務(wù):docker service ls |
ps | 顯示一個(gè)或多個(gè)服務(wù)的任務(wù)(Task)狀態(tài) | 查看服務(wù)下所有容器的狀態(tài):docker service ps my_service |
rm | 刪除一個(gè)或多個(gè)服務(wù) | 刪除服務(wù):docker service rm my_service |
rollback | 回滾服務(wù)到上一次配置(例如更新失敗后恢復(fù)) | 回滾服務(wù)更新:docker service rollback my_service |
scale | 調(diào)整一個(gè)或多個(gè)服務(wù)的副本數(shù)量(Replicas) | 擴(kuò)容服務(wù):docker service scale my_service=5 |
update | 更新服務(wù)的配置(如鏡像、環(huán)境變量、端口等),支持滾動(dòng)更新 | 更新服務(wù)鏡像并設(shè)置更新策略:docker service update --image nginx:1.21 --update-parallelism 2 my_service |
3.2、創(chuàng)建NGINX服務(wù)
docker service 服務(wù)啟動(dòng),具有擴(kuò)縮,滾動(dòng)更新。
docker service create -p 8888:80 --name my-nginx nginx
- Docker 會(huì)在集群中啟動(dòng)一個(gè)名為
my-nginx的服務(wù)。 - 該服務(wù)默認(rèn)以 副本模式(Replicated) 運(yùn)行一個(gè)任務(wù)(Task),也就是一個(gè)
nginx容器。 - 所有連接到 Swarm 節(jié)點(diǎn)(任意節(jié)點(diǎn))的
8888端口的請(qǐng)求都會(huì)被路由到運(yùn)行著nginx的容器中。 - 如果你有多個(gè)節(jié)點(diǎn),Swarm 可以根據(jù)策略自動(dòng)調(diào)度任務(wù)到不同節(jié)點(diǎn)上運(yùn)行。
3.3、查看NGINX服務(wù)
docker service ls
該命令用于列出當(dāng)前 Docker Swarm 集群中所有的服務(wù)(Services)。
[root@docker-m1 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS nckewzy2gkl1 my-nginx replicated 1/1 nginx:latest *:8888->80/tcp
| 字段 | 含義 |
|---|---|
| ID | 服務(wù)的唯一標(biāo)識(shí)符(內(nèi)部使用,通常不需要手動(dòng)處理) |
| NAME | 服務(wù)的名稱(比如你用 --name my-nginx 指定的) |
| MODE | 服務(wù)的調(diào)度模式: - replicated:副本模式(指定數(shù)量的副本) - global:全局模式(每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)任務(wù)) |
| REPLICAS | 實(shí)際運(yùn)行 / 期望的副本數(shù)(例如 3/3 表示所有副本都在正常運(yùn)行) |
| IMAGE | 使用的鏡像名稱和標(biāo)簽(如 nginx:latest) |
| PORTS | 端口映射信息(比如 *:8888->80/tcp 表示宿主機(jī)的 8888 端口映射到容器的 80 端口) |
docker service ps my-nginx
必須在 Manager 節(jié)點(diǎn) 上執(zhí)行此命令。
這個(gè)命令用于查看指定服務(wù)(Service)的所有任務(wù)(Tasks)的運(yùn)行狀態(tài)。
在 Docker Swarm 中,一個(gè)服務(wù)(Service)是由多個(gè)“任務(wù)(Task)”組成的。
每個(gè)任務(wù)對(duì)應(yīng)一個(gè)容器(Container),Swarm 會(huì)負(fù)責(zé)調(diào)度這些任務(wù)到集群中的不同節(jié)點(diǎn)上運(yùn)行。
| 字段 | 含義 |
|---|---|
| ID | 任務(wù)的唯一 ID |
| NAME | 任務(wù)名稱,格式通常是 <service-name>.<replica-number> |
| IMAGE | 使用的鏡像 |
| NODE | 該任務(wù)運(yùn)行在哪個(gè)節(jié)點(diǎn)上 |
| DESIRED STATE | 期望狀態(tài)(如 Running, Shutdown, Ready) |
| CURRENT STATE | 當(dāng)前實(shí)際狀態(tài)和持續(xù)時(shí)間 |
| ERROR | 如果任務(wù)失敗,這里顯示錯(cuò)誤信息 |
| PORTS | 端口映射信息(如果配置了) |
docker service inspect my-nginx
必須在 Manager 節(jié)點(diǎn) 上執(zhí)行此命令。
這個(gè)命令用于查看名為 my-nginx 的服務(wù)的詳細(xì)配置和運(yùn)行狀態(tài)信息
它會(huì)輸出該服務(wù)的完整配置信息(比如使用的鏡像、副本數(shù)、環(huán)境變量、端口映射、調(diào)度約束等)以及當(dāng)前的服務(wù)狀態(tài)、任務(wù)狀態(tài)等,是排查問(wèn)題、了解服務(wù)詳情的重要工具。
| 部分 | 內(nèi)容說(shuō)明 |
|---|---|
| ID | 服務(wù)的唯一 ID |
| Spec | 服務(wù)的配置規(guī)范(最重要的部分) - 包括鏡像、副本數(shù)、端口、更新策略、重啟策略等 |
| Endpoint | 服務(wù)暴露的網(wǎng)絡(luò)信息 - 比如 VIP(虛擬 IP)、端口映射等 |
| UpdateStatus | 最近一次服務(wù)更新的狀態(tài)(是否成功) |
| CreatedAt / UpdatedAt | 服務(wù)創(chuàng)建時(shí)間和最近更新時(shí)間 |
3.4、動(dòng)態(tài)擴(kuò)容
動(dòng)態(tài)擴(kuò)容,緩解主機(jī)被訪問(wèn)的壓力。
docker service update
docker service update 的作用是:
在不中斷服務(wù)的前提下,動(dòng)態(tài)更新 Swarm 服務(wù)的配置(如鏡像、副本數(shù)、端口、資源限制等),支持滾動(dòng)更新和回滾功能,非常適合用于生產(chǎn)環(huán)境中的服務(wù)維護(hù)與升級(jí)。
是實(shí)現(xiàn) 滾動(dòng)更新(rolling update) 的核心命令,適用于持續(xù)集成/持續(xù)部署(CI/CD)流程中非常有用。
| 選項(xiàng) | 說(shuō)明 | 示例 |
|---|---|---|
--image | 更新服務(wù)使用的鏡像 | --image nginx:1.21 |
--env-add, --env-rm | 添加或刪除環(huán)境變量 | --env-add "ENV1=value1" |
--replicas | 設(shè)置新的副本數(shù) | --replicas 5 |
--update-parallelism | 每次同時(shí)更新的任務(wù)數(shù) | --update-parallelism 2 |
--update-delay | 設(shè)置兩次更新之間的延遲時(shí)間 | --update-delay 10s |
--limit-cpu, --limit-memory | 設(shè)置資源限制 | --limit-cpu 2 --limit-memory 512M |
--restart-condition | 設(shè)置任務(wù)重啟條件 | --restart-condition on-failure |
--network-add, --network-rm | 添加或移除網(wǎng)絡(luò) | --network-add my_network |
--publish-add, --publish-rm | 添加或移除端口映射 | --publish-add 8080:80 |
--rollback | 回滾到上一次配置 | --rollback |
[root@docker-m1 ~]# docker service update --help
Usage: docker service update [OPTIONS] SERVICE
Update a service
Options:
......
-q, --quiet Suppress progress output
--read-only Mount the container's root filesystem as read only
--replicas uint Number of tasks
--replicas-max-per-node uint Maximum number of tasks per node (default 0 = unlimited)
......docker service update \ --image nginx:1.21 \ --update-parallelism 2 \ --update-delay 10s \ my-nginx 將 my-nginx 服務(wù)的容器鏡像更新為 nginx:1.21 每次更新 2 個(gè)任務(wù) 每次更新之間間隔 10 秒(確保系統(tǒng)穩(wěn)定)
創(chuàng)建多個(gè)NGINX服務(wù)副本
[root@docker-m1 ~]# docker service update --replicas 2 my-nginx my-nginx overall progress: 2 out of 2 tasks 1/2: running [==================================================>] 2/2: running [==================================================>] verify: Service converged [root@docker-m1 ~]# 查看創(chuàng)建的NGINX服務(wù)副本
[root@docker-m1 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS ngoi21hcjan5 my-nginx replicated 2/2 nginx:latest *:8888->80/tcp [root@docker-m1 ~]# docker service ps my-nginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS w5azhbc3xrta my-nginx.1 nginx:latest docker-n2 Running Running 36 minutes ago rgtjq163z9ch my-nginx.2 nginx:latest docker-m1 Running Running 33 seconds ago
測(cè)試訪問(wèn)NGINX服務(wù)
http://192.168.66.146:8888/ http://192.168.66.154:8888/
刪除對(duì)應(yīng)的服務(wù)
docker service rm my-nginx
3.5、模擬故障情況
當(dāng)docker-m1管理主機(jī)發(fā)生宕機(jī)時(shí),查看NGINX服務(wù)是否能夠正常運(yùn)行訪問(wèn)。
# 關(guān)閉docker-m1節(jié)點(diǎn) [root@docker-m1 ~]# shutdown -h now Connection to 192.168.66.146 closed by remote host. Connection to 192.168.66.146 closed.
查看節(jié)點(diǎn)狀態(tài)
[root@docker-m2 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 75dxq2qmzr2bv4tkg20gh0syr docker-m1 Down Active Unreachable 26.1.4 l2is4spmgd4b5xmmxwo3jvuf4 * docker-m2 Ready Active Reachable 26.1.4 u89a2ie2buxuc5bsew4a2wrpo docker-m3 Ready Active Leader 26.1.4 aon2nakgk87rds5pque74itw4 docker-n1 Ready Active 26.1.4 ljdb9d3xkzjruuxsxrpmuei7s docker-n2 Ready Active 26.1.4 [root@docker-m2 ~]#
查看服務(wù)狀態(tài)
[root@docker-m2 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS ngoi21hcjan5 my-nginx replicated 3/2 nginx:latest *:8888->80/tcp [root@docker-m2 ~]# docker service ps my-nginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS w5azhbc3xrta my-nginx.1 nginx:latest docker-n2 Running Running 2 minutes ago tteb16dnir6u my-nginx.2 nginx:latest docker-n1 Running Running 2 minutes ago rgtjq163z9ch \_ my-nginx.2 nginx:latest docker-m1 Shutdown Running 17 minutes ago
四、調(diào)度模式
在 Docker Swarm 中,服務(wù)的調(diào)度模式(--mode)確實(shí)分為兩種:
4.1、replicated:副本模式
- 定義:你指定一個(gè)期望的副本數(shù)量(如 3 個(gè)任務(wù)),Swarm 負(fù)責(zé)在集群中選擇合適的節(jié)點(diǎn)來(lái)運(yùn)行這些副本。
- 用途:適用于大多數(shù)場(chǎng)景,比如 Web 服務(wù)、數(shù)據(jù)庫(kù)連接池等,你希望控制服務(wù)的整體規(guī)模而不必每個(gè)節(jié)點(diǎn)都跑一個(gè)。
docker service create \ --name my-web \ --replicas 3 \ nginx
這會(huì)在集群中啟動(dòng) 3 個(gè) Nginx 容器,具體分布在哪些節(jié)點(diǎn)上由 Swarm 自動(dòng)決定。
4.2、global:全局模式
- 定義:每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)任務(wù)(容器),不需要指定副本數(shù)。
- 用途:適合需要在每個(gè)節(jié)點(diǎn)上都部署的服務(wù),例如日志收集器、監(jiān)控代理、網(wǎng)絡(luò)插件等。
docker service create \ --name node-exporter \ --mode global \ prom/node-exporter
這會(huì)在集群中的每一個(gè)節(jié)點(diǎn)(Manager 和 Worker)上都啟動(dòng)一個(gè) node-exporter 容器。
| 模式 | 含義 | 是否需要指定副本數(shù) | 每個(gè)節(jié)點(diǎn)最多運(yùn)行幾個(gè)任務(wù) | 典型使用場(chǎng)景 |
|---|---|---|---|---|
replicated | 指定總副本數(shù),Swarm 分配部署 | 是 | 0 或 1 | Web 服務(wù)、API 服務(wù)、數(shù)據(jù)庫(kù)代理等 |
global | 每個(gè)節(jié)點(diǎn)自動(dòng)運(yùn)行一個(gè)任務(wù) | 否 | 1 | 監(jiān)控代理、日志采集、節(jié)點(diǎn)級(jí)守護(hù)進(jìn)程 |
是否可以運(yùn)行超過(guò)當(dāng)前機(jī)器數(shù)量的容器?
當(dāng)你創(chuàng)建一個(gè)服務(wù)時(shí),Swarm 會(huì)在集群中的節(jié)點(diǎn)上為該服務(wù)創(chuàng)建多個(gè)任務(wù)(容器實(shí)例),每個(gè)任務(wù)都有一個(gè)全局唯一的任務(wù)ID和一個(gè)基于服務(wù)名稱的任務(wù)名稱格式如 <service-name>.<replica-number>。
Swarm 節(jié)點(diǎn) ≠ 任務(wù)上限
每臺(tái)機(jī)器(節(jié)點(diǎn))可以運(yùn)行多個(gè)服務(wù)任務(wù)(容器),只要資源(CPU、內(nèi)存等)允許。
Docker Swarm 默認(rèn)會(huì)在所有可用節(jié)點(diǎn)中智能分配任務(wù),包括重復(fù)地在同一個(gè)節(jié)點(diǎn)上部署多個(gè)任務(wù)。
全局模式 (global) 下:每個(gè)節(jié)點(diǎn)只運(yùn)行一個(gè)任務(wù)
副本模式 (replicated) 下的任務(wù)數(shù)量不受限于節(jié)點(diǎn)數(shù)
到此這篇關(guān)于LINUX中Docker Swarm的介紹和詳細(xì)使用教程的文章就介紹到這了,更多相關(guān)linux docker swarm使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker容器內(nèi)要啟動(dòng)兩個(gè)進(jìn)程時(shí)Dockerfile的實(shí)現(xiàn)代碼
這篇文章主要介紹了docker容器內(nèi)要啟動(dòng)兩個(gè)進(jìn)程時(shí)Dockerfile的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Docker安裝Mosquitto的實(shí)現(xiàn)示例
mosquitto是一個(gè)常用的MQTT應(yīng)用服務(wù),本文主要介紹了Docker安裝Mosquitto的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法
這篇文章主要介紹了從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
docker國(guó)內(nèi)鏡像源配置及走代理設(shè)置小結(jié)
本文主要介紹了配置Docker國(guó)內(nèi)鏡像源及代理設(shè)置,以加快鏡像拉取速度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
docker自定義網(wǎng)橋docker0及docker的開(kāi)啟,關(guān)閉,重啟命令操作
這篇文章主要介紹了docker自定義網(wǎng)橋docker0及docker的開(kāi)啟,關(guān)閉,重啟命令操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
詳解如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理
有時(shí)因?yàn)榫W(wǎng)絡(luò)原因,比如公司 NAT,或其它啥的,需要使用代理,這篇文章主要為大家詳細(xì)介紹了如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
利用Docker搭建Nexus私有倉(cāng)庫(kù)實(shí)現(xiàn)Maven私服
Maven大家應(yīng)該都比較熟了,我這里就用安卓人狂喜的Gradle來(lái)演示一下,在build.gradle中編寫腳本即可上傳,接下來(lái)通過(guò)本文給大家介紹下利用Docker搭建Nexus私有倉(cāng)庫(kù)實(shí)現(xiàn)Maven私服的問(wèn)題,感興趣的朋友一起看看吧2022-01-01
教你使用Jenkins集成Harbor自動(dòng)發(fā)布鏡像
這篇文章主要介紹了Jenkins?集成?Harbor?自動(dòng)發(fā)布鏡像,主要包括Jenkins?腳本式發(fā)布鏡像及Jenkins?插件式發(fā)布鏡像的詳細(xì)過(guò)程,本文結(jié)合圖文實(shí)例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Docker安裝Keycloak開(kāi)源身份認(rèn)證服務(wù)的圖文教程
Keycloak是一款開(kāi)源的認(rèn)證授權(quán)平臺(tái),本文就來(lái)介紹一下Docker安裝Keycloak開(kāi)源身份認(rèn)證服務(wù)的圖文教程,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Docker容器下運(yùn)行Nginx并實(shí)現(xiàn)反向代理
這篇文章介紹了Docker容器下運(yùn)行Nginx并實(shí)現(xiàn)反向代理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03

