Docker 镜像使用
Docker 镜像使用关键要点
- 研究表明,Docker 镜像是创建容器的模板,包含应用程序及其依赖,适合在不同环境中一致运行。
- 常用操作包括列出本地镜像、运行容器、拉取新镜像、搜索镜像、删除镜像、创建和发布镜像。
- 中国用户可能因网络限制需配置国内镜像源(如 https://docker.xuanyuan.me/),建议定期检查可用性。
列出本地镜像
使用 docker images
或 docker image ls
查看本地所有镜像,输出包括仓库名、标签、镜像 ID、大小等信息。
例如:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 188d0a23f263 2 years ago 188 MB
php 5.6 750e9b335c1a 2 years ago 444.8 MB
运行容器
用 docker run
启动容器,例如 docker run -t -i ubuntu:15.10 /bin/bash
,-i
交互式,-t
分配终端,不指定标签默认用 latest
。
拉取和搜索镜像
- 用
docker pull ubuntu:13.10
从 Docker Hub 或镜像源拉取新镜像。 - 用
docker search httpd
搜索镜像,也可在 Docker Hub 网站搜索:https://hub.docker.com/。
管理镜像
- 删除镜像用
docker rmi hello-world
,需先停止使用该镜像的容器。 - 创建镜像可从容器提交(如
docker commit
)或用 Dockerfile 构建(如docker build -t runoob/centos:6.7 .
)。 - 用
docker tag
为镜像添加标签,如docker tag 860c279d2fec runoob/centos:dev
。
中国用户优化
由于网络限制,建议配置国内镜像源(如 https://docker.1ms.run),编辑 /etc/docker/daemon.json
添加 "registry-mirrors"
配置,重启 Docker。
Docker 镜像使用详细报告
Docker 镜像(Docker Image)是 Docker 容器的静态模板,用于创建和运行容器。它包含了应用程序运行所需的所有依赖、文件系统和配置,使得应用程序可以在任何支持 Docker 的环境中一致运行。以下是 Docker 镜像使用的全面讲解,涵盖基本操作、创建与管理、以及针对中国用户的优化建议,基于 2025 年 7 月 21 日的最新信息。
背景与概述
Docker 是一种开源容器化平台,基于操作系统级别的虚拟化,允许开发者将应用程序及其依赖封装到一个可移植的容器中。镜像是 Docker 的核心概念,是容器的构建基础。研究表明,Docker 镜像广泛用于开发、测试和生产环境,解决了传统虚拟机资源占用高、启动慢的问题。特别是在中国大陆,由于网络限制(如 GFW),直接从 Docker Hub 拉取镜像可能速度缓慢或失败,配置国内镜像源是关键步骤。
系统要求与准备
使用 Docker 镜像前,确保满足以下条件:
- 操作系统:支持 Windows(需启用 WSL 2 或 Hyper-V)、macOS(支持当前及前两个主要版本,如 macOS 14/13/12)、Linux(支持大多数发行版)。
- Docker 版本:推荐使用最新版本(如 Docker CE)。
- 网络:需访问 Docker Hub 或国内镜像源,建议配置加速器。
以下表格总结了系统要求:
类别 | 详情 |
---|---|
操作系统 | Windows 10/11、macOS 12+、Linux |
Docker 版本 | 1.10 及以上,推荐最新版本 |
网络 | 访问 Docker Hub 或国内镜像源(如 https://docker.xuanyuan.me/) |
Docker 镜像的基本概念
- 什么是 Docker 镜像?
Docker 镜像是一个只读的模板,用于创建 Docker 容器。它包含了运行应用程序所需的所有依赖和文件(如代码、运行时环境、库、环境变量和配置文件)。镜像是 Docker 容器的基础,容器是从镜像创建的运行实例。镜像可以从 Docker Hub 或其他仓库拉取,也可以自己构建。 - 镜像与容器的关系:
- 镜像(Image):容器的静态模板,包含了应用程序运行所需的所有依赖和文件。镜像是不可变的。
- 容器(Container):镜像的运行实例,动态的,具有自己的文件系统、进程和网络。
详细使用步骤
以下步骤基于最新 Docker 版本(截至 2025 年 7 月 21 日),适用于 Windows、macOS 和 Linux,并特别为中国用户优化。
1. 列出本地镜像
使用命令 docker images
或 docker image ls
来查看本地主机上的所有 Docker 镜像。
示例输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 188d0a23f263 2 years ago 188 MB
php 5.6 750e9b335c1a 2 years ago 444.8 MB
- 字段说明:
- REPOSITORY:镜像仓库名(如
ubuntu
)。 - TAG:镜像标签(如
14.04
)。 - IMAGE ID:镜像 ID。
- CREATED:镜像创建时间。
- SIZE:镜像大小。
2. 运行容器
使用 docker run
命令来运行一个容器,指定要使用的镜像。
示例:
“`bash
docker run -t -i ubuntu:15.10 /bin/bash
- **选项说明**:
- `-i`:交互式操作(保持标准输入打开)。
- `-t`:分配一个伪终端。
- `ubuntu:15.10`:指定镜像名和标签。
- `/bin/bash`:容器启动后执行的命令。
**注意:**
- 如果不指定标签,Docker 默认使用 `latest` 标签。
- 如果本地不存在指定镜像,Docker 会自动从 Docker Hub 或配置的镜像源拉取。
##### 3. 拉取新镜像
使用 `docker pull` 命令从 Docker Hub 或其他仓库拉取镜像。
**示例:**
bash
docker pull ubuntu:13.10
- 如果本地不存在该镜像,Docker 会自动下载。
- 对于中国用户,建议配置国内镜像源以加速拉取(详见第 9 节)。
##### 4. 搜索镜像
使用 `docker search` 命令在 Docker Hub 上搜索镜像。
**示例:**
bash
docker search httpd
- 也可以在 Docker Hub 网站上搜索:https://hub.docker.com/。
##### 5. 删除镜像
使用 `docker rmi` 命令删除本地镜像。
**示例:**
bash
docker rmi hello-world
- 如果镜像正在被容器使用,需先停止并删除容器,否则会提示错误。
##### 6. 创建镜像
Docker 镜像可以从容器创建或通过 Dockerfile 构建。
- **从容器创建镜像**:
使用 `docker commit` 命令将容器的变化保存为新的镜像。
**示例:**
bash
docker commit -m=”has update” -a=”runoob” e218edb10161 runoob/ubuntu:v2
- `-m`:提交信息。
- `-a`:作者。
- `e218edb10161`:容器 ID。
- `runoob/ubuntu:v2`:新镜像名和标签。
- **使用 Dockerfile 构建镜像**:
编写 Dockerfile,然后使用 `docker build` 命令构建镜像。
**示例:**
bash
docker build -t runoob/centos:6.7 .
- `-t`:指定新镜像名和标签。
- `.`:当前目录(Dockerfile 所在路径)。
**Dockerfile 示例:**
dockerfile
FROM centos:6.7
MAINTAINER runoob.com
RUN yum install -y httpd
EXPOSE 22 80
CMD [“/usr/sbin/apachectl”, “foreground”]
##### 7. 镜像标签
使用 `docker tag` 命令为镜像添加标签。
**示例:**
bash
docker tag 860c279d2fec runoob/centos:dev
- `860c279d2fec`:镜像 ID。
- `runoob/centos:dev`:新标签。
##### 8. 发布镜像
将自定义镜像发布到 Docker Hub 或其他仓库,以便他人使用。
- **登录 Docker Hub:**
bash
docker login
- **标记镜像:**
bash
docker tag [imageName] [username]/[repository]:[tag]
示例:`docker tag koa-demo:0.0.1 ruanyf/koa-demo:0.0.1`
- **推送镜像:**
bash
docker push [username]/[repository]:[tag]`` 示例:
docker push ruanyf/koa-demo:0.0.1`
9. 中国用户优化:配置镜像加速器
由于网络限制,中国用户可能需要配置国内镜像源来加速镜像拉取。
常用国内镜像源(截至 2025 年 7 月 21 日):
以下表格列出了一些常用国内镜像源,基于最新可用的信息:
镜像源地址 | 备注 |
---|---|
https://docker.xuanyuan.me/ | 提供基础镜像,需测试可用性 |
https://docker.1ms.run | 热心网友自建,可能流量限制 |
https://docker.1panel.live | 支持部分常用镜像,建议定期检查 |
配置方法:
- Linux(Docker 1.10+):
- 编辑
/etc/docker/daemon.json
(若不存在则创建):json { "registry-mirrors": ["https://docker.xuanyuan.me/", "https://docker.1ms.run"] }
- 保存后重启 Docker:
bash sudo systemctl restart docker
- Windows/macOS(Docker Desktop):
- 打开 Docker Desktop,点击任务栏图标,选择 “Settings” > “Docker Engine”。
- 在 JSON 配置中添加:
json { "registry-mirrors": ["https://docker.xuanyuan.me/", "https://docker.1ms.run"] }
- 点击 “Apply & Restart” 保存并重启 Docker。
注意事项:
- 部分镜像源可能仅提供基础镜像或白名单镜像,如果某个地址无法拉取所需镜像,建议尝试其他地址。
- 国内镜像源可能因政策或维护原因失效,建议定期检查可用性,参考最新列表如 https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea。
10. 常见问题与解决方案
以下是使用 Docker 镜像时可能遇到的问题及解决方法:
问题 | 可能原因 | 解决方案 |
---|---|---|
无法拉取镜像 | 网络限制或未配置镜像源 | 配置国内镜像源(如 https://docker.xuanyuan.me/),检查网络或使用 VPN |
permission denied | Linux 用户权限不足 | 使用 sudo 或添加用户到 Docker 组:sudo usermod -aG docker $USER |
删除镜像失败 | 镜像被容器使用 | 先停止并删除使用该镜像的容器,然后重试 docker rmi |
Dockerfile 构建失败 | Dockerfile 语法错误或依赖缺失 | 检查 Dockerfile 语法,安装缺失依赖,重试构建 |
附加信息与资源
以下是本文参考的主要资源,供用户深入了解:
通过以上详细步骤和注意事项,用户应能顺利使用 Docker 镜像,并针对中国大陆的网络环境进行优化。如有进一步问题,可参考上述资源或搜索相关社区支持。