如何制作docker镜像

Scroll Down

要制作一个docker镜像,有两种方式:1.通过已有的docker容器创建镜像。2.通过dockerfile创建镜像。
下文是基于已安装docker环境的情况,如果没有安装docker,可先看这篇文章安装:docker使用

方式一:通过已有的docker容器创建

1.通过docker run命令启动容器

使用已存在的镜像启动一个容器

2.进入容器做相应修改

docker exec命令进入容器,做相应的修改,如下载文件、部署应用、配置环境等。

3.docker commit提交修改的镜像

命令格式:
docker commit -m=“描述信息” -a=“作者” 容器id 目标镜像名:[TAG]

示例:

docker commit -m="My web app." -a="dd" e3ceb03fb170 myapp:1.0

提交后,可以通过docker images查看新的镜像。由于docker镜像的分层设计,每一次修改后提交,会产生新的层,所以新的镜像会比原镜像大。

4.docker run新的镜像

方式二:通过dockerfile创建

1.dockerfile文件介绍

Dockerfile 是一个文本文件,其中包含了一系列命令和参数,用于自动化构建 Docker 镜像。这些命令按照顺序执行,从基础镜像开始,逐层添加文件系统更改和配置,最终生成一个新的镜像。

示例 Dockerfile:

# 使用基础镜像
FROM ubuntu:20.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 更新包列表并安装所需软件
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# 复制项目文件到容器
COPY . /app

# 安装 Python 依赖
RUN pip3 install -r requirements.txt

# 暴露端口
EXPOSE 80

# 设置启动命令
CMD ["python3", "app.py"]

dockerfile中的每一条命令,都会在镜像中生成新的一层,所以编写命令的时候,需要尽量精简,控制镜像大小。

2.构建镜像

docker build -t myimage:1.0 .
  • -t :镜像名:[TAG]
  • .:指定构建上下文为当前目录

其他参数:

  • -f:指定dockerfile路径。
  • -m:设置内存的最大值。
  • -q:安静模式,构建成功后只输出镜像 ID,而不会显示详细的构建日志。
  • –shm-size:设置 /dev/shm 的大小,默认值为 64MB。
  • –squash:在 Docker 1.13 后提供,允许合并镜像的多个层为一个单一的层,以减少最终镜像的大小。
  • –no-cache:在构建过程中不使用缓存。默认情况下,Docker 会使用缓存来加速镜像的构建过程。但在某些情况下,可能需要禁用缓存以确保每次构建都是最新的。
  • –build-arg:设置构建参数。这些参数可以在 Dockerfile 中使用 ARG 指令来引用。
    例如:
docker build --build-arg VERSION=1.0 -t myapp:v1 .

3.运行容器

docker  run -d -p 80:80 myimage

推送镜像

镜像制作完成后,可以推送至docker hub,这样其他人也可以下载下来使用。

1.登录docker hub

docker login

之后会让你输入docker hub的账号密码登录。

2.标记镜像

docker tag myimage [用户名]/myimage
  • 用户名为docker hub的用户名

3.推送镜像

docker push [用户名]/myimage