一、镜像管理
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