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 镜像的概念和操作,提高开发和运维效率。