介绍
Docker 已经成为现代软件开发中不可或缺的工具,它允许开发者以一致且可靠的方式打包和部署应用程序。Docker 镜像充当容器化应用程序的构建块,提供预先配置好的环境,可以轻松共享和部署。
在这个实践实验(Lab)中,你将学习如何使用 Docker 命令行界面搜索 Docker 镜像,将这些镜像拉取到你的本地机器,并运行基于这些镜像的容器。通过本教程,你将掌握查找和使用满足你特定项目需求的 Docker 镜像的技能。
检查 Docker 安装
在开始搜索 Docker 镜像之前,让我们首先验证 Docker 是否已正确安装并在你的系统上运行。
验证 Docker 安装
打开一个终端窗口,运行以下命令来检查 Docker 是否已安装:
docker --version
你应该看到类似这样的输出:
Docker version 20.10.21, build baeda1f
这确认了 Docker 已安装在你的系统上。版本号可能因你的安装而异。
检查 Docker 服务状态
我们还可以通过执行以下命令来检查 Docker 服务是否正常运行:
sudo systemctl status docker
你应该看到输出表明 Docker 服务处于活动状态并正在运行:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since...
如果由于任何原因 Docker 未运行,你可以使用以下命令启动它:
sudo systemctl start docker
理解 Docker 镜像
Docker 镜像是一个只读模板,其中包含创建容器的一组指令。你可以将镜像视为应用程序及其环境、依赖项和配置的快照或蓝图。
Docker 镜像具有以下特点:
- 分层(Layered):使用一系列可以在镜像之间共享的层构建
- 只读(Read-only):创建后无法修改
- 命名和打标签(Tagged):通过名称和可选标签(例如,
ubuntu:22.04)标识
在下一步中,我们将学习如何搜索这些镜像。
搜索 Docker 镜像
Docker Hub 是 Docker 镜像的官方公共注册中心。它包含数千个镜像,包括由软件供应商维护的官方镜像和由 Docker 用户创建的社区镜像。
基本镜像搜索
要搜索 Docker 镜像,请使用 docker search 命令,后跟一个搜索词。让我们搜索 Ubuntu 镜像:
docker search ubuntu
你将看到类似这样的输出:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14938 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 112 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 254 [OK]
...
输出显示:
- NAME:镜像名称
- DESCRIPTION:镜像的简短描述
- STARS:已为镜像加星标的用户数量(受欢迎程度指标)
- OFFICIAL:标签,指示由软件供应商维护的官方镜像
- AUTOMATED:标签,指示由自动化流程构建的镜像
过滤搜索结果
你可以使用 --filter 选项过滤搜索结果。例如,仅显示官方镜像:
docker search --filter=is-official=true ubuntu
要查找至少有 100 个星标的镜像(受欢迎的镜像):
docker search --filter=stars=100 ubuntu
你还可以组合多个过滤器:
docker search --filter=is-official=true --filter=stars=100 nginx
此命令搜索至少有 100 个星标的官方 Nginx 镜像。
查找特定版本
docker search 命令不显示镜像标签(版本),但你可以通过以下方式找到它们:
- 访问 Docker Hub 网站 (hub.docker.com)
- 使用
docker image inspect命令(在拉取镜像之后)
例如,要查看所有可用的 Ubuntu 版本,请访问: https://hub.docker.com/_/ubuntu?tab=tags
选择正确的镜像
选择 Docker 镜像时,请考虑以下因素:
- 官方镜像:优先选择官方镜像,因为它们由软件供应商维护
- 受欢迎的镜像:星标数量越多,表明用户越多,维护可能也更好
- 最近的更新:检查镜像上次更新的时间
- 文档:寻找具有良好文档的镜像
- 大小:考虑镜像大小,因为较小的镜像下载速度更快
下载 Docker 镜像
找到你想要使用的镜像后,你可以使用 docker pull 命令将其下载到你的本地机器上。
拉取镜像
让我们拉取官方 Ubuntu 镜像:
docker pull ubuntu
你将看到类似这样的输出:
Using default tag: latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
默认情况下,Docker 拉取 latest 标签。要拉取特定版本,请添加一个标签:
docker pull ubuntu:20.04
你将看到显示该特定版本下载进度的输出。
列出已下载的镜像
要查看你已下载的所有镜像,请使用:
docker images
或者使用较新的命令格式:
docker image ls
这两个命令都会产生相同的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1318b700e415 4 weeks ago 72.8MB
ubuntu 20.04 1318b700e415 4 weeks ago 72.8MB
理解镜像标签
Docker 镜像通过标签进行标识。标签格式通常为:
repository:tag
其中:
- repository:通常格式为
username/image-name,对于官方镜像,则仅为image-name - tag:指定版本(例如,
latest、20.04、3.9-alpine)
如果省略标签,Docker 假定你想要 latest 标签。
获取镜像详细信息
要查看有关镜像的详细信息,请使用:
docker image inspect ubuntu:latest
此命令显示一个 JSON 对象,其中包含所有镜像元数据,包括层、配置和环境变量。
要查看镜像层的历史记录:
docker history ubuntu:latest
这显示了镜像的构建方式,逐层构建。
从镜像运行容器
现在你已经下载了一些 Docker 镜像,让我们学习如何基于这些镜像创建和运行容器。
运行一个基本容器
要从镜像运行容器,请使用 docker run 命令:
docker run ubuntu echo "Hello from Docker"
此命令:
- 基于 Ubuntu 镜像创建一个新容器
- 在容器内运行命令
echo "Hello from Docker" - 在命令完成后退出
你应该看到输出:
Hello from Docker
运行一个交互式容器
要与容器交互,请使用 -it 标志(交互式终端):
docker run -it ubuntu bash
这会在容器内启动一个 bash shell。你现在实际上“进入”了容器,可以运行命令。
尝试几个命令:
ls
cat /etc/os-release
要退出容器,请键入:
exit
列出正在运行的容器
要查看所有正在运行的容器:
docker ps
由于我们的容器在完成后立即退出,你可能看不到任何输出。要查看所有容器,包括已停止的容器:
docker ps -a
这会显示所有容器、它们的状态以及创建/退出的时间。
容器生命周期
容器具有生命周期:
- Created(已创建):容器已创建但未启动
- Running(正在运行):容器当前正在执行
- Paused(已暂停):容器执行已暂停
- Stopped(已停止):容器已退出但仍然存在
- Removed(已删除):容器已删除
你可以使用以下命令删除已停止的容器:
docker rm <container_id>
将 <container_id> 替换为 docker ps -a 输出中显示的 ID。
要在容器退出后自动删除它,请使用 --rm 标志:
docker run --rm ubuntu echo "This container will be removed after execution"
运行一个 Web 服务器容器
让我们通过运行一个 Nginx Web 服务器来尝试一些更实际的操作:
docker pull nginx:alpine
这会拉取一个基于 Alpine Linux 的轻量级 Nginx 镜像。
现在,运行一个容器,将你的主机上的端口 8080 映射到容器内的端口 80:
docker run -d -p 8080:80 --name my-nginx nginx:alpine
此命令:
-d:在分离模式(后台)运行容器-p 8080:80:将你的主机上的端口 8080 映射到容器内的端口 80--name my-nginx:将容器命名为 "my-nginx"
现在,你可以在 Web 浏览器中导航到 http://localhost:8080 来访问 Nginx 欢迎页面,或者使用 curl:
curl http://localhost:8080
你应该看到 Nginx 欢迎页面的 HTML 内容。
要停止并删除此容器:
docker stop my-nginx
docker rm my-nginx
总结
祝贺你完成了这个 Docker 镜像搜索和使用实验。在本教程中,你已经:
- 验证了你的 Docker 安装,并理解了 Docker 镜像的概念
- 学习了如何使用
docker search命令搜索 Docker 镜像 - 使用
docker pull将 Docker 镜像下载到你的本地机器 - 列出并检查了你的本地 Docker 镜像
- 使用各种
docker run选项从这些镜像创建和运行容器 - 了解了容器生命周期以及如何管理容器
这些技能构成了在你的开发项目中与 Docker 协作的基础。你现在可以搜索、下载和使用 Docker 镜像,为你的应用程序创建容器化环境。
你 Docker 之旅的下一步可能包括:
- 学习如何使用 Dockerfile 创建你自己的 Docker 镜像
- 了解 Docker 网络和数据持久性
- 探索 Docker Compose,用于多容器应用程序
- 深入研究使用 Kubernetes 进行容器编排
继续尝试不同的 Docker 镜像,以发现可用于加速你的开发工作流程的大量预构建容器生态系统。



