- 1.查看本地镜像仓库
[root@elk92 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.27.4-alpine 1ff4bb4faebc 5 weeks ago 47.9MB
hello-world latest 74cc54e27dc4 8 weeks ago 10.1kB
[root@elk92 ~]#
相关字段说明:
REPOSITORY
远程仓库。其格式: [远程仓库主机明或者IP地址/][项目仓库名称/]镜像名称[:镜像版本]
如果下载的镜像是docker hub官方的,则无需指定前缀'[远程仓库主机明或者IP地址/][项目仓库名称/]',默认为'docker.io/library/'
如果下载的镜像非docker hub官方的,则需要指定'[远程仓库主机明或者IP地址/][项目仓库名称/]'。
举个例子:
registry.cn-hangzhou.aliyuncs.com/violet/apps:v1
TAG
对镜像做版本标记,比如nginx:1.27.4,表示部署的是nginx的1.27.4的版本。
如果拉取镜像时未指定TAG,则默认标签为'latest',生产环境中不推荐使用该标签。
IMAGE ID:
表示镜像的唯一标识,判断该镜像是否被篡改。
CREATED:
表示镜像的创建时间。
SIZE:
镜像的大小。
- 2.拉取镜像
2.1 拉取官方的镜像(注意官方拉去镜像是需要代理的哟!)
[root@elk92 ~]# docker pull busybox:1.36.1
1.36.1: Pulling from library/busybox
aef0d3bb86ca: Pull complete
Digest: sha256:e9daaecf76a040744e68e1436515ddba4127fdc84b0735095b392b1d343f904b
Status: Downloaded newer image for busybox:1.36.1
docker.io/library/busybox:1.36.1
[root@elk92 ~]#
2.2 拉取非官方镜像 (拉去自己的阿里云镜像,不需要代理)
[root@elk92 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
v1: Pulling from violet-k8s/apps
5758d4e389a3: Pull complete
51d66f629021: Pull complete
ff9c6add3f30: Pull complete
dcc43d9a97b4: Pull complete
5dcfac0f2f9c: Pull complete
2c6e86e57dfd: Pull complete
2dd61e30a21a: Pull complete
Digest: sha256:3bee216f250cfd2dbda1744d6849e27118845b8f4d55dda3ca3c6c1227cc2e5c
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
[root@elk92 ~]#
2.3 拉取最新的镜像(注意官方拉去镜像是需要代理的哟!)
[root@elk92 ~]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
f18232174bc9: Already exists
Digest: sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@elk92 ~]#
- 3.给镜像打标签
[root@elk92 ~]# docker image tag alpine:latest www.vionletarchitect.top/violet/alpine:2025-03-19
[root@elk92 ~]#
[root@elk92 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest aded1e1a5b37 4 weeks ago 7.83MB
www.vionletarchitect.top/violet/alpine:2025-03-19 2025-03-19 aded1e1a5b37 4 weeks ago 7.83MB
nginx 1.27.4-alpine 1ff4bb4faebc 5 weeks ago 47.9MB
hello-world latest 74cc54e27dc4 8 weeks ago 10.1kB
registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps v1 f28fd43be4ad 14 months ago 23MB
busybox 1.36.1 2d61ae04c2b8 22 months ago 4.27MB
[root@elk92 ~]#
- 4.删除镜像
[root@elk92 ~]# docker image rm www.vionletarchitect.top/violet/alpine:2025-03-19
Untagged: www.vionletarchitect.top/violet/alpine:2025-03-19
[root@elk92 ~]#
[root@elk92 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest aded1e1a5b37 4 weeks ago 7.83MB
nginx 1.27.4-alpine 1ff4bb4faebc 5 weeks ago 47.9MB
hello-world latest 74cc54e27dc4 8 weeks ago 10.1kB
registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps v1 f28fd43be4ad 14 months ago 23MB
busybox 1.36.1 2d61ae04c2b8 22 months ago 4.27MB
[root@elk92 ~]#
或者可以简写docker rmi [镜像名字]
- 5.导出镜像
[root@elk92 ~]# docker image save registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 -o violet-v1.tar.gz # 导出镜像
[root@elk92 ~]#
[root@elk92 ~]# scp violet-v1.tar.gz 10.0.0.93:~
- 6.导入镜像
[root@elk93 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.27.4-alpine 1ff4bb4faebc 5 weeks ago 47.9MB
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker load -i violet-v1.tar.gz
7fcb75871b21: Loading layer [==================================================>] 5.904MB/5.904MB
15d7cdc64789: Loading layer [==================================================>] 18.32MB/18.32MB
5f66747c8a72: Loading layer [==================================================>] 3.072kB/3.072kB
c39c1c35e3e8: Loading layer [==================================================>] 4.096kB/4.096kB
b8dbe22b95f7: Loading layer [==================================================>] 3.584kB/3.584kB
9d5b000ce7c7: Loading layer [==================================================>] 7.168kB/7.168kB
24f6c2496534: Loading layer [==================================================>] 288.1MB/288.1MB
df2c564d255b: Loading layer [==================================================>] 6.144kB/6.144kB
ce4dda5fa1c1: Loading layer [==================================================>] 7.168kB/7.168kB
1d0291efebc6: Loading layer [==================================================>] 70.73MB/70.73MB
Loaded image: registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
[root@elk93 ~]#
[root@elk93 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.27.4-alpine 1ff4bb4faebc 5 weeks ago 47.9MB
registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps v1 b55cbfca1946 12 months ago 376MB
[root@elk93 ~]#
镜像和容器的关系
– 镜像就好比安装nginx,使用apt -y install nginx,但是该nginx并没有运行,只是配置文件,启动脚本,程序文件等信息。
– 容器就相当于启动服务,好比systemctl start nginx ,将一个程序运行为一个进程的过程。
值得注意的是,镜像是不可修改的,说白了是只读的,而容器是可读写的,说白了,就是可以进行修改的。
- 7.创建容器
[root@elk93 ~]# docker create -p 90:80 --name c1 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
35167301d7e11d4f87e2df36e00527f127c85bd76c7c749ec8bce81d3ba986a4
[root@elk93 ~]#
- 2.查看容器状态
[root@elk93 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35167301d7e1 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 7 seconds ago Created c1
[root@elk93 ~]#
- 3.启动容器
[root@elk93 ~]# docker start c1
c1
[root@elk93 ~]#
[root@elk93 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35167301d7e1 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 41 seconds ago Up 1 second 0.0.0.0:90->80/tcp, :::90->80/tcp c1
[root@elk93 ~]#
容器实现端口映射原理
- 1.查看现有的容器列表
[root@elk93 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35167301d7e1 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:90->80/tcp, :::90->80/tcp c1
12cc25debc85 nginx:1.27.4-alpine "/docker-entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:81->80/tcp, :::81->80/tcp c2
[root@elk93 ~]#
- 2.容器的网卡和宿主机的veth网卡是成对出现的
[root@elk93 ~]# docker exec -it c1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker exec -it c2 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@elk93 ~]#
[root@elk93 ~]# docker exec -it c2 route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[root@elk93 ~]#
[root@elk93 ~]# docker exec -it mygame route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[root@elk93 ~]#
[root@elk93 ~]# ip a
...
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:b7:be:c3 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:c0ff:feb7:bec3/64 scope link
valid_lft forever preferred_lft forever
5: veth98182e6@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 8e:ac:88:5a:ba:a1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::8cac:88ff:fe5a:baa1/64 scope link
valid_lft forever preferred_lft forever
7: vethbdffe29@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 72:b3:09:9d:78:54 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::70b3:9ff:fe9d:7854/64 scope link
valid_lft forever preferred_lft forever
[root@elk93 ~]#
- 3.所有的容器网卡都会桥接到docker0
[root@elk93 ~]# apt -y install bridge-utils
[root@elk93 ~]# brctl show docker0
bridge name bridge id STP enabled interfaces
docker0 8000.0242c0b7bec3 no veth98182e6
vethbdffe29
[root@elk93 ~]#
- 4.外部访问宿主机的某个端口会被DNAT到对应的容器端口
[root@elk93 ~]# iptables-save | grep 90
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 90 -j DNAT --to-destination 172.17.0.3:80
[root@elk93 ~]#
- 5.容器需要访问外网的前提是开启内核转发参数
[root@elk93 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@elk93 ~]#
[root@elk93 ~]# sysctl -q net.ipv4.ip_forward
net.ipv4.ip_forward = 1
[root@elk93 ~]#
容器和虚拟机的对比
- 小: (轻量级)
- 容器镜像体积小,可以达到MB级别.
- 虚拟机的ISO文件可以达到GB级别。
- 快:
- 容器没有开机启动流程,直接以进程的方式在宿主机运行。
- 虚拟机存在开机启动流程。
- 性能高:
- 容器直接使用物理机的内核。
- 而虚拟机使用的是虚拟的CPU内核。需要VMM程序做一次转换为物理CPU能够识别的指令。VMM程序本身也会吃掉一些资源。
- 迁移方便:
- 容器迁移时,可以直接迁移镜像,镜像是不可变的基础设施,主要有docker环境都可以运行镜像。
- 虚拟机在迁移应用时,需要目标主机的VMM版本要一致,如果不一致则会面临问题,而且虚拟机本身就是很大的文件。甚至有些平台不兼容则需要手动重新部署服务。
- 隔离性:
- 从隔离性角度来说,虚拟机比容器隔离性要好,所以,二者在此处可以互补。
容器和镜像的关系
- 镜像:
是不可变的基础设施,说白了,就是只读的。
- 容器:
基于镜像启动的进程,将来对容器进行修改时,会采用Cocy On Write(COW)机制。
总结:
- 1.一个镜像可以运行多个容器。
- 2.镜像就好比VM'模板机',容器就好比克隆的'虚拟机';
基于镜像启动多个容器
-p
指定端口映射,格式: '宿主机端口:容器端口'
--name:
指定容器的名称。
-d
放在后台运行。
[root@elk93 ~]# docker run -p 81:80 --name c1 -d registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
2846f7d526c7f3211998865f0d86d7e8d691031cdc2c93539bd28a7e1dd15897
[root@elk93 ~]#
[root@elk93 ~]# docker run -p 82:80 --name c2 -d registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
668fed180ff4fe52735841e1ffc166f7f11eff764ec07edf835787f0d5be07d4
[root@elk93 ~]#
[root@elk93 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 12 seconds ago Up 11 seconds 0.0.0.0:81->80/tcp, :::81->80/tcp c1
[root@elk93 ~]#
容器的基础管理
- 1.查看正在运行的容器列表
[root@elk93 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 27 minutes ago Up 27 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 27 minutes ago Up 27 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp c1
[root@elk93 ~]#
相关字段说明:
CONTAINER ID:
容器的唯一标识。
IMAGE:
容器基于哪个镜像启动的。
COMMAND:
容器启动时运行的命令。
CREATED:
容器的创建时间。
STATUS:
容器的运行状态及时间。常见的状态有以下几种:
- Up:
容器正在运行。
- Create:
容器已经创建但是未运行。
- Exited:
容器处于退出状态,未运行。
- Paused:
容器处于暂停状态,既没有停止也没有运行。只是临时不对外提供服务。
PORTS:
配置端口映射信息,或者端口暴露信息。
NAMES
容器的名称,每个容器的名称不能重复,必须唯一。
- 2.停止容器
[root@elk93 ~]# docker stop c1
c1
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 32 minutes ago Up 32 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 32 minutes ago Exited (0) 1 second ago c1
[root@elk93 ~]#
- 3.暂停容器
[root@elk93 ~]# docker pause c2
c2
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 33 minutes ago Up 33 minutes (Paused) 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 33 minutes ago Exited (0) 51 seconds ago c1
[root@elk93 ~]#
- 4.恢复暂停
[root@elk93 ~]# docker unpause c2
c2
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 34 minutes ago Up 34 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 34 minutes ago Exited (0) About a minute ago c1
[root@elk93 ~]#
- 5.创建容器
[root@elk93 ~]# docker create --name c3 registry.cn-registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
bae123232da08d4f1bed833a28bbaefedbcb1dfa986ffaaac0e9d8c135cdc8cb
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a # 其中'-a'查看容器的所有状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bae123232da0 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 2 seconds ago Created c3
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 34 minutes ago Up 34 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 34 minutes ago Exited (0) 2 minutes ago c1
[root@elk93 ~]#
- 6.修改容器的名称
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bae123232da0 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" About a minute ago Created c3
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 36 minutes ago Up 36 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp c2
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 36 minutes ago Exited (0) 3 minutes ago c1
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker rename c2 xixi
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bae123232da0 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" About a minute ago Created c3
668fed180ff4 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 36 minutes ago Up 36 minutes 0.0.0.0:82->80/tcp, :::82->80/tcp xixi
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 36 minutes ago Exited (0) 4 minutes ago c1
[root@elk93 ~]#
- 7.停止容器
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 80/tcp c3
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker stop c3
c3
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 12 seconds ago Exited (0) 2 seconds ago c3
[root@elk93 ~]#
[root@elk93 ~]#
- 8.启动容器
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 23 seconds ago Exited (0) 13 seconds ago c3
[root@elk93 ~]#
[root@elk93 ~]#
[root@elk93 ~]# docker start c3
c3
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 28 seconds ago Up 1 second 80/tcp c3
[root@elk93 ~]#
- 9.重启容器
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 46 seconds ago Up 19 seconds 80/tcp c3
[root@elk93 ~]#
[root@elk93 ~]# docker restart c3
c3
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe2025dda0cd registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 54 seconds ago Up 1 second 80/tcp c3
[root@elk93 ~]#
- 10.删除容器
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f4b8ecc47fb registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp c2
9b9fbe9a1a54 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 11 seconds ago Created c3
2846f7d526c7 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 38 minutes ago Exited (0) 6 minutes ago c1
[root@elk93 ~]#
[root@elk93 ~]# docker container rm -f c1 c2 c3
c1
c2
c3
[root@elk93 ~]#
[root@elk93 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@elk93 ~]#
查看容器的详细信息
- 1.查看容器的所有信息
[root@elk93 ~]# docker inspect c3
[
{
"Id": "fe2025dda0cddc4b81edae9618018dc932bc9bb48725bc921068039b6db82bb8", # 容器的ID
"Created": "2025-03-19T08:33:55.629687118Z", # 容器的创建时间
...
"State": { # 容器的运行状态
...
"Pid": 260929, # 容器在宿主机的进程ID
...
},
...
"Name": "/c3", # 容器的名称
...
},
"NetworkSettings": {
"...
"Gateway": "172.17.0.1", # 容器的网关地址
..
"IPAddress": "172.17.0.2", # 容器的IP地址
...
"Networks": {
"bridge": {
...,
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
...
}
}
}
}
]
[root@elk93 ~]#
- 2.查看的进程ID
[root@elk93 ~]# docker inspect -f '{{.State.Pid}}' c3
260929
[root@elk93 ~]#
- 3.查看容器的IP地址
[root@elk93 ~]# docker inspect -f '{{.NetworkSettings.IPAddress}}' c3
172.17.0.2
[root@elk93 ~]#
[root@elk93 ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' c3
172.17.0.2
[root@elk93 ~]#
- 4.查看最新创建容器的IP地址【彩蛋】
[root@elk93 ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' `docker ps -l | awk 'NR==2{print $NF}'`
172.17.0.2
[root@elk93 ~]#
[root@elk93 ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' `docker ps -lq` # 推荐
172.17.0.2
[root@elk93 ~]#
查看容器的日志信息
- 1.启动容器
[root@elk93 ~]# docker run -d --name myweb -p 90:80 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1
e62f820d18b257d7ec67e0d9da8625a5d603b40f3e1a929527f5c88c21904b76
[root@elk93 ~]#
[root@elk93 ~]# docker container inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" `docker container ps -lq`
172.17.0.3
[root@elk93 ~]#
[root@elk93 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e62f820d18b2 registry.cn-hangzhou.aliyuncs.com/violet-k8s/apps:v1 "/docker-entrypoint.…" 22 seconds ago Up 22 seconds 0.0.0.0:90->80/tcp, :::90->80/tcp myweb
[root@elk93 ~]#
- 2.本地访问测试
[root@elk93 ~]# curl 172.17.0.3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>yinzhengjie apps v1</title>
<style>
div img {
width: 900px;
height: 600px;
margin: 0;
}
</style>
</head>
<body>
<h1 style="color: green">凡人修仙传 v1 </h1>
<div>
<img src="1.jpg">
<div>
</body>
</html>
[root@elk93 ~]#
- 3.在其他节点访问测试
[root@elk91 ~]# curl 10.0.0.93:90
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>yinzhengjie apps v1</title>
<style>
div img {
width: 900px;
height: 600px;
margin: 0;
}
</style>
</head>
<body>
<h1 style="color: green">凡人修仙传 v1 </h1>
<div>
<img src="1.jpg">
<div>
</body>
- 3.实时查看容器的日志信息
[root@elk93 ~]# docker logs -f myweb
...
172.17.0.1 - - [19/Mar/2025:09:03:44 +0000] "GET / HTTP/1.1" 200 357 "-" "curl/7.81.0" "-"
10.0.0.91 - - [19/Mar/2025:09:04:41 +0000] "GET / HTTP/1.1" 200 357 "-" "curl/7.81.0" "-"
2025/03/19 09:04:58 [error] 33#33: *3 open() "/usr/share/nginx/html/oldboyedu.html" failed (2: No such file or directory), client: 10.0.0.91, server: localhost, request: "GET /oldboyedu.html HTTP/1.1", host: "10.0.0.93:90"
10.0.0.91 - - [19/Mar/2025:09:04:58 +0000] "GET /oldboyedu.html HTTP/1.1" 404 153 "-" "curl/7.81.0" "-"
- 4.查看容器20分钟内的日志
[root@elk93 ~]# docker logs -f --since 20m myweb
- 5.查看5分钟之前的数据
[root@elk93 ~]# docker logs -f --until 5m myweb
Categories: