使用Dockerfile构建镜像

使用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 .

推荐阅读更多精彩内容

  • Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linu...
    凤落溪凰落地阅读 447评论 0 2
  • 进入我的博客,了解更多! 关于 Dockerfile 在构建镜像时,可以选择使用 Dockerfile 来构建。D...
    Lizhg阅读 281评论 0 6
  • 目录 前言 Dockerfile的书写规则及指令使用方法 创建Dockerfile,构建运行环境 构建镜像 Doc...
    garyond阅读 52,009评论 0 43
  • 在前面两节我们学习了如何安装以及简单的运行管理docker容器,在本节我们将会更多的探讨关于docker镜像的知识...
    井底蛙蛙呱呱呱阅读 3,251评论 0 6
  • 的是否是是是否 是否 多方是是是否
    ocean_111阅读 87评论 0 0
  • 就在昨天,我已经在简书上日更一百天了。没什么感觉,没有一丝一毫的激动和惊喜,更没有为自己能够坚持一百天的写作而感动...
    我是慕一阅读 271评论 10 9
  • 姓名:许丰盛 单位:上海凤图电气有限公司 477期学员【日精进打卡第91天】 【知~学习】 《六项精进》1遍 共9...
    许丰盛阅读 13评论 0 0
  • 闲来无事,把之前仿照网友敲的饼图代码传上来,供以后查看,先看看效果图: 先创建一个CAShapeLayer子类,这...
    遥想月下阅读 1,268评论 0 2