Docker镜像拉取:零基础保姆级教程,不用改环境变量
一句话总结:装好Docker,敲一行命令,镜像就到手。就这么简单。
一、前言:为什么写这篇教程?
新手学Docker,第一步就是拉镜像。但网上很多教程一上来就让你做一堆复杂操作,反而把人劝退:
❌ 改系统环境变量
❌ 配一堆JSON文件
❌ 设置代理、改注册表
❌ 堆砌一大段看不懂的参数
结果往往是镜像没拉下来,电脑配置先被折腾乱了。
这篇教程的原则很简单:
✅ 不改环境变量,不动系统配置,全程复制粘贴命令就能跑。
二、前置准备:确认Docker能正常工作
在拉镜像之前,我们先花30秒确认Docker已经装好、能正常运行,不用额外配置任何参数。
第1步:检查Docker是否安装
打开你的终端(Windows用PowerShell / CMD,Mac/Linux用Terminal),输入以下命令:
# 查看Docker版本,能显示版本号就说明装好了
docker --version
你应该看到类似这样的输出:
Docker version 27.4.1, build b9d17ea
⚠️ 如果提示 docker: command not found,说明还没装Docker。
去官网 https://www.docker.com/products/docker-desktop 下载安装,一路点「下一步」就行,全程不用改配置。
第2步:检查Docker是否在运行
# 查看Docker运行状态的详细信息
docker info
正常输出(节选):
Client:
Version: 27.4.1
Server:
Containers: 0
Running: 0
Images: 0
⚠️ 如果提示 Cannot connect to the Docker daemon,说明Docker没启动。
Windows / Mac:找到Docker Desktop图标,双击打开,等左下角小鲸鱼变绿。
Linux:运行 sudo systemctl start docker
第3步:跑一个测试命令(可选但推荐)
# Docker官方提供的测试镜像,专门用来验证安装是否成功
docker run hello-world
看到这行文字就说明一切正常:
Hello from Docker! This message shows that your installation appears to be working correctly.
✅ 三步都过了?恭喜,准备工作完成,下面开始正式拉镜像。
三、核心拉取命令:就一个docker pull
拉镜像的命令只有一个,记住它就够了,不用记复杂参数:
docker pull 镜像名字
就像在应用商店搜索App然后点「下载」一样简单。下面拆解三种最常见的用法,覆盖绝大多数场景。
用法1:最基础的拉取(拉最新版)
# 拉取Nginx(一个常用的网页服务器镜像)
# 不写版本号,默认拉最新版(latest)
docker pull nginx
等价于:
docker pull nginx:latest
💡 latest就是「最新版」的意思,不写的话Docker会自动帮你加上。
用法2:拉取指定版本
实际工作中,我们经常需要固定版本,避免版本更新带来的兼容问题,而不是盲目用最新版。
# 拉取Nginx的1.24版本
# 冒号后面跟版本号(Docker里叫"tag",可以直接理解成版本号)
docker pull nginx:1.24
# 拉取Python 3.9的精简版
docker pull python:3.9-slim
# 拉取MySQL 8.0
docker pull mysql:8.0
💡 怎么知道有哪些版本可以拉?去Docker Hub搜索镜像名,点进去就能看到所有可用的版本标签。
用法3:从指定仓库拉取
Docker默认从官方仓库(Docker Hub)拉取。如果镜像在其他平台,直接写完整地址即可,不用改任何配置。
# 从其他镜像仓库拉取(比如阿里云)
# 不需要改环境变量,直接写完整地址
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx:latest
🔑 注意:这里完全不需要修改环境变量或配置文件,直接在命令里写完整地址就行了,方便又快捷。
命令速查表
|
想做什么 |
命令 |
|
拉最新版 |
docker pull nginx |
|
拉指定版本 |
docker pull nginx:1.24 |
|
从指定仓库拉 |
docker pull 仓库地址/镜像名:版本 |
|
看本地有哪些镜像 |
docker images |
|
删除一个镜像 |
docker rmi 镜像名 |
四、实操演示:跟我一步步来
下面我们完整地走一遍「拉取Nginx镜像」的流程,每一步都可以直接复制命令执行,零难度。
实操第1步:拉取镜像
docker pull nginx
你会看到这样的输出(实时显示下载进度):
Using default tag: latest
latest: Pulling from library/nginx
2cc3ae149d28: Pull complete
a97f9034bc9: Pull complete
9571e65a55a: Pull complete
0b432c035c35: Pull complete
24436676f2de: Pull complete
928cc9acedf0: Pull complete
ca6fb48c6db4: Pull complete
Digest: sha256:56b388b0d79c738f4cf51bbaf184a14fab19337f4819ceb2cae7d94100262de8 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
逐行解释(看一眼就行,不用死记):
Using default tag: latest ← 告诉你:没写版本号,
自动拉latest latest: Pulling from library/nginx
← 正在从官方仓库拉取 2cc3ae149d28: Pull complete
← 镜像是分层下载的,每行代表一层,全部complete即下载完成
Digest: sha256:56b388... ← 镜像的唯一身份证号,日常使用不用管
Status: Downloaded newer image ← 最终状态:
下载成功 docker.io/library/nginx:latest ← 镜像的完整地址
实操第2步:确认镜像已下载
# 列出本地所有已下载的镜像
docker images
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 92b11f67642b 2 weeks ago 187MB
|
列名 |
含义 |
例子中的值 |
|
REPOSITORY |
镜像名字 |
nginx |
|
TAG |
版本标签 |
latest |
|
IMAGE ID |
镜像的短ID |
92b11f67642b |
|
CREATED |
镜像创建时间 |
2 weeks ago |
|
SIZE |
镜像大小 |
187MB |
实操第3步:拉取指定版本试试
# 再拉一个指定版本的Nginx
docker pull nginx:1.24-alpine
💡 alpine是一个超轻量的Linux系统,基于它的镜像体积很小,适合练手和生产环境,能节省存储空间。
输出示例:
1.24-alpine: Pulling from library/nginx
c6a83fedfae6: Pull complete
e34f1650ab30: Pull complete
8fae2cfbc498: Pull complete ...
Status: Downloaded newer image for nginx:1.24-alpine
再执行docker images查看本地镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE nginx
latest 92b11f67642b 2 weeks ago 187MB
nginx 1.24-alpine a24bb4013296 3 months ago 41.1MB
对比就能发现,alpine版本只有41MB,比latest版本小了一大半。
实操第4步:快速验证镜像能不能用
# 用刚拉下来的Nginx镜像跑一个容器
# -d 表示在后台运行,-p 8080:80 表示把容器的80端口映射到本机的8080端口
docker run -d -p 8080:80 nginx
输出一串字符,这是容器ID:
a3f5e2d1b4c8e7f6a9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4
现在打开浏览器,访问:http://localhost:8080
看到 "Welcome to nginx!" 页面,就说明镜像拉取成功、并且能正常运行了!🎉
用完之后停掉容器,释放资源:
# 查看正在运行的容器
docker ps
# 停掉容器(用容器ID的前几位就行,不用写全)
docker stop a3f5
五、常见问题与解决(不用改环境变量!)
❌ 问题1:拉取超时 / 网速特别慢
报错信息类似:
Error response from daemon: Get "https://registry-1.docker.io/v2/"
: net/http: request canceled while waiting for connection
原因:Docker Hub服务器在国外,网络不稳定、延迟高。
解决办法(选一个即可,全程不用改系统环境变量):
方法A:用Docker Desktop自带的镜像加速(图形界面操作)
打开Docker Desktop → 点击右上角设置图标 → 左侧选Docker Engine → 在JSON配置中加入以下内容:
{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }
点击Apply & Restart重启Docker即可。
方法B:命令中直接写国内镜像源地址(零配置,即用即走)
# 不改任何配置,直接从指定地址拉取
docker pull docker.1ms.run/library/nginx:latest
💡 这种方式完全不需要修改任何配置文件,命令执行完就结束,不留多余配置。
方法C:多试几次
# 网络波动导致失败很常见,重新执行命令就行
# Docker支持断点续传,不会重复下载
docker pull nginx
❌ 问题2:镜像不存在
报错:
Error response from daemon: pull access denied for ngix,
repository does not exist or may require 'docker login'
原因:镜像名字拼写错误,比如把nginx打成了ngix。
解决:
# 1. 检查拼写,修正名字 docker pull nginx
# ✅ 正确
docker pull ngix
# ❌ 错误
# 2. 去Docker Hub官网搜索核对镜像名
# 官网地址:https://hub.docker.com/
❌ 问题3:权限不够(Linux系统常见)
报错:
Got permission denied while trying to connect to the Docker daemon socket
解决:
# 方法1:命令前面加sudo,临时提升权限 sudo docker pull nginx
# 方法2:把当前用户加入docker用户组(一劳永逸)
sudo usermod -aG docker $USER
执行完方法2后,注销重新登录,后续使用就不用再加sudo了。
❌ 问题4:磁盘空间不足
报错:
no space left on device
解决:
# 查看Docker占用的磁盘空间 docker system df
# 一键清理无用镜像、缓存、停止的容器,释放空间
docker system prune
执行后会弹出确认提示,输入y回车即可。
❌ 问题5:拉到一半断连了
完全不用担心,直接重新执行同一条命令:
docker pull nginx
Docker会自动跳过已下载完成的部分,只下载剩余内容,实现断点续传。
六、实用小贴士
🔹 贴士1:查看本地所有镜像
docker images
只想查看某个镜像的所有版本:
# 只查看nginx相关的镜像
docker images nginx
🔹 贴士2:删除无用镜像,释放空间
# 按名字+版本删除 docker rmi nginx:1.24-alpine
# 按镜像ID删除(ID写前几位即可)
docker rmi 92b11f
🔹 贴士3:一次拉取多个镜像
# 用&&连接多条命令,一次性执行
docker pull nginx && docker pull redis && docker pull mysql:8.0
🔹 贴士4:查看镜像详细信息
# 查看镜像完整信息
docker inspect nginx
只想查看镜像大小,简化输出:
# 格式化输出,只显示名称、版本、大小
docker images --format "{{.Repository}}:{{.Tag}} → {{.Size}}"
🔹 贴士5:设置命令快捷方式
如果觉得命令太长,可以设置别名,这只是命令快捷方式,不是环境变量:
# Mac / Linux 当前窗口生效
alias di='docker images' alias dp='docker pull'
# 设置后可简写 di
# 等价于docker images dp nginx
# 等价于docker pull nginx
七、新手必看:镜像拉取注意事项
掌握核心命令之余,牢记这些注意事项,能避开绝大多数坑,全程不用改动系统环境变量,省心又安全。
1. 镜像版本慎选,别盲目用latest
latest代表最新版,虽然拉取方便,但版本会随时更新,很容易出现兼容问题,导致后续运行容器报错。正式使用、学习练手,优先选用固定版本号的镜像,比如nginx:1.24、mysql:8.0,稳定性更强。
2. 杜绝重复拉取,节省时间和空间
本地已有对应版本的镜像,再次执行docker pull命令,Docker不会重复下载,只会检查并更新镜像。没必要反复拉取同一个镜像,占用磁盘空间,拉取前先用docker images命令查看本地镜像,避免无效操作。
3. 镜像名称务必准确,区分大小写
Docker镜像名称严格区分大小写,而且拼写不能出错,比如把nginx写成ngix、mysql写成mysq,都会提示镜像不存在。不确定名称和版本时,先去Docker Hub官网搜索核对,再执行拉取命令。
4. 网络波动不用慌,支持断点续传
拉取过程中断网、卡顿,不用删除本地缓存重新开始,直接重新执行docker pull命令即可。Docker采用分层下载,会自动跳过已下载完成的分层,只下载缺失部分,不用从头等待。
5. 慎用精简版镜像,新手优先完整版
alpine、slim等精简版镜像体积小、占用空间少,但缺少部分依赖库,新手使用时容易出现缺少组件、运行报错的问题。建议新手先用完整版镜像练手,熟练后再改用轻量版镜像。
6. 及时清理闲置镜像,释放磁盘空间
镜像会占用大量磁盘空间,长期不清理容易导致磁盘爆满。不用的镜像及时用docker rmi命令删除,定期执行docker system prune清理缓存和无用文件,保持Docker运行流畅。
7. 不随意修改系统配置,守护新手环境
全程遵循教程原则,不改动系统环境变量,不随意修改Docker核心配置文件。遇到拉取慢、超时等问题,优先用命令直连国内源、重试命令解决,不乱改配置弄坏运行环境。
最后总结:记住这几条命令就够了
docker pull nginx # 拉取最新版镜像
docker pull nginx:1.24 # 拉取指定版本
docker images # 查看本地镜像
docker rmi nginx # 删除镜像
docker system prune # 清理垃圾,释放空间
就这5条命令,足够应对日常90%的镜像拉取场景。全程不用改环境变量、不用配复杂文件,复制粘贴就能运行。
📌 最后提醒:遇到问题别慌,docker pull命令可以反复执行,不会重复下载已有内容。网络不好就多试几次,或者把国内源地址直接写进命令里,简单又高效。
作者声明:本文为原创技术博客,禁止未经授权搬运、抄袭。如果文章对你有帮助,欢迎点赞、收藏、关注,后续会更新更多Docker入门干货!
更多推荐

所有评论(0)