Dockerfile用法和引數詳解
阿新 • • 發佈:2018-12-26
Dockerfile建立映象 – Dockerfile格式,對應的引數
- FROM //指定基於哪個基礎映象
格式 FROM 或者 FROM :, 比如
FROM centos
FROM centos:latest
- MAINTAINER //指定作者資訊
格式 MAINTAIN ,比如
MAINTAINER aming [email protected] - RUN //映象操作指令
格式為 RUN 或者 RUN [“executable”, “param1”, “param2”],比如
RUN yum install httpd
RUN [“/bin/bash”, “-c”, “echo hello”]
- MAINTAINER //指定作者資訊
- 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”]
- EXPOSE
格式為 EXPOSE […] , 比如
EXPOSE 22 80 8443
這個用來指定要映射出去的埠,比如容器內部我們啟動了sshd和nginx,所以我們需要把22和80埠暴漏出去。這個需要配合-P(大寫)來工作,也就是說在啟動容器時,需要加上-P,讓它自動分配。如果想指定具體的埠,也可以使用-p(小寫)來指定。 - ENV
格式 ENV , 比如
ENV PATH /usr/local/mysql/bin:$PATH
它主要是為後續的RUN指令提供一個環境變數,我們也可以定義一些自定義的變數
ENV MYSQL_version 5.6 - ADD 格式 add
將本地的一個檔案或目錄拷貝到容器的某個目錄裡。 其中src為Dockerfile所在目錄的相對路徑,它也可以是一個url。比如
ADD
- EXPOSE
Dockerfile建立映象 – Dockerfile示例(安裝nginx)
mkdir /root/docker && cd /root/docker
在當地路徑建立一個測試檔案:
[ [email protected] docker]# vim index.html
<h1>This docker test page!</h1>
vim Dockerfile (Dockerfile檔名為官方指定,不可更改名字)
FROM centos
#維護者資訊
MAINTAINER liaochao [email protected].com
#相關的操作
RUN rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
RUN yum install nginx -y
##新增檔案,預設跟dockerfile同級目錄
ADD index.html /usr/share/nginx/html/index.html
#修改引數
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
#設定開放埠
EXPOSE 80
#執行命令
CMD ["nginx"]
此時我們寫完了開始進行bulid
docker build -t chao/nginx:v1 /root/docker/
耐心等待執行完成,
[root@es1 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
chao/nginx v1 664da2f4b97d About a minute ago 417MB
我們建立一個容器進行測試
[root@es1 docker]# docker run -itd --rm --name test chao/nginx:v1
4a91a0081fdae992cba2279573c86ac7d01f895d4240f3c2ff4cb16d7db4c92c
[root@es1 docker]# curl 172.17.0.2
<h1>This docker test page!</h1>
此時可以看見我們定義的測試檔案正常打印出來。