docker-Dockfile创建镜像image

文档《docker从入门到实践》

声明:该文章并不会另你掌握docker,仅仅是如何学习。

在这里插入图片描述
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  1. 从已经创建的容器中更新镜像,并且提交这个镜像
  2. 使用 Dockerfile 指令来创建一个新的镜像

Dockfile

在这里插入图片描述

FROM centos:latest
RUN groupadd -r redis \
&& useradd  -r -g redis redis
RUN yum -y update \
&& yum -y install epel-release \
&& yum -y install redis \
&& yum -y install net-tools
EXPOSE 6379

这是一个centos系统的redis服务 开放的端口是6379;注意\符号是书写上的换行,使之更直观,但不是真正的换行,代表书写换行但其实是尾随连接。而真正的换行处不可以用\,如FROM与RUN是两行,FROM后不可以用\,否则就是语法错误。该文件共有四行,FROM,RUN,RUN,EXPOSE。

注意事项

最好将Dockfile放在空目录下,不要放在该目录下放入无关紧要的文件,否则docker会把其他文件也打包成镜像,使得镜像十分的臃肿。

在这里插入图片描述

创建镜像

在 Dockerfile 文件所在目录执行:
docker build --help
在这里插入图片描述
语法:docker build [选项] <上下文路径/URL/->

创建镜像命令docker build -t redis .

-t = tag 指定tag名称 ;注意 redis后边跟着的.点,代表上下文路径,当前目录。docker会把该目录下所有的区域当作上下文区域,所以该目录下只能是必要文件。

docker build 会在这里插入图片描述

build命令会根据Dockfile创建一个只读文件系统

查看镜像命令 docker image ls

在这里插入图片描述
由于docker build -t redis . 由于没有指定tag,所以默认latest。重新看-t命令
在这里插入图片描述
所以为了区分,一般是docker build -t redis:1.0 . 来标记镜像。

docker image ls -a

默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数 = list all
在这里插入图片描述
在这里插入图片描述

虚悬镜像

文档中提到ls -a 显示的<none>标签的虚悬镜像,不同于ls列出的虚悬镜像。前者是一些镜像的依赖,后者是可以任意删除的。
在这里插入图片描述
当再次通过同一dockfile创建新的镜像时,新镜像会使用已安装的镜像层,安装会很快。
docker build -t redis:1.0 . 用来区分latest。

这里体现了FROM,RUN,RUN,EXPOSE 四行=四步。
在这里插入图片描述
在这里插入图片描述
redis:1.0 和 redis:latest 是两个不同的镜像。然而它们共用了相同的中间层镜像。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值