9.1 重新了解 Docker Hub
我们来更近一步了解下 Docker Hub。提醒一下,这是 Docker 的主要公共注册库,用户可以在这里存储、分享和发现现成的容器镜像。这个平台提供了对数百万个由官方组织和社区创建的容器的访问。在这节课里,我们会讲解如何高效地从 Docker Hub 搜索并下载现有的镜像。
Docker Hub 服务的主要任务
Docker Hub 是一个云服务,允许把镜像上传到集中存储的地方并从中提取。这个服务是开发人员分享自己的镜像和使用他人创建的解决方案的平台。Docker Hub 的主要功能包括:
- 公共和私有仓库: 提供将镜像存储为对所有人公开或特定用户限制访问的选项。
- 自动构建 (automated builds): 与版本控制系统(比如 GitHub)集成,在每次代码更改时自动构建镜像。
- Webhooks: 设置自动操作,在镜像更新时执行。
9.2 查找现成的镜像
1. 使用 Docker Hub 的网页界面
- 访问 Docker Hub 网站: 打开 Docker Hub 在你的浏览器中。
- 搜索镜像: 在搜索栏中输入镜像名称或与你的项目相关的关键词。例如,要搜索 Nginx 的镜像,输入 "nginx" 然后按 Enter。
- 查看结果: 搜索结果会显示匹配的镜像。官方镜像标记为 "Official",由 Docker 或相应组织支持。其他用户提供的镜像会显示用户名或组织名。
- 选择镜像: 点击你感兴趣的镜像,查看其描述、可用标签、使用说明和其他有用信息。
2. 通过命令行查找镜像
Docker 还允许你使用命令行直接搜索镜像,使用命令 docker search
。
示例命令:
docker search nginx
该命令将输出包含 nginx
的镜像列表,包括名称、描述、星级(评分)、官方状态标记以及自动构建信息。
示例输出:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13764 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for... 2135 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM... 819 [OK]
9.3 下载镜像
当你找到所需的镜像后,可以使用命令 docker pull
将其下载到本地电脑。
1. 下载指定的镜像
要下载具体的镜像,请使用以下语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
其中:
- NAME: 镜像名称。
- TAG: (可选)镜像标签。如果未指定标签,默认使用
latest
标签。 - @DIGEST: (可选)镜像的 SHA256 标识符。
下载镜像示例:
下面的示例将下载带有 latest
标签的最新 nginx
镜像。
docker pull nginx:latest
2. 下载带有指定标签的镜像
如果你需要带有指定标签的镜像,请在冒号后添加标签。下面的示例将下载 Ubuntu 20.04 版本的镜像。
docker pull ubuntu:20.04
3. 检查已下载的镜像
下载镜像后,你可以使用命令 docker images
查看本地电脑中有哪些镜像。
命令示例:
命令的输出会显示所有已下载镜像的列表,包括仓库名、标签、镜像 ID、创建日期和大小。
docker images
9.4 使用现成镜像的示例
1. 启动 Nginx Web 服务器
下载 Nginx 镜像后,你可以基于它快速启动一个容器。
示例:
下面的示例在后台运行一个 Nginx
容器,并将容器的 80 端口映射到主机机器的 8080 端口。现在,你可以通过打开浏览器并输入 http://localhost:8080 来访问 Nginx
Web 服务器。
docker run -d -p 8080:80 nginx
2. 启动 MySQL 数据库
Docker Hub 提供了很多数据库的现成镜像,比如 MySQL,这使得开发和测试环境中部署数据库变得非常容易。
示例:
这个例子启动了一个 MySQL 容器,为 root 用户设置了密码,并将容器的 3306 端口映射到主机机器的 3306 端口。
docker run -d -p 3306:3306 --name my_mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest
3. 使用 Redis 镜像进行缓存
Redis 是一个流行的缓存系统,Docker Hub 提供了现成的 Redis 镜像,可以用来快速部署。
示例:
这个例子启动了一个 Redis 容器,将容器的 6379 端口映射到主机机器的 6379 端口。
docker run -d -p 6379:6379 --name my_redis redis:latest
GO TO FULL VERSION