目录
2)基于--volumes-from实现和指定容器相同的挂载信息
3.8创建网络时可以自定义网关,ip地址范围,子网范围,网络类型等
容器的启动和停止
1)启动容器
bash
#查看所有容器,全部处于Exited
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 3 hours ago Exited (0) 11 minutes ago wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 3 hours ago Exited (0) 11 minutes ago mysql-server
#按照容器名字启动
[root@docker101 ~]#docker start wp
time="2025-12-08T21:00:00.484967410+08:00" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1
time="2025-12-08T21:00:00.485073529+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1
time="2025-12-08T21:00:00.485090911+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2025-12-08T21:00:00.485213561+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.pause\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
wp
#按照容器ID启动
[root@docker101 ~]#docker start bf1262a00395
time="2025-12-08T21:00:18.817459910+08:00" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1
time="2025-12-08T21:00:18.817572661+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1
time="2025-12-08T21:00:18.817590935+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2025-12-08T21:00:18.817699859+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.pause\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
bf1262a00395
#查看容器,处于UP状态
[root@docker101 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 3 hours ago Up 22 seconds 0.0.0.0:88->80/tcp, :::88->80/tcp wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 3 hours ago Up 4 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
2)停止容器
bash
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Up 52 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Up 31 minutes 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
#按照容器名字停止
[root@docker101 ~]#docker stop -t 0 wp #-t表示指定等待多久开始发送kill指令。如果停止服务较长,默认等待10s。
wp
#按照容器ID停止
[root@docker101 ~]#docker stop bf1262a00395
bf1262a00395
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Exited (137) 12 seconds ago wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Exited (0) 3 seconds ago mysql-server
3)重启容器
bash
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Exited (137) 12 seconds ago wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Exited (0) 3 seconds ago mysql-server
#重启容器
[root@docker101 ~]#docker restart wp
wp
[root@docker101 ~]#docker restart mysql-server
mysql-server
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Up 14 seconds 0.0.0.0:88->80/tcp, :::88->80/tcp wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Up 10 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
注意:重启本质本质就是停止再启动。只要停止容器就会重新对STATUS进行重新计数。
温馨提示:
bash
1.docker stop命令本质是调用的是docker kill表示杀死容器的进程ID。
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Up 14 seconds 0.0.0.0:88->80/tcp, :::88->80/tcp wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Up 10 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
[root@docker101 ~]#docker kill wp
wp
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74011d62e837 wordpress "docker-entrypoint.s..." 4 hours ago Exited (137) 7 seconds ago wp
bf1262a00395 mysql:8.3.0-oracle "docker-entrypoint.s..." 4 hours ago Up 4 minutes 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
2.容器启动本质上是在宿主机上启动了一个进程ID
容器启动时指定自定义命令
1)查看容器的启动命令
bash
[root@docker101 ~]#docker run -d -p 81:80 --name c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
07d1252a5bae38499b039bb3e0cdc375c3a71d24f79f53140320a270c8168227
[root@docker101 ~]#docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07d1252a5bae registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." About a minute ago Up About a minute 0.0.0.0:81->80/tcp, :::81->80/tcp c1
[root@docker101 ~]#docker ps -l --no-trunc #不截断输出,显示全部
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07d1252a5bae38499b039bb3e0cdc375c3a71d24f79f53140320a270c8168227 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint.sh nginx -g 'daemon off;'" 31 seconds ago Up 30 seconds 0.0.0.0:81->80/tcp, :::81->80/tcp c1
2)启动容器自定义命令
bash
[root@docker101 ~]#docker run -d --name c2 -p 82:80 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 sleep 120 #在镜像后面加了一个sleep 120的主进程
c6144c7135c2e014f65807abd7e88ed035d3047c5044157d135126899eb5fac6
#查看发现,容器的主进程变为了/docker-entrypoint.sh sleep 120
[root@docker101 ~]#docker ps -l --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c6144c7135c2e014f65807abd7e88ed035d3047c5044157d135126899eb5fac6 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint.sh sleep 120" 17 seconds ago Up 17 seconds 0.0.0.0:82->80/tcp, :::82->80/tcp c2
3)连接正在运行的容器
bash
#进入容器,查看进程,发现主进程为sleep 120
[root@docker101 ~]#docker exec -it c2 sh
/ # ps -ef
PID USER TIME COMMAND
1 root 0:00 sleep 120
7 root 0:00 sh
13 root 0:00 ps -ef
/ #
/ # nginx #运行nginx服务
2025/12/08 14:32:38 [notice] 14#14: using the "epoll" event method
2025/12/08 14:32:38 [notice] 14#14: nginx/1.20.1
2025/12/08 14:32:38 [notice] 14#14: built by gcc 10.2.1 20201203 (Alpine 10.2.1_pre1)
2025/12/08 14:32:38 [notice] 14#14: OS: Linux 3.10.0-1127.el7.x86_64
2025/12/08 14:32:38 [notice] 14#14: getrlimit(RLIMIT_NOFILE): 65535:65535
2025/12/08 14:32:38 [notice] 15#15: start worker processes
2025/12/08 14:32:38 [notice] 15#15: start worker process 16
2025/12/08 14:32:38 [notice] 15#15: start worker process 17
/ # ps -ef #很明显,启动后,nginx进程产生
PID USER TIME COMMAND
1 root 0:00 sleep 120
7 root 0:00 sh
15 root 0:00 nginx: master process nginx
16 nginx 0:00 nginx: worker process
17 nginx 0:00 nginx: worker process
18 root 0:00 ps -ef
/ # nginx -s stop #停止nginx进程并不会影响容器退出
2024/07/22 02:06:52 [notice] 21#21: signal process started
2024/07/22 02:06:52 [error] 21#21: open() "/var/run/nginx.pid" failed (2: No such file or directory)
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
/ #
/ # ps -ef #nginx进程没有了,但是容器没有退出
PID USER TIME COMMAND
1 root 0:00 sleep 120
7 root 0:00 sh
15 root 0:00 [nginx]
20 root 0:00 ps -ef
/ #
/ #
root@docker102:~# docker ps -l # 当容器的主进程退出时,则容器也会退出。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ddfe6525afc registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 2 minutes ago Exited (0) 38 seconds ago c2
root@docker102:~#
注意:
1.容器在启动时,可以修改容器的启动命令,当修改了启动命令后,会覆盖掉默认的启动命令;
2.容器的启动命令退出时,容器也会被停止;
查看容器的详细信息
1)查看容器所有详细信息
bash
[root@docker101 ~]#docker container inspect c1
[
{
"Id": "3a11a09ae17f971d6cbfc9f0f5053a040a9e53e6321528c6cf37ef98ef917fa8",
"Created": "2025-12-08T14:26:06.446248892Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 52552,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-12-08T14:26:06.563347935Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
...
2)查看容器的进程ID
bash
[root@docker101 ~]#docker inspect -f "{{.State.Pid}}" c1
52552
3)查看容器ID
bash
[root@docker101 ~]#docker inspect -f "{{.ID}}" c1
3a11a09ae17f971d6cbfc9f0f5053a040a9e53e6321528c6cf37ef98ef917fa8
4)查看容器IP地址
bash
#查看ip
[root@docker101 ~]#docker inspect -f "{{.NetworkSettings.IPAddress}}" c1
172.17.0.4
#查看ip
[root@docker101 ~]#docker inspect -f "{{.NetworkSettings.Networks.bridge.IPAddress}}" c1
172.17.0.4
#查看ip
[root@docker101 ~]#docker container inspect -f "{{ range .NetworkSettings.Networks }}{{ .IPAddress }}{{end}}" c1
172.17.0.3
#查看网关
[root@docker101 ~]#docker container inspect -f "{{ range .NetworkSettings.Networks }}{{ .Gateway }}{{end}}" c1
172.17.0.1
#查看mac地址
[root@docker101 ~]#docker container inspect -f "{{ range .NetworkSettings.Networks }}{{ .MacAddress }}{{end}}" c1
02:42:ac:11:00:03
#查看最近一个容器创建的IP地址
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" `docker container ps -lq`
172.17.0.5
docker容器的重启策略
bash
[root@docker101 ~]#docker run -d --name restart-no --restart no registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
e1c80573afae7ac710b19a738b42cbc2e512a8f16050bfa008a6bdcad2ff277e
[root@docker101 ~]#docker run -d --name restart-always --restart always registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
77edc3f40b81e580cf0c74316926ee
[root@docker101 ~]#docker run -d --name restart-unless --restart unless-stopped registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
9e5c7dfeb4cb2523a4c204043e6546175ebf3d52782ce092fe331ea877da4481
[root@docker101 ~]#docker run -d --name restart-on-failure --restart on-failure:3 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
8e758f6624df5415f0db008cb976f4be7fc27263b3a8ec3e904afddbbe697136
参数选项:
--restart:设置容器的重启策略
no:
容器退出,始终不重启容器
always:
容器退出,始终重启容器
policy-on-failure[:max]
若指定次数,则当容器异常退出时会自动重启,到达指定次数后,就不再重启
若不指定次数,异常退出时始终重启,但正常退出时不会重启。
unless-stopped:
重启服务之前·,若容器处于运行状态,则重启docker服务后,该容器也会被启动。
相反,若重启服务前,容器处于退出状态,则重启docker服务后,该容器不会被重启。
容器退出时自动删除容器
bash
[root@docker101 ~]#docker run -d --name c1 --rm registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 sleep 10
73935148f4d26ba0dfdcf256fee26ae14c472a1138f58db50cdccf3ad954265f
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73935148f4d2 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 10 seconds ago Up 9 seconds 80/tcp c1
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
参数选项:
--rm 在容器退出时删除容器
将宿主机的路径挂载到容器的指定路径
bash
#将宿主机的/joren目录挂载到容器的/joren:/usr/share/nginx/html目录
[root@docker101 ~]#docker run -d --name c1 -v /joren:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
2554fb1fc0dcdb79c6f2d7ff403185bd60dd4b1dd11b550b76f1143346ec94a0
#在/joren目录创建一个index.html文件
[root@docker101 ~]#echo 1111111 >/joren/index.html
[root@docker101 ~]#cat /joren/index.html
1111111
#进入容器查看
[root@docker101 ~]#docker exec -it c1 sh
/ # cat /usr/share/nginx/html/index.html
1111111
/ #
#查看容器ip地址
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" `docker container ps -lq`
172.17.0.2
[root@docker101 ~]#curl 172.17.0.2
1111111
参数选项:
-v [宿主机目录:容器目录]:将宿主机目录挂载到容器目录
注意:
1.当删除容器时,宿主机的挂载目录不会被删除
2.如果容器的挂载点之前有数据,宿主机的数据目录会直接覆盖掉之前容器挂载点的数据
多个容器挂载相同宿主机的挂载点
1)指定宿主机的路径挂载
bash
[root@docker101 ~]#docker contdocker run -d --name c1 -v /joren:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
03ee47115dd9d4a7f9b24bca0a2ed51dd30ccc2d52161dabcb4797808d9b2094
[root@docker101 ~]#docker run -d --name c2 -v /joren:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
ce80e1f637d4f6e7a36a91ae47cd4642b9b2540aabcf7ae04be2688c7fdb8325
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c1
172.17.0.2
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c2
172.17.0.3
[root@docker101 ~]#curl 172.17.0.2
1111111
[root@docker101 ~]#curl 172.17.0.3
1111111
[root@docker10
2)基于--volumes-from实现和指定容器相同的挂载信息
bash
[root@docker101 ~]#docker contdocker run -d --name c1 -v /joren:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
eefd400c6e4727c17fcc0807ad8db5c9f3738183a046a9887ed246b2ebd66e32
[root@docker101 ~]#docker run docker run -d --name c2 --volumes-from c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
67559e34c90aa0816ca5173266cb801d9f9a418d2e615317431f14fb9dce486f
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c1
172.17.0.2
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c2
172.17.0.3
[root@docker101 ~]#curl 172.17.0.2
1111111
[root@docker101 ~]#curl 172.17.0.3
1111111
3)一个容器挂载多个挂载点
bash
[root@docker101 ~]#docker run -d --name c3 -v /joren01:/usr/share/nginx/html -v /joren02:/balbala -v /joren03:/xixi registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
6ee87f8c46001530bc74cd6dfc55323dee4dbd92979b176525a54aa3e0baf605
[root@docker101 ~]#echo 111 >/joren01/1.txt
[root@docker101 ~]#echo 222 >/joren02/2.txt
[root@docker101 ~]#echo 333 >/joren03/3.txt
[root@docker101 ~]#docker exec c3 cat /usr/share/nginx/html/1.txt
111
[root@docker101 ~]#docker exec c3 cat /balbala/2.txt
222
[root@docker101 ~]#docker exec c3 cat /xixi/3.txt
333
docker的存储卷挂载
1)查看本地的存储卷
bash
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
2)创建存储卷
2.1创建匿名存储卷(随机存储卷)
bash
[root@docker101 ~]#docker volume create
65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local 65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
2.2创建自定义名称的存储卷
bash
[root@docker101 ~]#docker volume create joren
joren
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local 65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
local joren
2.3查看底层的存储目录
bash
[root@docker101 ~]#ll /var/lib/docker/volumes/
total 32
drwx-----x 3 root root 19 Dec 13 22:42 65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
brw------- 1 root root 8, 3 Dec 8 20:47 backingFsBlockDev
drwx-----x 3 root root 19 Dec 13 22:43 joren
-rw------- 1 root root 65536 Dec 13 22:43 metadata.db
3)查看存储卷的详细信息
bash
[root@docker101 ~]#docker volume inspect 65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
[
{
"CreatedAt": "2025-12-13T22:42:22+08:00",
"Driver": "local",
"Labels": {
"com.docker.volume.anonymous": ""
},
"Mountpoint": "/var/lib/docker/volumes/65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a/_data",
"Name": "65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a",
"Options": null,
"Scope": "local"
}
]
[root@docker101 ~]#docker volume inspect joren
[
{
"CreatedAt": "2025-12-13T22:43:53+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/joren/_data",
"Name": "joren",
"Options": null,
"Scope": "local"
}
]
[root@docker101 ~]#
4)删除存储卷
4.1删除指定的存储卷
bash
[root@docker101 ~]#docker volume rm 65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
65ebdb9647d2539cf93ec437984d2ff4784ff713d3791a209101f0355dd4037a
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local joren
4.2删除所有未使用的存储卷
bash
[root@docker101 ~]#docker volume create
036cdd79861d8d526399c10460e5fa0ec0db1fd316399d9983f5c805e06e07e0
[root@docker101 ~]#docker volume create
e820ab16565ced612e748c21baa88ea772a218f9885120faacf986fbd1f9fe46
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local 036cdd79861d8d526399c10460e5fa0ec0db1fd316399d9983f5c805e06e07e0
local e820ab16565ced612e748c21baa88ea772a218f9885120faacf986fbd1f9fe46
[root@docker101 ~]#docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
036cdd79861d8d526399c10460e5fa0ec0db1fd316399d9983f5c805e06e07e0
e820ab16565ced612e748c21baa88ea772a218f9885120faacf986fbd1f9fe46
Total reclaimed space: 0B
[root@docker101 ~]#docker volume prune -f #可以强制删除,无交互
#注意:如果删除容器的同时想要删除匿名存储卷,可以使用-v选项
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local 298b14c11e83b03693140fd81ed760b033f9e4c5b76dfaea2cf6f3e0004e6e65
[root@docker101 ~]#docker rm -fv `docker ps -qa`
ea0c295cf14c
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
5)运行容器挂载已有的存储卷
5.1提前创建存储卷
bash
[root@docker101 ~]#docker volume create joren
joren
[root@docker101 ~]#docker volume inspect joren
[
{
"CreatedAt": "2025-12-13T23:00:59+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/joren/_data",
"Name": "joren",
"Options": null,
"Scope": "local"
}
]
[root@docker101 ~]#echo 1111 >/var/lib/docker/volumes/joren/_data/index.html
[root@docker101 ~]#
[root@docker101 ~]#ll /var/lib/docker/volumes/
total 32
brw------- 1 root root 8, 3 Dec 8 20:47 backingFsBlockDev
drwx-----x 3 root root 19 Dec 13 23:00 joren
-rw------- 1 root root 65536 Dec 13 23:00 metadata.db
[root@docker101 ~]#
5.2运行容器使用已有的存储卷
bash
[root@docker101 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker101 ~]#docker run -d --name c1 -v joren:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v
e79f0d876743087f2828477574b70b96cccd7b3b1c8eac8316f50d90fd3ffc6a
[root@docker101 ~]#docker exec c1 cat /usr/share/nginx/html/index.html
1111
6)运行容器挂载不存在的存储卷
bash
[root@docker101 ~]#docker run -d --name c2 -v joren02:/usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps
250f077ed1c130751a8e318ddc0fc482bf37cc014e3bcfbc9e0b8b6c1045f0b6
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local joren
local joren02
[root@docker101 ~]#docker volume inspect joren02
[
{
"CreatedAt": "2025-12-13T23:07:19+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/joren02/_data",
"Name": "joren02",
"Options": null,
"Scope": "local"
}
]
7)不指定存储卷时会随机生成匿名存储卷
bash
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
[root@docker101 ~]#docker run -d --name c1 -v /usr/share/nginx/html registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
ea0c295cf14c2b4bfb6c9b09e12e68ca31a0cac2cc07674e644797b0533d2ee9
[root@docker101 ~]#docker volume ls
DRIVER VOLUME NAME
local 298b14c11e83b03693140fd81ed760b033f9e4c5b76dfaea2cf6f3e0004e6e65
8)查看容器的挂载点
bash
[root@docker101 ~]#docker container inspect -f "{{range .Mounts}}容器挂载地址:{{.Destination}}宿主机地址:{{.Source}}{{end}}" c1
容器挂载地址:/usr/share/nginx/html宿主机地址:/var/lib/docker/volumes/298b14c11e83b03693140fd81ed760b033f9e4c5b76dfaea2cf6f3e0004e6e65/_data
温馨提示
bash
1.只要存储卷被容器使用,尽管该容器已经停止,使用"docker volume prune -f"是无法消除数据的,因此"docker volume prune -f"命令只能删除未被使用的存储卷;
2.若启动容器时,存储卷不存在则会自动创建
3.不指定存储卷时会随机生成匿名存储卷
4.若存储卷不存在且容器原有的挂载点有数据则会将之前的数据拷贝到存储卷中
5.若存储卷存储,尽管容器的挂载点之前有数据,也会直接覆盖原有的数据
6.如果想要查看已经运行的容器挂在信息可以使用"docker container inspect"进行进一步查看
docker存储卷案例练习
1)启动数据库
sql
#查看mysql挂载地址:
mysql> show variables like "%datadir%"
-> ;
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.26 sec)
#启动mysql
[root@docker101 ~]#docker run --name mysql-server \
> -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
> -e MYSQL_DATABASE=wordpress \
> -e MYSQL_USER=joren \
> -e MYSQL_PASSWORD=123456 \
> -v mysql_joren:/var/lib/mysql/ \
> -d \
> -p 13306:3306 \
> mysql:8.3.0-oracle
31e6c5a3acacf61f01e62550b533c8bbcc5470572240bdea57bc30237f1bf38b
[root@docker101 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31e6c5a3acac mysql:8.3.0-oracle "docker-entrypoint.s..." 11 seconds ago Up 10 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp mysql-server
注意:需要使用-v做持久化
2)启动wordpress
bash
[root@docker102 ~]#docker container inspect -f "{{range .Mounts}}容器地址:{{.Destination}}{{end}}" wp
容器地址:/var/www/html
[root@docker102 ~]#docker run \
> -d \
> -p 88:80 \
> --name wp \
> -e WORDPRESS_DB_HOST=10.0.0.101:13306 \
> -e WORDPRESS_DB_USER=joren \
> -e WORDPRESS_DB_PASSWORD=123456 \
> -e WORDPRESS_DB_NAME=wordpress \
> -v wordpress_joren:/var/www/html \
> wordpress
e3a0e6a9c426e8c598befee874342dcaee621778d74d6f2c115f10c9c75ef108
[root@docker102 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3a0e6a9c426 wordpress "docker-entrypoint.s..." 5 seconds ago Up 5 seconds 0.0.0.0:88->80/tcp, :::88->80/tcp wp
访问网址:10.0.0.102:88 发布博客进行测试
3)删除容器
bash
[root@docker101 ~]#docker container rm -f `docker ps -qa`
d51e4aa36cfe
[root@docker102 ~]#docker container rm -f `docker ps -qa`
0231d1df36c2
4)重启容器,观察是否可以正常访问
参考步骤1,2,可以正常访问

