1. 不可变性: 镜像是不可变的,一旦创建就不能被修改。任何的修改都会生成一个新的镜像。这确保了一致性和可重复性,因为同一个镜像在任何环境中都具有相同的内容。
2. 层级结构: 镜像是通过一系列层级结构构建而成的。每个镜像层都包含了一个或多个文件或配置项的变更。这种层级结构使得镜像的构建和分享更加高效,因为不同的镜像可以共享相同的层。
3. 标签(Tags): 镜像可以通过标签来标识不同的版本或用途。例如,一个镜像可以有多个标签,如版本号或者描述应用程序的用途。标签使得镜像更易于管理和识别。
4. 基础镜像: 镜像可以基于其他镜像构建。基础镜像是构建其他镜像的起点,可以是官方的基础镜像(如 ubuntu、alpine),也可以是自定义的基础镜像。
5. Docker Hub: Docker Hub 是一个远程的镜像仓库,开发者可以在其中分享、存储和获取镜像。许多开发者和组织将他们的镜像存储在 Docker Hub 上,供其他人使用。
6. 构建镜像: 镜像可以通过编写 Dockerfile 来进行构建。Dockerfile 包含了一系列指令,描述了构建过程中的各个步骤,如基础镜像的选择、安装依赖、复制文件等。
以下是一个简单的 Dockerfile 示例:
# 使用官方的 Node.js 镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json 到工作目录
COPY package*.json ./
# 安装应用程序依赖
RUN npm install
# 将应用程序代码复制到工作目录
COPY . .
# 暴露应用程序监听的端口
EXPOSE 3000
# 定义容器启动时运行的命令
CMD ["npm", "start"]
通过执行 docker build 命令,可以根据上述 Dockerfile 构建一个包含 Node.js 应用程序的镜像。
转载请注明出处:http://www.pingtaimeng.com/article/detail/9991/Docker