Docker 创建镜像

更新时间: 2019-03-29 15:07:38   作者: 异常教程网

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

本文中,您将学习 Docker 如何创建镜像?Docker 创建镜像主要有三种:

  1. 基于已有的镜像创建;
  2. 基于 Dockerfile 来创建;
  3. 基于本地模板来导入;

我们将主要介绍常用的 1,2 两种。

一、基于已有的镜像创建

通过如下命令来创建:

docker container commit

支持的子命令如下:

  • -a, --author="": 作者信息;
  • -c, --change=[]: 可以在提交的时候执行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
  • -m, --message="": 提交信息;
  • -p, --pause=true: 提交时,暂停容器运行。

接下来,基于本地已有的 Ubuntu 镜像,创建一个新的镜像:

Docker 创建镜像

首先,让我将它运行起来,并在其中创建一个 test.txt 文件:

Docker 创建镜像

命令如下:

docker run -it docker.io/ubuntu:latest /bin/bash
root@a0a0c8cfec3a:/# touch test.txt
root@a0a0c8cfec3a:/# exit

创建完 test.txt 文件后,需要记住标注的容器 ID: a0a0c8cfec3a, 用它来提交一个新的镜像(PS: 你也可以通过名称来提交镜像,这里只演示通过 ID 的方式)。

执行命令:

docker container commit -m "Added test.txt file" -a "Allen" a0a0c8cfec3a test:0.1

提交成功后,会返回新创建的镜像 ID 信息,如下图所示:

Docker 提交新创建的镜像

再次查看本地镜像信息,可以看到新创建的 test:0.1 镜像了:

Docker 查看镜像信息

二、基于 Dockerfile 来创建镜像

通过 Dockerfile 的方式来创建镜像,是最常见的一种方式了,也是比较推荐的方式。Dockerfile 是一个文本指令文件,它描述了是如何基于一个父镜像,来创建一个新镜像的过程。

下面让我们来编写一个简单的 Dockerfile 文件,它描述了基于 Ubuntu 父镜像,安装 Python3 环境的镜像:

FROM docker.io/ubuntu:latest

LABEL version="1.0" maintainer="Allen <weiwosuo@github>"

RUN apt-get update && \
    apt-get install -y python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

创建完成后,通过这个 Dockerfile 文件,来构建新的镜像,执行命令:

docker image build -t python:3 .

注意:命令的最后有个点,如果不加的话,会构建不成功 !

Docker 通过 Dockerfile 构建镜像

编译成功后,再次查看本地镜像信息,就可以看到新构建的 python:3 镜像了。

Docker 查看镜像信息

三、总结

本文中,我们学习了 Docker 中如何基于本地已有的镜像,来创建镜像,以及如何通过 Dockerfile 来创建新的镜像。祝您学习愉快!