docker的单机网络类型
1)docker默认有五种单机网络类型
bash
none:
不分配任何网路,只有本地回环网卡lo
bridge:
桥接网络,默认容器的网络类型就是桥接网络,会创建虚拟设备对
host:
使用宿主机网络,不会创建虚拟设备对,而是和宿主机共用网络名称空间,因此此中网络效率最高
container:
不会创建新的虚拟设备对,和一个已经存在的容器使用相同的网络名称空间
custom network:
自定义docker网络类型,需要创建网络,该自定义网络支持基于容器名称访问彼此。相当于内置DNS功能
2)案例实战
2.1查看现有的网络类型
bash
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
d2b2e36d8f63 none null local
2.2启动容器
bash
root@docker102:~# docker run -d --name c1-none --network none registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
336bec5d53caa1dcdb156c52f533d3c27a59cf916850e10465c021f255da85f4
root@docker102:~#
root@docker102:~# docker run -d --name c2-bridge --network bridge registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
3ed25ff5b4773e94232cc81a59848f306470f26fe018327cc7b0aedffc778710
root@docker102:~#
root@docker102:~# docker run -d --name c3 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
8cef6f986773bcc382e08c52d034dc4eaa2b983308f796a3a2e992a816db243a
root@docker102:~#
root@docker102:~# docker run -d --name c4-host --network host registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
2133ed2fc3e54191dc701801950f6c6bf891c4cf2a98caeffedc493a920c7628
root@docker102:~#
root@docker102:~# docker run -d --name c5-container --network container:c3 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 sleep 3600
29cb1f07753940a9dca02d39e886d1e454a3c2dfa55922bf7c427145eb2cc2f2
root@docker102:~#
root@docker102:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29cb1f077539 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 3 seconds ago Up 3 seconds c5-container
2133ed2fc3e5 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." About a minute ago Up About a minute c4-host
8cef6f986773 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." About a minute ago Up About a minute 80/tcp c3
3ed25ff5b477 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." About a minute ago Up About a minute 80/tcp c2-bridge
336bec5d53ca registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 2 minutes ago Up 2 minutes
选项参数:
--network 设置网络容器类型
2.3检查各节点容器的ip地址
bash
root@docker102:~# docker exec c1-none ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@docker102:~#
root@docker102:~# docker exec c2-bridge ifconfig -a
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1086 (1.0 KiB) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@docker102:~#
root@docker102:~# docker exec c3 ifconfig -a
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:03
inet addr:172.17.0.3 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:866 (866.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@docker102:~#
root@docker102:~# docker exec c4-host ifconfig -a
docker0 Link encap:Ethernet HWaddr 02:42:A1:A3:A6:BD
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:a1ff:fea3:a6bd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3846 errors:0 dropped:0 overruns:0 frame:0
TX packets:4772 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2586641 (2.4 MiB) TX bytes:930475 (908.6 KiB)
ens33 Link encap:Ethernet HWaddr 00:0C:29:2B:AC:B6
inet addr:10.0.0.102 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe2b:acb6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32810 errors:0 dropped:0 overruns:0 frame:0
TX packets:39744 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3083850 (2.9 MiB) TX bytes:6246741 (5.9 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:36091 errors:0 dropped:0 overruns:0 frame:0
TX packets:36091 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2841778 (2.7 MiB) TX bytes:2841778 (2.7 MiB)
veth78864b7 Link encap:Ethernet HWaddr 22:1A:47:47:97:8F
inet6 addr: fe80::201a:47ff:fe47:978f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1086 (1.0 KiB)
vetheef9220 Link encap:Ethernet HWaddr AE:36:9D:8A:8F:62
inet6 addr: fe80::ac36:9dff:fe8a:8f62/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:866 (866.0 B)
root@docker102:~#
root@docker102:~#
root@docker102:~# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:a1ff:fea3:a6bd prefixlen 64 scopeid 0x20<link>
ether 02:42:a1:a3:a6:bd txqueuelen 0 (Ethernet)
RX packets 3846 bytes 2586641 (2.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4772 bytes 930475 (930.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.102 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe2b:acb6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:2b:ac:b6 txqueuelen 1000 (Ethernet)
RX packets 32829 bytes 3085260 (3.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 39758 bytes 6250245 (6.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 36093 bytes 2841920 (2.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36093 bytes 2841920 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth78864b7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::201a:47ff:fe47:978f prefixlen 64 scopeid 0x20<link>
ether 22:1a:47:47:97:8f txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 1086 (1.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vetheef9220: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::ac36:9dff:fe8a:8f62 prefixlen 64 scopeid 0x20<link>
ether ae:36:9d:8a:8f:62 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 866 (866.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@docker102:~#
root@docker102:~# docker exec c5-container ifconfig -a
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:03
inet addr:172.17.0.3 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:936 (936.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
注意:
1.使用宿主机的网络效率最高,因为减少了2次报文的封装
2.如果多个容器使用同一个网络,一定要避免端口冲突问题,否则可能导致容器无法启动
单机网络通信的三种方案
1)添加hosts解析
bash
[root@docker101 ~]#docker run -d --name c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
7739cdbaf6a2bdcf9b3968841aa41090a2089d40e340a04f5602a750315ba731
[root@docker101 ~]#docker run -d --name c2 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
43d999348ae833805479ad1ac39a58bc8ce89b6613f7e8fd7e4c5fe9af812747
[root@docker101 ~]#docker exec -it c1 sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1016 (1016.0 B) TX bytes:208 (208.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ #
[root@docker101 ~]#docker exec -it c2 sh
/ # ping c1
ping: bad address 'c1'
/ # echo 172.17.0.2 c1 >> /etc/hosts
/ # ping c1
PING c1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.155 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.118 ms
^C
--- c1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.118/0.136/0.155 ms
2)使用--link关联
bash
[root@docker101 ~]#docker run -d --narun -d --name c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1^C
[root@docker101 ~]#docker run -d --network bridge --name c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
616407a01451aca195b94782093e10affb1818e246536d1f1d232189c0dfc7ce
[root@docker101 ~]#docker run -d --name c2 --link c1 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
c99a3e8adddd4e83aae18aba23d8bf4346aea57aa7a00e9e352ac36a12ca9bd2
[root@docker101 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c99a3e8adddd registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 3 seconds ago Up 2 seconds 80/tcp c2
616407a01451 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 "/docker-entrypoint...." 37 seconds ago Up 37 seconds 80/tcp c1
[root@docker101 ~]#docker exec -it c2 sh
/ # ping -c 3 c1
PING c1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.143 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.135 ms
64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.070 ms
--- c1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.070/0.116/0.143 ms
/ # cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 c1 616407a01451
172.17.0.3 c99a3e8adddd
选项参数:
--link 添加hosts关联
注意:
1.使用hists解析的方案当容器的ip地址发生变化时,需要手动修改hosts文件
2.使用--link关联容器时,被关联的容器重启ip地址变化时,会自动更新hosts映射ip
3.使用使用"--link"有个缺陷就是被关联的容器必须运行,若没有运行,则容器无法启动;
3)自定义网络
3.1查看现有的网络列表
bash
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
d2b2e36d8f63 none null local
3.2创建自定义网路
bash
[root@docker101 ~]#docker network create joren
4e97fc3fb032427ca2c27ee7e06421eab6ffe826a709205fcfd9e9339fe0ced8
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
d2b2e36d8f63 none null local
3.3查看网络的信息
bash
[root@docker101 ~]#docker network inspect joren
[
{
"Name": "joren",
"Id": "4e97fc3fb032427ca2c27ee7e06421eab6ffe826a709205fcfd9e9339fe0ced8",
"Created": "2025-12-20T15:49:17.768407303+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
3.4启动容器指定自定义网络
bash
[root@docker101 ~]#docker run -d --name c1 --network joren registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
d6045b25f1fe1ebb91bde2c09f1fb33247e3b8fc27d59e41a0373de3bf579971
[root@docker101 ~]#docker run -d --name c2 --network joren registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
3ce009ad1da21f373a23ae5361a7f0c778c23ca8c7b5400ffc3db26641d29085
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c1
172.18.0.2
[root@docker101 ~]#docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" c2
172.18.0.3
3.5验证自定义网络容器的通信
bash
[root@docker101 ~]#docker exec -it c1 sh
/ # cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.2 d6045b25f1fe
/ # ping c2 -c 3
PING c2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.071 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.145 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.108 ms
--- c2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.071/0.108/0.145 ms
3.6删除未使用的网络
bash
[root@docker101 ~]#docker network create xixi
3324825ffc48df2dd427d6a1e48f2e9cb4f24f58e762b3080a7c8fe8da70ffb1
[root@docker101 ~]#docker network create haha
bb490c42cd5a853f2418da61409775b6128e8893e3b7184f7e97a6c4542c0ae3
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
bb490c42cd5a haha bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
d2b2e36d8f63 none null local
3324825ffc48 xixi bridge local
[root@docker101 ~]#docker network prune -f
Deleted Networks:
xixi
haha
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
d2b2e36d8f63 none null local
注意:
使用"docker network prune -f"只会删除未被使用的自定义网络
3.7删除指定网络
bash
[root@docker101 ~]#docker network create xixi
f5572bf0f25603a9a3eaa59c5502b96401b1552fe70ec84f20cd515e19001b34
[root@docker101 ~]#docker network create haha
7526f2bf86a0aec1578c98440d62e12f30116ce0649c7b41c14e24b342828733
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
7526f2bf86a0 haha bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
d2b2e36d8f63 none null local
f5572bf0f256 xixi bridge local
[root@docker101 ~]#docker network rm xixi haha
xixi
haha
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
d2b2e36d8f63 none null local
3.8创建网络时可以自定义网关,ip地址范围,子网范围,网络类型等
①创建自定义子网
bash
[root@docker101 ~]#docker network create -d bridge --gateway 172.21.0.254 --ip-range 172.21.100.0/24 --subnet 172.21.0.0/16 joren02
c01938e13b49c182dd151894cbf3ec2fe97822686e7ae993c93fa26b106ee129
[root@docker101 ~]#docker network ls
NETWORK ID NAME DRIVER SCOPE
8ce2d108ce71 bridge bridge local
dde83ce0ade1 host host local
4e97fc3fb032 joren bridge local
c01938e13b49 joren02 bridge local
d2b2e36d8f63 none null local
②查看自定义网络信息
bash
[root@docker101 ~]#docker network inspect joren02
[
{
"Name": "joren02",
"Id": "c01938e13b49c182dd151894cbf3ec2fe97822686e7ae993c93fa26b106ee129",
"Created": "2025-12-20T16:01:08.997039993+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.21.0.0/16",
"IPRange": "172.21.100.0/24",
"Gateway": "172.21.0.254"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
[root@docker101 ~]#
③指定自定义网络
bash
[root@docker101 ~]#docker run -d --name c1 --network joren02 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
4a2c03f657d67bbb0eb1dde047c782569b73b7095beb64ef5fa4a56071c21e1d
[root@docker101 ~]#docker run -d --name c2 --network joren02 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
d5f04a7ec074b8c0b11cf9b40b334e6c8a6b412dc46ecd02f6caee556f2746e7
[root@docker101 ~]#docker exec c1 ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:15:64:00
inet addr:172.21.100.0 Bcast:172.21.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1102 (1.0 KiB) TX bytes:0 (0.0 B)
[root@docker101 ~]#docker exec c2 ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:15:64:01
inet addr:172.21.100.1 Bcast:172.21.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:656 (656.0 B) TX bytes:0 (0.0 B)
④手动分配IP地址
bash
[root@docker101 ~]#docker run -d --name c3 --network joren02 --ip 172.21.1.102 registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
0d6e96d26a70e61db35095c290af082a6c9e3e59807c1f76c1bbc47e2691ca1e
[root@docker101 ~]#docker run -d --naexec c3 ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:15:01:66
inet addr:172.21.1.102 Bcast:172.21.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:516 (516.0 B) TX bytes:0 (0.0 B)
⑤检测容器和IP的连通性
bash
[root@docker101 ~]#docker exec c3 ping -c 3 c1
PING c1 (172.21.100.0): 56 data bytes
64 bytes from 172.21.100.0: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.21.100.0: seq=1 ttl=64 time=0.070 ms
64 bytes from 172.21.100.0: seq=2 ttl=64 time=0.105 ms
--- c1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.070/0.082/0.105 ms