Dockerfile常用命令
- FROM: 继承基础镜像
- MAINTAINER:镜像制作作者信息
- RUN: 用来执行shell命令
- EXPOSE: 暴露端口号
- CMD: 启动容器默认执行的命令,会被覆盖
- ENTRYPOINT: 启动容器真正执行的命令,不会被覆盖
- VOLUME:创建该挂载点
- ENV: 配置环境变量
- ADD: 复制文件到容器,一般拷贝文件,压缩包自动解压
- COPY:复制文件到容器,一般可拷贝目录
- WORKDIR:设置容器的工作目录
- USER:容器使用的用户
接下来,列举几个Dockerfile的实例。
Dockerfile实例
1.使用RUN创建一个用户
Dockerfile文件内容如下所示。
FROM centos:6 MAINTAINER binghe RUN useradd binghe
执行构建,如下所示。
docker build -t centos:user .
2.使用ENV定义环境变量并用CMD执行命令
Dockerfile文件内容如下所示。
FROM centos:6 MAINTAINER binghe RUN useradd binghe RUN mkdir binghe ENV envir=test version=1.0 CMD echo "envir:$envir version:$version"
执行构建并启动测试:
#执行构建 docker build -t centos:evn-cmd . #启动镜像验证EVN和CMD docker run centos:env-cmd
3.使用ADD添加一个压缩包,使用WORKDIR改变工作目录
FROM nginx MAINTAINER binghe ADD ./index.tar.gz /usr/share/nginx/html/ WORKDIR /usr/share/nginx/html
4.使用COPY拷贝目录
使用COPY拷贝指定目录下的所有文件到容器,不包括本级目录。此时只会拷贝webroot下的所有文件,不会将webroot拷贝过去:
FROM nginx MAINTAINER binghe ADD ./index.tar.gz /usr/share/nginx/html/ WORKDIR /usr/share/nginx/html COPY webroot/ .
5.设置启动容器的用户
设置启动容器的用户,在生产环境中一般不建议使用root用户启动容器,所以,可以根据公司业务场景自定义启动容器的用户:
FROM centos:6 MAINTAINER binghe ADD ./index.tar.gz /usr/share/nginx/html/ WORKDIR /usr/share/nginx/html COPY webroot/ . RUN useradd -m tomcat -u 1001 USER 1001
6.使用VOLUME创建容器可挂载点
FROM centos:6 MAINTAINER binghe VOLUME /data
挂载目录到/data,注意:对于宿主机路径,要写绝对路径:
docker run -ti --rm -v `pwd` /web:/data centos:volume bash