例如:RUN groupadd -r redis && useradd -r -g redis redis
构建一个redis 用户组并添加一个叫redis 的用户
【EXPOSE】当前容器对外暴露出的端口
例如:EXPOSE 6379
【WORKDIR】指定在创建容器后,终端默认登入的进来工作目录,一个落脚点
例如:WORKDIR /data
登入之后,你的工作目录即为data
【ENV】用来在构建镜像过程中设置环境变量
例如:
ENV MY_PATH/user/mytest
WORKDIR $MY_PATH
设置变量叫MY_PATH,值为user/mytest,登入之后直接进入user/mytest,不再是根目录/
这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;也可以在其它指令中直接使用这些环境变量
【ADD】在宿主机的目录下的文件拷贝至镜像且ADD命令会自动处理URL和解压tar压缩包
例如:ADD centos-7-docker.tar.xz/
在构建dockerfile上下文路径时,把centos-7-docker.tar.xz/ 拷贝(并解压缩)至镜像中
【COPY】类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中的文件/目录复制到新的一层的镜像内的位置
例如:
COPY src dest
COPY [“src”,” dest”]
【VOLUME】容器数据卷,用于数据保存和持久化工作
例如:
FROM centos
VOLUME[“/dataVolumeContainer1”,“dataVolumeContainer2”] 建立centos时,同时在根目录下自建dataVolumeContainer1与dataVolumeContainer2两个容器数据卷
【CMD】指定一个容器启动时要运行的命令
例如:
CMD [“/bin/bash”] CMD cat/etc/hosts
则第二条CMD覆盖第一条CMD
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
【ENTRYPOINT】指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数,但是追加
【ONBUILD】当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后,父镜像的onbuild被触发
案例案例1 自定义镜像自定义镜像
自定义mycentos目的使我们自己的镜像具备:(1)登入后的默认路径(2)vim编辑器(3)查看网络配置ifconfig支持
在/mydocker下新vim Dockerfile2,写入
from centos
ENV MYPATH /usr/local
WORKDIR $MYPATH #登入之后直接进入/usr/local
RUN yum -y install vim
评论0