目录
镜像构建介绍
docker commit构建镜像
Dockerfile构建镜像
第一个Dockerfike
 查看镜像分层结构
Dcokerfile常用指令
  1.FROM
  2. MAINTAINER
  3.COPY
  4.ADD
  5.ENV
  6.EXPOSE
  7.VOLUME
  8.WORKDIR
  9.RUN
  10.CMD
  11.ENTRYPOINT
Dockerfile演示
首页 运维 Docker 创建Docker镜像有几种方式

创建Docker镜像有几种方式

Feb 23, 2022 pm 06:22 PM
docker 镜像

创建Docker镜像有2种方式:1、使用“docker commit”命令基于已有容器手动构建镜像;2、使用Dockerfile自动构建镜像,Docker程序会通过读取Dockerfile构建文件中的指令自动生成镜像。

创建Docker镜像有几种方式

本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。

有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像.

镜像构建介绍

在什么情况下我们需要自己构建镜像那?

(1)当我们找不到现有的镜像,比如自己开发的应用程序

(2)需要在镜像中加入特定的功能

docker构建镜像有两种方式:docker commit命令与Dockerfile构建文件

docker commit构建镜像

基于已有容器构建镜像主要是通过docker commit命令来构建新的镜像。

dockercommit构建进行主要有三步:

  • 运行容器
  • 修改容器
  • 将容器保存为新的镜像

比如在centos镜像中安装vim编辑器并存为新的镜像

(1)运行容器

[root@ken1 docker]# docker run -it centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a02a4930cb5d: Pull complete 
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
登录后复制

(2)安装vim编辑器

vim编辑器确认没有安装

[root@69f501e858a6 /]# vim
bash: vim: command not found
登录后复制

进行安装

[root@69f501e858a6 /]# yum install vim -y
登录后复制

(3)保存为新得镜像

首先查看当前运行的镜像

