Dockerfile
Dockerfile 由一行行命令语句组成,通常分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动执行指令。例如:
# 第一行必须指定基础镜像信息
FROM ubuntu
# 维护者信息
MAINTAINER user user@email.com
# 镜像操作指令
RUN apu update && apt install -y nginx
# 容器启动指令
CMD /user/sbin/nginx
其中第一行必须指明所基于的镜像名,接下来是维护者信息。后面则是镜像操作指令,例如RUN
指令,每个指令都必须是大写字母,每一个指令都会创建提交一个新的镜像层。最后则是CMD指令,来指定运行容器时的操作。
FROM
:指定基础镜像,当前镜像是基于哪个镜像的。MAINTAINER
:镜像维护者的姓名和邮箱地址。RUN
:镜像构建时候需要运行的命令。EXPOSE
:当前容器对外暴露的端口。WORKDIR
:指定在创建容器后,终端默认登陆进来的工作目录。ENV
:用来在构建镜像时设置环境变量,这个环境变量可以在后续的任何RUN
指令中使用。ADD
:将宿主机目录下的文件拷贝进镜像,并且自动处理 URL 和解压tar
压缩包。COPY
:类似ADD
,拷贝文件和目录到镜像中。将从构建上下文目录中的文件/目录复制到新的一层的镜像内的位置。VOLUME
:容器数据卷,用于数据保存和持久化工作。CMD
:指定一个容器启动时运行的命令。CMD可以有多个,但只有最后一个生效,CMD会被docker run之后的参数替换。ENTRYPOINT:指定一个容器启动时候运行的命令。它不会被docker run后面的参数替换,而是追加。
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发。
############################################################
# 用于构建MongoDB容器镜像的Dockerfile
# 基于Ubuntu
############################################################
# 设置基础镜像为Ubuntu
FROM ubuntu
# 文件作者/维护者
MAINTAINER Example McAuthor
# 更新仓库源列表
RUN apt-get update
################## 开始安装 ######################
# 按照MongoDB文档中的说明安装MongoDB
# 参考: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
# 添加软件包验证密钥
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
# 将MongoDB添加到仓库源列表
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list
# 再次更新仓库源列表
RUN apt-get update
# 安装MongoDB软件包(.deb)
RUN apt-get install -y mongodb-10gen
# 创建默认的数据目录
RUN mkdir -p /data/db
##################### 安装结束 #####################
# 暴露默认端口
EXPOSE 27017
# 默认执行入口点的端口(MongoDB)
CMD ["--port 27017"]
# 设置默认的容器命令
ENTRYPOINT usr/bin/mongod
最后更新于
这有帮助吗?