【基础篇】Docker 镜像管理 THREE

嘿,小伙伴们!我是小竹笋,一名热爱创作的工程师。在上一篇文章中,我们探讨了 Docker 的架构与关键组件。今天,让我们一起深入了解一下 Docker 镜像管理的相关知识吧!

📦 创建和管理镜像

镜像是 Docker 的核心概念之一,它们就像是 Docker 容器的蓝图。有了镜像,你就可以轻松地创建和运行容器。下面我们来看看如何创建和管理 Docker 镜像。

1. 创建镜像: 你可以基于现有的镜像创建新的镜像,也可以使用 Dockerfile 自定义构建镜像。

        • 基于现有镜像: 使用 docker commit 命令将正在运行的容器保存为新镜像。

• 使用 Dockerfile: 编写一个 Dockerfile 文件,使用 Docker 的构建工具来创建镜像。

2. 查看镜像: 使用 docker images 或 docker image ls 命令来列出所有本地镜像。

3. 删除镜像: 如果不再需要某个镜像,可以通过 docker rmi <image-id> 命令将其删除。如果镜像正在被容器使用,你可能还需要先停止并删除相关容器。

📝 Dockerfile 的基本指令

Dockerfile 是一个文本文件,包含了创建 Docker 镜像所需的指令。让我们来看一看一些常用的 Dockerfile 指令:

  • FROM: 指定基础镜像。

    • 示例: FROM ubuntu:20.04

  • LABEL: 添加元数据到镜像。

    • 示例: LABEL maintainer="xiaozhunen@example.com"

  • COPY: 复制文件或目录到镜像中。

    • 示例: COPY ./app /usr/src/app

  • ADD: 类似于 COPY,但还可以处理远程 URL 和自动解压 tar 文件。

    • 示例: ADD https://example.com/package.tar.gz /usr/local/bin/

  • RUN: 在镜像构建过程中运行命令。

    • 示例: RUN apt-get update && apt-get install -y nginx

  • CMD: 定义容器启动时执行的默认命令。

    • 示例: CMD ["nginx", "-g", "daemon off;"]

  • EXPOSE: 暴露端口。

    • 示例: EXPOSE 80

📋 镜像分层与缓存机制

Docker 镜像是分层的,这意味着每一个 Dockerfile 的指令都会生成一个新的层。这样的设计有几个好处:

  • 可重用性: 不同的 Dockerfile 可以共享相同的层,从而减少磁盘空间的占用。

  • 快速构建: Docker 会缓存之前构建过的层,如果相同层再次构建,则可以直接使用缓存。这使得构建过程更快捷。

为了更好地利用缓存机制,你需要了解几个要点:

  • 缓存失效: 当 Dockerfile 中的某条指令变化时,该指令及其之后的所有指令对应的层都需要重新构建。

  • 最佳实践: 将不会频繁改变的部分放在前面,例如基础镜像和依赖安装,而经常改变的部分(如源代码)放在后面。

📚 Docker Hub 及私有 Registry 使用
  • Docker Hub: Docker Hub 是一个公开的镜像仓库,任何人都可以上传和下载镜像。你可以把它看作是 Docker 镜像的公共图书馆。

    • 注册账号: 访问 Docker Hub 并注册账号。

    • 上传镜像: 使用 docker push 命令将本地镜像推送到 Docker Hub。

    • 下载镜像: 使用 docker pull 命令从 Docker Hub 下载镜像。

  • Private Registry: 私有 Registry 则是企业的内部镜像仓库,用于安全地存储和分发镜像。你可以搭建自己的私有 Registry,例如使用 Docker 的官方解决方案 Docker Registry。

    • 搭建私有 Registry: 可以使用 Docker Registry 官方镜像来部署。

    • 认证与权限: 私有 Registry 通常需要认证和授权机制,确保只有授权用户可以访问特定镜像。

🛠️ 实战演练:创建一个简单的 Dockerfile
# 使用官方的基础镜像作为起点
FROM python:3.8-slim

# 添加标签信息
LABEL maintainer="xiaozhunen@example.com"

# 设置工作目录
WORKDIR /app

# 复制当前目录下的文件到容器的 /app 目录
COPY . /app

# 安装必要的软件包
RUN pip install --no-cache-dir -r requirements.txt

# 暴露 HTTP 端口
EXPOSE 8000

# 指定容器启动时运行的命令
CMD ["python", "app.py"]
  • FROM: 指定基础镜像。

  • LABEL: 添加维护者信息。

  • WORKDIR: 设定工作目录。

  • COPY: 复制文件到容器。

  • RUN: 执行命令,这里安装了 Python 包。

  • EXPOSE: 暴露端口。

  • CMD: 定义容器启动时执行的命令。

下期预告:

【基础篇】Docker 容器操作 FOUR

  • 运行、停止和删除容器

  • 容器网络配置

  • 数据持久化与数据卷

  • 日志管理和健康检查


参考资料:

  • Docker 官方网站:

  • https://www.docker.com/

  • Docker 官方文档 GitHub 仓库:

  • https://github.com/docker/docker.github.io

  • Docker 中文社区翻译项目:

  • https://github.com/docker-cn/docker-cn


📢 读者互动: 你是否已经在工作中使用了 Docker?欢迎在评论区分享你的使用体验或遇到的问题!

如果你觉得这篇文章对你有所帮助,请给我点个赞或者转发给你的朋友吧!👍


推荐阅读:

  • • Kubernetes 中文官网:

  •          https://kubernetes.p2hp.com/#google_vignette           


往期回顾:

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA和人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值