docker常见命令:从拉取到推送社区仓库

下载镜像

1、命令

操作类型 命令 作用
检索 docker search 用于在镜像仓库(如 Docker Hub)中搜索镜像,比如搜索 Nginx 相关镜像。
下载 docker pull 从镜像仓库拉取镜像到本地 Docker 主机。支持指定版本(如 nginx:1.26.0)或默认拉取 latest 版本。
列表 docker images / docker image ls 列出本地 Docker 主机中已下载的所有镜像,包含镜像名、标签、ID、创建时间、大小等信息。
删除 docker rmi 删除本地不再需要的镜像,需指定 "镜像名:标签"(如 nginx:latest)来精准删除。

2、举例

本地原先有本地已有 nginx:latest 镜像,我们现在从docker仓库中拉一个:nginx:1.26.0 镜像,过程如下:

复制代码
1、docker images 可以看到本地已有 nginx:latest 镜像
2、docker pull nginx:1.26.0
3、再次查看本地镜像:执行 docker image ls(与 docker images 功能一致)
可以看到本地新增了 nginx:1.26.0 镜像,此时同一镜像(Nginx)存在两个版本(latest 和 1.26.0)。
4、删除指定镜像:执行 docker rmi nginx:latest
删除本地的 nginx:latest 版本镜像,保留 1.26.0 版本

图示:docker pull nginx:1.26.0镜像拉取过程

图示:同一镜像(Nginx)存在两个版本

3、镜像标识规则

镜像的标识规则是 "镜像名:标签(版本)

标签(Tag)用于区分同一镜像的不同版本,如

nginx:latest 是最新版本

nginx:1.26.0 是 1.26.0 版本

若不指定标签,Docker 会默认拉取 latest 标签的镜像,但生产环境中建议明确指定版本以保证一致性。

运行容器

命令

  1. 启动容器
bash 复制代码
docker run -d -p 8080:80 --name my-nginx -v ~/nginx-web:/usr/share/nginx/html nginx

参数说明:

-d:后台运行容器

-p 8080:80:将宿主机端口映射到容器端口

--name my-nginx:容器命名

-v:挂载目录(将宿主机的 ~/nginx-web 映射到容器内的网页目录)

nginx:指定使用的镜像

  1. 常见容器管理命令
操作 命令 说明
查看容器 docker ps 查看正在运行的容器
查看所有容器 docker ps -a 包含已停止的容器
停止容器 docker stop 容器名/ID 优雅停止运行中的容器
启动容器 docker start 容器名/ID 重新启动已停止的容器
重启容器 docker restart 容器名/ID 快速重载容器应用
查看状态 docker stats 实时监控资源占用(CPU、内存、IO等)
查看日志 docker logs 容器名/ID 查看容器运行日志,支持 --follow 实时追踪
进入容器 docker exec -it 容器名/ID /bin/bash 进入交互式命令行环境
删除容器 docker rm 容器名/ID 删除已停止容器,或使用 -f 强制删除

图示:主机端口和容器端口映射

注意:

rm是删除容器

rmi是删除镜像

保存和迁移 镜像

如果你在容器中做了修改(如定制 Nginx 页面),可用以下命令保存为新镜像:

bash 复制代码
docker commit 容器名 mynginx:v1.0
  1. 保存镜像为 tar 包
bash 复制代码
docker save -o mynginx.tar mynginx:v1.0

该命令会在当前目录生成一个 mynginx.tar 文件,可用于离线传输或备份。

  1. 从 tar 包加载镜像
bash 复制代码
docker load -i mynginx.tar

执行后可在 docker images 中再次看到该镜像。

完整流程是:

修改容器 → docker commit → docker save → 离线传输 → docker load

分享社区

  1. 登录仓库
bash 复制代码
docker login

输入 Docker Hub 用户名和密码后登录成功。

  1. 标记镜像
bash 复制代码
docker tag mynginx:v1.0 amaidou/mynginx:latest

Docker 镜像的命名需包含 "仓库归属" 信息,才能被正确推送到目标仓库

例如图中把 mynginx:v1.0 标记为 amaidou/mynginx:latest
其中amaidou是 Docker Hub 用户名
mynginx 是镜像名,
latest 是标签。
故:docker tag:给镜像 "命名并打标签"的语法是:

docker tag 原镜像名:原标签 目标仓库地址/用户名/新镜像名:新标签

  1. 推送镜像
bash 复制代码
docker push amaidou/mynginx:latest

作用:将本地标记好的镜像推送到远程镜像仓库(如 Docker Hub),实现 "社区共享"。

推送完成后,即可在 Docker Hub 看到该镜像,其他用户可通过:

bash 复制代码
docker pull amaidou/mynginx:latest

直接使用你发布的镜像。

流程:

docker login → docker tag → docker push → 其他用户 docker pull

实验

你可以自己做一下下面的实验,看看能否成功实现。

目标:

  1. 拉取官方 Nginx 镜像

  2. 启动容器并修改网页内容

  3. 使用 docker commit 生成自定义镜像(如 mynginx:v1.0

  4. 保存镜像为 mynginx.tar 并离线传输

  5. 在另一台机器上通过 docker load 加载

  6. 登录 Docker Hub 并推送至个人仓库

通过这个实验,你将完整体验 Docker 镜像与容器的生命周期与生态流转过程。

相关推荐
源图客4 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
一勺菠萝丶5 小时前
宝塔 Docker 安装 Ubuntu 及启动失败解决流程
ubuntu·docker·eureka
码云骑士7 小时前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
至乐活着8 小时前
Docker Compose多服务编排实战:从零搭建Node.js+MySQL+Redis全栈应用
docker·微服务·devops·容器编排·compose
木雷坞8 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
whyfail8 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器
大佐不会说日语~10 小时前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
xsc-xyc11 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士11 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
日取其半万世不竭11 小时前
PostgreSQL 跑在 Docker 里怎么备份?恢复成功才算备份成功
数据库·docker·postgresql