Dockerfile命令介绍

通过Dockerfile可以构建Docker的镜像,并启动一个容器。

Dockerfile的格式都是如下格式:

[指令] [参数]
指令忽略大小写,但是建议使用大写。

下面介绍Dockerfile的几个重要指令.

1.FROM

FROM <image>
或者

FROM <image>:<tag>
设置基本的镜像,为后续的命令使用,所以应该作为Dockerfile的第一条指令。

举例:

FROM ubuntu
2.RUN

RUN命令会在上面FROM指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。

两种格式:

RUN <command> (the command is run in a shell - `/bin/sh -c`)
或:
RUN ["executable", "param1", "param2" ... ]  (exec form)
RUN命令等价于:

docker run image command
docker commit container_id
3.ENTRYPOINT

有两种语法格式,一种就是上面的(shell方式):

ENTRYPOINT cmd param1 param2 ...
或者:

第二种是 exec 格式:

ENTRYPOINT ["cmd", "param1", "param2"...]
举例:

ENTRYPOINT ["echo", "Whale you be my container"]
一个完整使用ENTRYPOINT的例子:

root@justin:~# cat Dockerfile
FROM ubuntu
ENTRYPOINT echo "Welcome!"

root@justin:~# docker run 62fda5e450d5
Welcome!
4. USER

指定应用的运行用户

比如指定 mysql 的运行用户,可以使用上面的 ENTRYPOINT 来实现:

ENTRYPOINT ["mysql", "-u", "justin"]
更好的方式是:
ENTRYPOINT ["mysql"]
USER justin
5.EXPOSE

EXPOSE 命令可以设置一个端口在运行的镜像中暴露在外。

格式:

EXPOSE <port> [<port>...]
举例:

EXPOSE 11211

一个完整的例子:

# Memcached
#
# VERSION       2.2

# use the ubuntu base image provided by dotCloud
FROM ubuntu

MAINTAINER Victor Coisne victor.coisne@dotcloud.com

# make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update

# install memcached
RUN apt-get install -y memcached

# Launch memcached when launching the container
ENTRYPOINT ["memcached"]

# run memcached as the daemon user
USER daemon

# expose memcached port
EXPOSE 11211
6.ENV

用于设置环境变量

ENV <key> <value>
设置了后,后续的RUN命令都可以使用
使用此dockerfile生成的image新建container,可以通过 docker inspect 看到这个环境变量:
root@tankywoo-docker:~# docker inspect 49bfc7a9817f
    ...
    "Env": [
        "name=tanky",
        "HOME=/",
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ],
    ...
7.VOLUME

格式:

VOLUME ["<mountpoint>"]
举例:

VOLUME ["/data"]
8.CMD

有三种格式:
CMD ["executable","param1","param2"] (like an exec, preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (as a shell)
一个Dockerfile里只能有一个CMD,如果有多个,只有最后一个生效。
9.WORKDIR

WORKDIR /path/to/workdir
配置RUN, CMD, ENTRYPOINT 命令设置当前工作路径
可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令
比如:
WORKDIR /a WORKDIR b WORKDIR c RUN pwd
工作在/a/b/c下面

10.MAINTAINER

MAINTAINER命令用来指定维护者的姓名和联系方式

MAINTAINER justin justin@dotcloud.com
11.#
#代表注释





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值