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 镜像与容器的生命周期与生态流转过程。

相关推荐
多云的夏天5 小时前
docker容器部署-windows-ubuntu
java·docker·容器
淡泊if7 小时前
1.2GB → 98MB,我的 Docker 镜像瘦身实战记录
运维·docker·容器
Sst的头号粉丝7 小时前
Docker——cgroups
运维·docker·容器
❀͜͡傀儡师8 小时前
Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)
docker·postgresql·容器
l1t9 小时前
解决用docker安装umbra数据库遇到的FATAL:Operation not permitted错误
数据库·docker·容器
last demo9 小时前
docker存储
运维·docker·容器
无名-CODING9 小时前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(上):环境搭建与数据库容器化
数据库·spring boot·docker
kabu_Charlie11 小时前
使用Docker运行python程序
运维·docker·容器
包饭厅咸鱼12 小时前
小龙虾openclaw----Windows+Wsl+Docker 安装openclaw 并接入飞书
windows·docker·openclaw·小龙虾
骥龙12 小时前
第五篇:运行时安全——Docker沙箱与命令审批机制
安全·docker·容器