Docker Image即Docker镜像

简介: Docker 镜像是 Docker 容器的基础,包含了运行应用程序所需的一切。通过 Dockerfile 可以方便地创建自定义镜像,并且利用 Docker 提供的命令可以轻松管理和使用这些镜像。掌握 Docker 镜像的创建、管理和使用,是进行容器化应用开发和部署的基础技能。希望本文能帮助读者更好地理解 Docker 镜像的概念和操作,提高开发和运维效率。

Docker 镜像

Docker 镜像(Docker Image)是用于创建 Docker 容器(Docker Container)的只读模板。它包含了运行应用程序所需的所有内容,包括代码、运行时环境、库和依赖项以及配置文件等。Docker 镜像是 Docker 容器的基础,每个容器都是从一个特定的镜像实例化而来的。

一、Docker 镜像的基本概念

1. 镜像的层(Layers)

Docker 镜像由多个只读层(layers)组成,每一层都代表镜像的一个变更。镜像层采用分层存储技术,这样可以提高存储效率并实现共享。每个层都是对前一个层的增量更新。

2. 基础镜像和自定义镜像
  • 基础镜像(Base Image) :基础镜像是没有父镜像的镜像,通常包括一个操作系统的最小安装。
  • 自定义镜像(Custom Image) :自定义镜像是在基础镜像之上添加了特定应用程序和配置的镜像。

二、创建 Docker 镜像

Docker 镜像可以通过多种方式创建,最常用的方法是使用 Dockerfile。

1. Dockerfile 简介

Dockerfile 是一个文本文件,包含了一系列命令,用于构建 Docker 镜像。每条命令都会在镜像中创建一个新的层。

2. Dockerfile 示例

以下是一个简单的 Dockerfile 示例,用于创建一个包含 Nginx 服务器的镜像:

# 使用官方 Nginx 基础镜像
FROM nginx:latest

# 维护者信息
MAINTAINER your_name@example.com

# 拷贝自定义的 Nginx 配置文件到镜像中
COPY nginx.conf /etc/nginx/nginx.conf

# 暴露端口
EXPOSE 80

# 启动 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]
​
3. 构建 Docker 镜像

使用 Dockerfile 创建镜像的命令如下:

docker build -t mynginx:latest .
​

这条命令将在当前目录查找 Dockerfile 并构建一个名为 mynginx 的镜像。

三、管理 Docker 镜像

1. 查看本地镜像

使用以下命令查看本地所有 Docker 镜像:

docker images
​

输出示例如下:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mynginx             latest              d1b55e34b8e6        10 minutes ago      133MB
nginx               latest              f356bdc56db4        2 weeks ago         133MB
​
2. 删除本地镜像

使用以下命令删除本地 Docker 镜像:

docker rmi <image_id>
​

例如,删除镜像 ID 为 d1b55e34b8e6 的镜像:

docker rmi d1b55e34b8e6
​
3. 从 Docker Hub 拉取镜像

Docker Hub 是一个公共的镜像仓库,用户可以从中拉取(下载)镜像:

docker pull nginx:latest
​

这条命令将拉取最新版本的 Nginx 镜像。

四、使用 Docker 镜像

1. 运行容器

从镜像运行一个容器的命令如下:

docker run -d -p 80:80 mynginx:latest
​

这条命令将从 mynginx:latest 镜像启动一个容器,容器的80端口映射到主机的80端口。

2. 进入运行中的容器

可以通过以下命令进入一个运行中的容器:

docker exec -it <container_id> /bin/bash
​

例如,进入容器 ID 为 e9fbc837b4a8 的容器:

docker exec -it e9fbc837b4a8 /bin/bash
​
3. 停止容器

使用以下命令停止一个运行中的容器:

docker stop <container_id>
​

五、示意图

Docker 镜像结构
│
├── 基础镜像(Base Image)
│   └── FROM 命令
│
├── 镜像层(Layers)
│   ├── COPY 命令
│   ├── RUN 命令
│   └── ADD 命令
│
├── 构建镜像
│   └── docker build -t <image_name>:<tag> .
│
├── 管理镜像
│   ├── 查看镜像:docker images
│   ├── 删除镜像:docker rmi <image_id>
│   └── 拉取镜像:docker pull <image_name>:<tag>
│
└── 使用镜像
    ├── 运行容器:docker run -d -p <host_port>:<container_port> <image_name>:<tag>
    ├── 进入容器:docker exec -it <container_id> /bin/bash
    └── 停止容器:docker stop <container_id>
​

六、总结

Docker 镜像是 Docker 容器的基础,包含了运行应用程序所需的一切。通过 Dockerfile 可以方便地创建自定义镜像,并且利用 Docker 提供的命令可以轻松管理和使用这些镜像。掌握 Docker 镜像的创建、管理和使用,是进行容器化应用开发和部署的基础技能。希望本文能帮助读者更好地理解 Docker 镜像的概念和操作,提高开发和运维效率。

目录
相关文章
|
3月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
382 100
|
3月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
315 99
|
3月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
334 98
|
3月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
8月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1736 32
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
505 5
|
3月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
206 8
|
4月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
317 16
|
5月前
|
Docker 容器 应用服务中间件
Docker 客户端是如何拉取镜像的?
Docker客户端拉取镜像的过程遵循Docker Registry HTTP API V2规范,主要分为解析镜像名、鉴权、获取Manifest、拉取Layers及本地合并五个步骤。它与Docker Hub、Harbor等仓库通信,确保镜像正确下载和构建。
887 59
|
4月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami