• 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