dockerfile就是重来构建docker镜像的构建文件
以下这张图片上的命令就是dockerfile的使用最多的命令了
a. 编写dockerfile文件
b.docker build //构建新的镜像
c.docker run //以新的镜像为模板,实例化运行容器
a.每条保留字指令都必须为大写的字母,且后面跟随至少一个参数
b.指令按照从上到下的顺序执行
c.#表示注释
d.每条指令都会创建一个新的镜像层,并对镜像进行提交
举例说明
FROM centos
VOLUME [“volume01”,“volume02”]
CMD echo "-----end-----"
CMD /bin/bash
[root@localhost ~]# docker build -f dockerfile -t centos:1.0 .
Sending build context to Docker daemon 18.94kB
Step 1/4 : FROM centos
---> 5d0da3dc9764
Step 2/4 : VOLUME [“volume01”,“volume02”]
---> Running in 0e396517ae62
Removing intermediate container 0e396517ae62
---> 99fafc431c31
Step 3/4 : CMD echo "-----end-----"
---> Running in 48be0e5fd3d5
Removing intermediate container 48be0e5fd3d5
---> 1fb568a3fa7a
Step 4/4 : CMD /bin/bash
---> Running in 87c3ee402f62
Removing intermediate container 87c3ee402f62
---> 2e2eb60ef2e7
Successfully built 2e2eb60ef2e7
Successfully tagged centos:1.0
可以看到docker在一步一步的,一层一层的构建镜像
[root@localhost ~]# docker run -it -P centos:1.0 /bin/bash
[root@bogon ~]# docker inspect 867f0eaf44ed
[
},
"Mounts": [
{
"Type": "volume",
"Name": "b8f0c3891c70607cbe50c3555d78540b3a88c4d47c7d641f28096c83b4e7f696",
"Source": "/var/lib/docker/volumes/b8f0c3891c70607cbe50c3555d78540b3a88c4d47c7d641f28096c83b4e7f696/_data",
"Destination": "[“volume01”,“volume02”]",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
在这里你可以看到刚刚挂载的卷
顺便看一下是匿名挂载
[root@bogon ~]# docker volume ls
DRIVER VOLUME NAME
local 8370fa2883e7622fd7c6ea50a80652d8a03051fb82105528e333b575dff5c4c5
local b8f0c3891c70607cbe50c3555d78540b3a88c4d47c7d641f28096c83b4e7f696
local juming-nginx
常用的一些dockerfile命令
命令 效果
FROM 基础镜像:Centos/Ubuntu
MAINTAINER 镜像作者+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 为镜像添加内容(压缩包)
WORKDIR 镜像工作目录(进入容器时的目录)
VOLUME 挂载的目录
EXPOSE 暴露端口配置
CMD/ENTRYPOINT 指定这个容器启动时要运行的命令(CMD替代先前命令,ENTRYPOINT在先前命令后追加)
COPY 类似于ADD,将文件拷贝到镜像中
ENV 构建时设置环境变量