[root@ken1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69f501e858a6        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            quizzical_torvalds
登录后复制

使用commit存为新的镜像

[root@ken1 ~]# docker commit 69f501e858a6 centos-vim
sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
登录后复制

69f501e858a6是运行容器的ID使用name下面的名称也行
centos-vim是新镜像的名字

查看一下是否有了centos-vim镜像

重新启动新的镜像,验证是否可以使用vim编辑器

可以发现新的镜像可以使用vim编辑器了

[root@ken1 ~]# docker run -it centos-vim 
[root@61d090898bad /]# vim
[root@61d090898bad /]# vim test
登录后复制

上面演示了如何使用commit创建新的镜像,但是docker并不建议使用这种方式创建镜像,原因如下:

  • 这是一种手工创建镜像的方式,容器出错,而且效率低且可重复性弱
  • 更重要的是。使用者并不知道镜像是如何创建出来的。里面是否有恶意程序

Dockerfile构建镜像

Dockerfile是由一组指令组成的文件,其每条指令对应Linux中的一条命令,Docker程序通过读取Dockerfile中的指令最终生成镜像。

第一个Dockerfike

第一步:创建一个新的目录

[root@ken1 ~]# mkdir /test
登录后复制

第二步:编写Dockerfile

名称就叫Dockerfile,且第一个D需要大写

[root@ken1 ~]# cat Dockerfile
FROM centos
RUN yum install vim -y
登录后复制

FROMcentos表示使用centos这个基础镜像

RUN表示在centos上安装vim编辑器

第三步:构建镜像

[root@ken1 ~]# docker build -t centos-vim2 .
登录后复制

-t后面指定新的镜像的标签名(tag)

. 最后的一个点指明docker context为当前目录。docker默认会从build context中查找 Dockerfile文件,我们也可以通过-f参数指定Dockerfile的位置

第四步:查看镜像

 查看镜像分层结构

docker history会显示镜像的构建历史,也就是Dockerfile的执行过程。

Dcokerfile常用指令

  1.FROM

指定base镜像

  2. MAINTAINER

设置镜像的作者。可以是任意的字符

  3.COPY

将文件从build context复制到镜像

COPY支持两种格式:COPY src dest 和 COPY [“src”,”dest”]

注意:src只能制动build context中的文件或目录即在和Dockerfile同目录下才可以

  4.ADD

与COPY类似,从build context复制文件到镜像。

不同的是,如果src是归档文件(tar,zip,tgz,xz),文件会被自动接要到dest

  5.ENV

设置环境变量,环境变量可被后面的指令使用,例如:

ENV name ken RUN echo $name

  6.EXPOSE

指定容器中的进程会监听某个端口,Docker可以将该端口暴露出来

  7.VOLUME

将文件或目录声明为volume

  8.WORKDIR

为后面的RUN,ENTRYPINT,ADD,COPY指令设置镜像中的当前工作目录

  9.RUN

在容器中运行指定的命令

  10.CMD

容器启动时运行指定的命令

dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换

  11.ENTRYPOINT

设置容器启东市的命令

dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。

CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.

Dockerfile演示

下面演示一个比较全面的dockerfile

[root@ken1 test]# cat Dockerfile 
#my Dockerfile
FROM busybox
MAINTAINER ken
WORKDIR /ken
RUN touch test
COPY ["ken1","."]
ADD ["wordpress.tar.gz","."]
ENV name "ken"
登录后复制

注意:Dockerfile支持以#开头的注释

构建镜像

[root@ken1 test]# docker build -t myimage .
Sending build context to Docker daemon  4.281MB
Step 1/7 : FROM busybox
 ---> 3a093384ac30
Step 2/7 : MAINTAINER ken
 ---> Running in 2a73a83507ce
Removing intermediate container 2a73a83507ce
 ---> 8c3df9b3d823
Step 3/7 : WORKDIR /ken
 ---> Running in 31c6f9fe2195
Removing intermediate container 31c6f9fe2195
 ---> a458cf986072
Step 4/7 : RUN touch test
 ---> Running in e1b08ebd363c
Removing intermediate container e1b08ebd363c
 ---> 41601920009a
Step 5/7 : COPY ["ken1","."]
 ---> 2ebfa0933fca
Step 6/7 : ADD ["wordpress.tar.gz","."]
 ---> d0ad29d3aa34
Step 7/7 : ENV name "ken"
 ---> Running in fceae6e20e63
Removing intermediate container fceae6e20e63
 ---> 7efe0600e48f
Successfully built 7efe0600e48f
Successfully tagged myimage:latest
登录后复制

查看镜像

运行该镜像

[root@ken1 test]# docker run -it myimage
/ken # ls
ken1       test       wordpress
/ken # echo $name
ken
登录后复制
  •  可以发现当前工作目录为/ken,且自动创建
  • ken1是我们从docker context目录中复制过去的
  • test是使用touch创建的
  • wordpres压缩包已经被自动解压
  • $name为变量值为ken

推荐学习:《docker视频教程

以上是创建Docker镜像有几种方式的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker怎么创建镜像 docker怎么创建镜像 Apr 15, 2025 am 11:27 AM

创建 Docker 镜像步骤:编写包含构建指令的 Dockerfile。在终端中构建镜像,使用 docker build 命令。标记镜像,使用 docker tag 命令分配名称和标签。

docker怎么更新镜像 docker怎么更新镜像 Apr 15, 2025 pm 12:03 PM

更新 Docker 镜像的步骤如下:拉取最新镜像标记新镜像为特定标签删除旧镜像(可选)重新启动容器(如果需要)

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

docker镜像怎么保存 docker镜像怎么保存 Apr 15, 2025 am 11:54 AM

在 Docker 中保存镜像,可以使用 docker commit 命令创建新的镜像,包含指定容器的当前状态,语法为:docker commit [选项] 容器ID 镜像名称。要保存镜像到仓库,可以使用 docker push 命令,语法为:docker push 镜像名称[:标签]。要导入已保存的镜像,可以使用 docker pull 命令,语法为:docker pull 镜像名称[:标签]。

docker版本怎么看 docker版本怎么看 Apr 15, 2025 am 11:51 AM

要获取 Docker 版本,您可以执行以下步骤:运行 Docker 命令“docker --version”来查看客户端和服务器版本。对于 Mac 或 Windows,还可以通过 Docker Desktop GUI 的“版本”选项卡或“关于 Docker Desktop”菜单查看版本信息。

docker内的文件怎么拷贝到外面 docker内的文件怎么拷贝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中将文件拷贝到外部主机的方法:使用 docker cp 命令:执行 docker cp [选项] <容器路径> <主机路径>。使用数据卷:在主机上创建目录,在创建容器时使用 -v 参数挂载该目录到容器内,实现文件双向同步。

docker容器名称怎么查 docker容器名称怎么查 Apr 15, 2025 pm 12:21 PM

可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

docker怎么退出容器 docker怎么退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四种方法:容器终端中使用 Ctrl D 快捷键容器终端中输入 exit 命令宿主机终端中使用 docker stop <container_name> 命令宿主机终端中使用 docker kill <container_name> 命令(强制退出)

See all articles