Docker-Dockerfile格式
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格式