一、镜像管理

1 搜索镜像

docker search 是 Docker 提供的一个命令行工具,用于在 Docker Hub(或其他配置的镜像仓库)中搜索可用的镜像。 这个命令非常有用,尤其是在你想要查找某个特定功能的镜像(如 Nginx、MySQL、Python 等)时。

示例:搜索 Nginx 镜像

root@00b62e4bbab4:/workspace# docker search nginx
NAME                                     DESCRIPTION                                     STARS     OFFICIAL
nginx                                    Official build of Nginx.                        20880     [OK]
nginx/nginx-ingress                      NGINX and  NGINX Plus Ingress Controllers fo…   108       
nginx/nginx-prometheus-exporter          NGINX Prometheus Exporter for NGINX and NGIN…   51        
nginx/unit                               This repository is retired, use the Docker o…   65        
nginx/nginx-ingress-operator             NGINX Ingress Operator for NGINX and NGINX P…   2         
nginx/nginx-quic-qns                     NGINX QUIC interop                              1         
nginx/nginxaas-loadbalancer-kubernetes                                                   1         
nginx/unit-preview                       Unit preview features                           0         
bitnami/nginx                            Bitnami container image for NGINX               200

输出字段说明:

字段说明
NAME镜像名称
DESCRIPTION镜像描述
STARS收藏数(受欢迎程度)
OFFICIAL是否为官方镜像([OK] 表示是)
AUTOMATED是否为自动构建的镜像

使用建议:

  • 优先选择官方镜像([OK] in OFFICIAL):更安全、更新更及时。
  • 关注 STARS 数量:代表社区认可度。

2 拉取镜像

docker pull 是一个常用的 Docker 命令,用于从镜像仓库(如 Docker Hub下载(拉取)镜像到本地机器。

拉取默认标签的镜像

如果不指定标签,默认会拉取 latest 标签的镜像,以下指令等价于:docker pull ubuntu:latest

示例:

root@00b62e4bbab4:/workspace# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
b08e2ff4391e: Pull complete 
Digest: sha256:440dcf6a5640b2ae5c77724e68787a906afb8ddee98bf86db94eea8528c2c076
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

拉取特定版本的镜像(指定标签)

示例:拉取 Ubuntu 22.04 版本的镜像

root@00b62e4bbab4:/workspace# docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
e735f3a6b701: Pull complete 
Digest: sha256:3c61d3759c2639d4b836d32a2d3c83fa0214e36f195a3421018dbaaf79cbe37f
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

3 查看镜像

在使用 Docker 时,我们经常需要查看本地已经存在的镜像 示例:

# 查看docker所有镜像
root@00b62e4bbab4:/workspace# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.04     1b668a2d748d   2 weeks ago   77.9MB
ubuntu       latest    f9248aac10f2   2 weeks ago   78.1MB

4 删除镜像

docker rmi 是 Docker 提供的用于 删除一个或多个本地镜像(image) 的命令。

删除单个镜像(通过名称:标签)

docker rmi nginx:latest

删除多个镜像

docker rmi nginx redis mysql

使用镜像 ID 删除镜像

docker rmi 602e111c06b6

强制删除镜像(即使有容器依赖)

⚠️ 注意:强制删除可能会导致已经运行的容器无法正常工作。

docker rmi -f nginx

删除悬空镜像

悬空镜像是没有标签的镜像,通常是在构建失败或更新镜像后留下的旧版本。

docker image prune

如果想删除所有未被使用的镜像(包括没有容器使用的镜像)

docker image prune -a

5 镜像标签

docker tag 命令用于 为现有镜像创建一个新的标签(tag)。这在你希望重命名镜像、为镜像打版本号、或准备推送镜像到远程仓库(如 Docker Hub)时非常有用。

⚠️ 注意:新标签和原标签指向同一个镜像 ID,不会复制镜像,只是添加了一个新的“标签”。

示例:

# 1.先用 docker images 查看本地已有的镜像
root@00b62e4bbab4:/workspace# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.04     1b668a2d748d   2 weeks ago   77.9MB
ubuntu       latest    f9248aac10f2   2 weeks ago   78.1MB

# 2.给镜像打一个新的标签
docker tag ubuntu ubuntu:25.10

# 查看系统镜像
root@00b62e4bbab4:/workspace# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.04     1b668a2d748d   2 weeks ago   77.9MB
ubuntu       1.12      f9248aac10f2   2 weeks ago   78.1MB
ubuntu       latest    f9248aac10f2   2 weeks ago   78.1MB

6 镜像推送

docker push 命令用于将镜像推送到镜像仓库(如 Docker Hub),也可以推送到自己搭建的镜像仓库(Harbor)。 这里以推送到cnb平台仓库为例,cnb镜像推送命名规则:docker.cnb.cool/<组织名>/[子组织名]/<仓库名>/<image_name>:<tag>

示例:

docker pull nginx
docker tag nginx docker.cnb.cool/<组织名>/[子组织名]/<仓库名>/nginx:1.24.2
docker push docker.cnb.cool/<组织名>/[子组织名]/<仓库名>/nginx:1.24.2

二、容器生命周期管理

1 创建并启动一个新容器

docker run [options] 命令是一个常用的 Docker 命令,用于创建并启动一个新容器。 常用选项:

  • -d: 后台运行容器,并返回容器 ID。
  • -it: 启动一个交互式的容器,并进入容器。
  • --name: 指定容器的名称。
  • --rm: 创建并运行容器后,自动删除容器。
  • p: 端口映射,将容器的端口映射到主机的端口。
  • v: 挂载卷,将容器的文件系统映射到主机的文件系统。
  • e: 设置环境变量。

示例:

docker run -d -it -p 80:80 --name my-nginx nginx:1.12.0

2 停止容器

docker stop 命令是一个常用的 Docker 命令,用于停止一个正在运行的容器。 docker stop 命令会向容器发送一个停止信号,并等待容器停止。如果容器无法停止,则需要使用 docker kill 命令强制停止容器。

示例:

# 1. 根据容器名称停止容器
docker stop my-nginx

# 2. 根据容器ID停止容器
docker stop 5c86c7e2fc95

3 启动/重启已停止容器

docker start 命令是一个常用的 Docker 命令,用于启动一个已停止的容器。

示例:

# 1. 根据容器名称启动容器
docker start my-nginx

# 2. 根据容器ID启动容器
docker start 5c86c7e2fc95

# 3. 重启已停止的容器
docker restart my-nginx

# 4. 根据容器ID重启容器
docker restart 5c86c7e2fc95

4 删除容器

docker rm 命令是一个常用的 Docker 命令,用于删除一个或多个容器。 docker rm 命令会删除容器,但不会删除容器所使用的镜像。

示例:

# 1. 根据容器名称删除容器
docker rm my-nginx

# 2. 根据容器ID删除容器
docker rm 5c86c7e2fc95

# 3. 强制删除容器
docker rm -f my-nginx

# 4. 删除所有停止的容器
docker rm $(docker ps -a -q)

5 查看所有容器

docker ps 命令是一个常用的 Docker 命令,用于查看所有正在运行的容器。

示例:

# 1. 查看所有正在运行的容器
docker ps

# 2. 查看所有容器(包含已停止的容器)
docker ps -a

三、容器交互与监控

1 容器交互

docker exec 命令是一个常用的 Docker 命令,用于在运行中的容器中执行命令。 docker exec -it :在运行中的容器内执行命令 (常用 /bin/bash, /bin/sh)

示例:

docker exec -it my-nginx bash

2 容器日志

docker logs 命令是一个常用的 Docker 命令,用于查看容器的日志。

示例:

# 1. 查看容器的当前日志
docker logs my-nginx

# 2. 持续查看容器的日志
docker logs -f my-nginx

3 容器/镜像信息

docker inspect 命令是一个常用的 Docker 命令,用于查看容器或镜像的详细信息。

示例:

# 1. 查看容器的详细信息
docker inspect my-nginx

# 2. 查看镜像的详细信息
docker inspect nginx

# 3. 获取容器的IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' my-nginx

# 4. 查看容器资源使用情况 (CPU, 内存, 网络, 磁盘)
docker stats my-nginx

# 5. 查看容器内运行的进程
docket top my-nginx