1. 程式人生 > >Docker-Dockerfile格式

Docker-Dockerfile格式

url daemon 掛載點 自動分配 ins mysq 活著 pos IT

1、FROM //指定基於那個基礎鏡像

格式FROM<image>或者FROM<image>:<tag>

例如:

FROM centos

FROM centos:latest

2、MAINTAINER //指定作者信息

格式MAINTAINER<name>

例如:

MAINTAINER fansik [email protected]

3、RUN //鏡像操作指令

格式為RUN<command>或者RUN["executable","param1","param2"]

例如:

RUN yum install httpd

RUN["/bin/bash","-c","echo hello"]

4、CMD //三種格式:

CMD["executable","param1","param2"]

CMD command param1 param2

CMD ["param1","param2"]

RUN和CMD看起來很像,但是CMD用來指定容器啟動時用到的命令,只能有一條

例如:

CMD["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]

5、EXPOSE

格式為EXPOSE<port>[<port>...]

例如:

EXPOSE 22 80 8443

這個用來指定要映射出去的端口,比如容器內部我們啟動了sshd和nginx,所以我們要把22和80端口暴漏出去,這個需配合-P(大寫)來工作,也就是說在啟動容器時,需要加上-P(大寫),讓它自動分配,如果想指定具體的端口,也可以用-p(小寫)來指定

6、ENV

格式ENV<key><values>

例如:

ENV PATH /usr/local/mysql/bin:$PATH

它主要是為後續的RUN指令提供一個環境變量,我們也可以定義一些自定義的變量

ENV MYSQL_version 5.6

7、ADD

格式:ADD<src><dest>

將本地的一個文件或目錄拷貝到容器的某個目錄裏,其中src為Dockerfile所在目錄的相對路徑,它可以是一個url。

例如:

ADD<conf/vhosts></usr/local/nginx/conf>

8、COPY

格式同ADD

使用方法和ADD一樣,不同的是它不支持url

9、ENTERYPOINT 格式類似CMD

容器啟動是要執行的命令,它和CMD很像,也是只有一條生效,如果寫多個只有最後一條生效。

和CMD不同的是:

CMD是可以被docker run指令覆蓋的,而ENTRYPOINT不能覆蓋,比如,容器名字為fansik,在Dockerfile中指定如下CMD:CMD["/bin/echo","test"]啟動容器的命令是docker run fansik這樣會輸出test

如果啟動容器的命令為docker run -it fansik /bin/bash什麽都不會輸出

ENTRYPOINT不會被覆蓋,而且會比CMD活著docker run指定得命令要靠前執行

ENTRYPOINT["echo","test"]

docker run -it fansik 123

則會輸出test 123,這相當於要執行命令echo test 123

10、VOLUME

格式VOLUME["/data"]

創建一個可以從本地主機或其他容器掛載的掛載點

11、USER

格式USER daemon

指定運行容器的用戶

12、WORKDIR

格式WORKDIR /path/to/workdir

為後續的RUN、CMD或者ENTRYPOINT指定工作目錄

Docker-Dockerfile格式