前言
我们可以把对容器的所有操作命令都记录到一个文件里,就像是写脚本程序。
之后用 docker build 命令以此文件为基础制作一个镜像,并会自动提交到本地仓库。
这样的话镜像的构建会变的透明化,对镜像的维护起来也更加简单,只修改这个文件即可。
同时分享也更加简单快捷,因为只要分享这个文件即可。
Dokcerfile 是一个普通的文本文件,文件名一般叫 Dockerfile
其中包含了一系列的指令(Instruction), 每一条指令都会构建一层,就是描述该层是如何创建的。
简单的的说就是:可以将命令行的操作放到配置文件中,使用配置文件创建镜像。
例如:
1. 编辑dockefile 文件
[root@localhost ~]# mkdir /dk_dockerfile //docker build需要指定此目录名字
[root@localhost ~]# cd /dk_dockerfile
[root@localhost dk_dockerfile]# touch Dockerfile //固定名字,加载时自动识别该名字
[root@localhost dk_dockerfile]# cat Dockerfile
FROM centos:latest
MAINTAINER zjg zjg@564267521
RUN touch /tmp/a.txt
ENV name=zjg
RUN id;useradd $name
RUN yum -y install vim
##注释:
FROM 基础镜像,存在直接使用,不存在自动下载
MAINTAINER 作者 作者邮箱
RUN 对镜像做的后续改变
RUN 继续对镜像做改变
....
ENV 设置环境变量
CMD 主要目的是为运行容器时提供默认值
LABEL 指令用于指定一个镜像的描述信息
每行命令均是 INSTRUCTION statement形式,即命令+清单的模式。
2.开始构建镜像
命令语法格式:
docker bulid -t 仓库名/镜像名:tag .
[root@localhost dk_dockerfile]# docker build -t centos:zjg3 .
Sending build context to Docker daemon 2.048kB
Step 1/8 : FROM centos:latest
---> 300e315adb2f
Step 2/8 : MAINTAINER zjg zjg@564267521
---> Using cache
---> 1325cfeb69eb
Step 3/8 : RUN touch /tmp/a.txt
---> Using cache
---> 2c7b291e49b5
Step 4/8 : ENV name=zjg
---> Using cache
---> 249090fe70d5
Step 5/8 : RUN useradd $name
---> Using cache
---> 13527e9a47c3
Step 6/8 : RUN yum -y install vim systemctl stop firewalld
---> Running in 732bf2de367b
CentOS Linux 8 - AppStream 658 kB/s | 6.3 MB 00:09
......
......略
Complete!
Removing intermediate container b7af35ef206e
---> 1780c35f1218
Successfully built 1780c35f1218 构建成功
Successfully tagged centos:zjg6 构建成功
常用的命令:
有大佬详解内容网址
容器技术-Dockerfile命令详解-