使用Dockerfile构建镜像
使用Dockerfile去构建镜像是其中的一种方式,接下来我们就介绍一下这个Dockerfile是什么,怎么编辑Dockerfile文件和使用docker构建镜像。
一、Dockerfile 基本语法
Dockerfile语法有两部分组成 注释 和命令+参数
注释使用 #;命令: RUN argument …
# Print "Hello docker!"
RUN echo "Hello docker!"
1、ADD
作用:从源系统的文件系统上复制文件到目标容器的文件系统。若源是一个URL,那该URL的内容将被下载并复制到容器中。
# Usage: ADD [source directory or URL] [destination directory]
ADD /my_app_folder /my_app_folder
2、CMD
和RUN命令类似,CMD可以用于执行特定的命令。和RUN不同的是,这些命令不是在镜像构建过程中执行,而是在镜像构建容器后被调用。
# Usage 1: CMD application "argument", "argument", ..
CMD "echo" "Hello docker!" # 容器运行的时候执行
3、ENTRYPOINT
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。
# Usage: ENTRYPOINT application "argument", "argument", ..
# Remember: arguments are optional. They can be provided by CMD
# or during the creation of a container.
ENTRYPOINT echo
# Usage example with CMD:
# Arguments set with CMD can be overridden during *run*
CMD "Hello docker!"
ENTRYPOINT echo
4、ENV
ENV命令用于设置环境变量,以“key=value”的形式存在,在容器内可以被脚本活着程序调用。
# Usage: ENV key value
ENV SERVER_WORKS 4
5、EXPOSE
用来指定端口,使容器内的应用可以通过端口和外界交互。
# Usage: EXPOSE [port]
EXPOSE 8080
6、FROM
从哪个基础镜像构建镜像。
# Usage: FROM [image name]
FROM ubuntu
7、MAINTAINER
用户信息声明
# Usage: MAINTAINER [name]
MAINTAINER authors_name
7、RUN
# Usage: RUN [command]
RUN aptitude install -y riak
8、USER
用于设置运行容器的UID
# Usage: USER [UID]
USER 751
9、VOLUME
用于访问宿主机上的目录
# Usage: VOLUME ["/dir_1", "/dir_2" ..]
VOLUME ["/my_files"]
10、WORKDIR
用于设置CMD的运行目录
# Usage: WORKDIR /path
WORKDIR ~/
二、使用Dockerfile创建镜像
# Build an image using the Dockerfile at current location
# Example: sudo docker build -t [name] .
sudo docker build -t my_mongodb .
三、Dockerfile示例
1、创建一个Dockerfile
2、定义文件和它的目的,主要用于明确Dockerfile的目的。
############################################################
# Dockerfile to build MongoDB container images
# Based on Ubuntu
# 说明等信息
############################################################
3、设置基础镜像
# Set the base image to Ubuntu
FROM ubuntu
4、定义作者
# File Author / Maintainer
MAINTAINER Example McAuthor
4、设置命令与参数下载MongoDB
################## BEGIN INSTALLATION ######################
# Install MongoDB Following the Instructions at MongoDB Docs
# Ref: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
# Add the package verification key
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
# Add MongoDB to the repository sources list
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list
# Update the repository sources list once more
RUN apt-get update
# Install MongoDB package (.deb)
RUN apt-get install -y mongodb-10gen
# Create the default data directory
RUN mkdir -p /data/db
##################### INSTALLATION END #####################
5、设置MongoDB端口
# Expose the default port
EXPOSE 27017
# Default port to execute the entrypoint (MongoDB)
CMD ["--port 27017"]
# Set default container command
ENTRYPOINT usr/bin/mongod
6、构建镜像
docker build -t my_mongodb .