- 必须是大写字母
- 从上往下顺序执行
- #代表注释
- 每一个指令都会提交一层
#继承自centos镜像
FROM centos
#容器的根目录下创建2个文件夹共享数据,inspect进入容器看挂载的目录映射的宿主机的目录
#这里是匿名挂载,一般在/var/lib/docker/下面找
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
#输出
CMD echo "finished,---------------success"
#执行
CMD /bin/bash
#构建镜像,注意结尾的点后别忘记
docker build -f /mydocker/Dockerfile -t rt/centos .
#容器与容器间共享
#启动上面的新build的容器
#名字叫d1
docker run -it --name d1 rt/centos
#启动第二个名字叫d2
#--volumes-from代表数据卷来源于d1
#这样容器d1和d2就可以互相同步数据
docker run -it --name d2 --volumes-from d1 rt/centos
#再启动一个d3
#d2和d3都继承自d1,删除d1不会影响d2和d3之间的通讯
docker run -it --name d3 --volumes-from d1 rt/centos
#参数解释
FROM :基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外暴露出的端口
WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包=copy+解压缩
COPY:类似ADD,拷贝文件和目录到镜像中。
VOLUME:容器数据卷,用于数据保存和持久化工作
CMD:指定一个容器启动时要运行的命令,会被覆盖
ENTRYPOINT:指定一个容器启动时要运行的命令,会追加
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
#示例
#基础镜像,当前新镜像是基于哪个镜像的
FROM centos
#镜像维护者的姓名和邮箱地址
MAINTAINER xxx@qq.com
#类似ADD,拷贝文件和目录到镜像中。
COPY a.txt /tmp/container.txt
#将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包=copy+解压缩
ADD b.tar.gz /tmp/
#容器构建时需要运行的命令
RUN yum -y install vim
#用来在构建镜像过程中设置环境变量
ENV MYPATH /tmp
#指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
WORKDIR $MYPATH
#当前容器对外暴露出的端口
EXPOSE 8080
#查看镜像生成历史,看官方的镜像是怎么一步一步生成的
docker history XXX
- CMD:指定一个容器启动时要运行的命令,会被覆盖
- ENTRYPOINT:指定一个容器启动时要运行的命令,会追加
- 两者的区别
#编写此dockerfile文件
FROM centos
CMD ["ls","-a"]
#build一下
docker build -f mydockerfile -t cmdtest .
#run一下会打印出目录来,相当于直接执行了ls -a
docker run cmdtest
#相当于执行-l就会报错
docker run cmdtest -l
#编写dockerfile文件
FROM centos
ENTRYPOINT ["ls","-a"]
#build一下
docker build -f mydockerfile -t entrycentos
#启动,会打印目录,执行ls -a
docker run entrycentos
#追加启动,输出待权限的文件目录,相当于执行ls -a -l
docker run entrycentos -l