授课语音

学习创建、拉取、构建和删除Docker镜像

Docker镜像是Docker容器的基础,理解如何创建、拉取、构建和删除镜像是掌握Docker的重要步骤。在本节课中,我们将详细讲解这些基本操作,并通过具体的代码案例帮助大家掌握如何在实践中应用这些命令。


1. 创建Docker镜像

Docker镜像可以通过两种方式创建:一种是从现有镜像派生(继承),另一种是通过编写Dockerfile自定义镜像。

1.1 从现有镜像创建

假设我们需要基于ubuntu镜像创建一个自定义镜像,可以使用以下命令:

docker pull ubuntu  # 拉取ubuntu镜像

接着,我们可以使用docker commit命令来创建一个新镜像:

docker commit container_id new_image_name  # 通过容器ID创建新镜像

这里,container_id是正在运行的容器的ID,new_image_name是你想为新镜像命名的名称。


2. 拉取Docker镜像

拉取Docker镜像通常是从Docker Hub或者私有镜像仓库中获取镜像。

2.1 从Docker Hub拉取镜像

Docker Hub是Docker官方的镜像仓库,可以通过以下命令拉取镜像:

docker pull ubuntu:20.04  # 拉取特定版本的ubuntu镜像

2.2 查看已拉取的镜像

拉取镜像后,可以通过以下命令查看本地的镜像列表:

docker images  # 显示本地所有镜像

输出示例:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              20.04               1d622ef86b13        2 weeks ago         64.2MB

3. 构建Docker镜像

Docker镜像的构建通常通过Dockerfile来实现。Dockerfile是一个文本文件,包含了所有的命令来自动化地构建Docker镜像。

3.1 创建一个Dockerfile

假设我们要创建一个基于ubuntu的镜像,并安装nginx,以下是Dockerfile的内容:

# 使用Ubuntu作为基础镜像
FROM ubuntu:20.04

# 设置维护者信息
LABEL maintainer="your_email@example.com"

# 更新APT包列表并安装nginx
RUN apt-get update && apt-get install -y nginx

# 设置nginx默认配置文件
COPY ./default.conf /etc/nginx/sites-available/default

# 暴露nginx的80端口
EXPOSE 80

# 启动nginx服务
CMD ["nginx", "-g", "daemon off;"]

3.2 构建镜像

保存好Dockerfile文件后,可以使用以下命令构建Docker镜像:

docker build -t mynginx:1.0 .  # 使用当前目录下的Dockerfile构建镜像
  • -t标志指定镜像的名称和标签(mynginx:1.0)。
  • .表示当前目录。

3.3 查看构建进程

构建过程会输出一些日志信息,包括每个步骤的执行情况。

示例:

Step 1/5 : FROM ubuntu:20.04
 ---> 1d622ef86b13
Step 2/5 : RUN apt-get update && apt-get install -y nginx
 ---> Running in f3d5ef2f8fbb
...
Step 5/5 : CMD ["nginx", "-g", "daemon off;"]
 ---> Running in 0db17d7b22c8
Successfully built 0db17d7b22c8
Successfully tagged mynginx:1.0

4. 删除Docker镜像

在某些情况下,我们可能不再需要某些镜像。可以通过docker rmi命令删除镜像。

4.1 删除单个镜像

docker rmi mynginx:1.0  # 删除名为mynginx:1.0的镜像

4.2 删除未使用的镜像

如果你有很多未被使用的镜像,可以通过以下命令删除所有未标记的镜像:

docker image prune  # 删除所有未被容器使用的镜像

4.3 强制删除镜像

如果某个镜像正在被容器使用,默认情况下无法删除该镜像。可以使用-f选项强制删除:

docker rmi -f mynginx:1.0  # 强制删除镜像

5. 常见问题与解决方案

5.1 构建镜像时出错:

  • 错误:apt-get update失败:这通常是由于网络问题或源问题。可以检查网络连接或换用其他源(例如阿里云的源)。
  • 错误:COPY命令文件找不到:确保COPY命令中的文件路径正确,并且文件存在于构建上下文中(即Dockerfile所在的目录或其子目录)。

5.2 删除镜像时提示镜像正在使用:

  • 错误:镜像正在被容器使用:确保没有容器依赖于该镜像,可以使用docker ps -a查看所有容器状态,然后停止并删除相关容器后再删除镜像。

6. 总结

  1. 创建Docker镜像:可以通过继承现有镜像或者通过编写Dockerfile来自定义创建镜像。
  2. 拉取Docker镜像:使用docker pull命令从Docker Hub或者私有仓库拉取镜像。
  3. 构建Docker镜像:通过Dockerfile文件自动化地构建镜像,利用docker build命令执行。
  4. 删除Docker镜像:通过docker rmi命令删除本地镜像,释放存储空间。

掌握了这些基本的Docker镜像操作后,能够帮助你更高效地使用Docker进行开发和部署。

去1:1私密咨询

系列课程: