dcoker buile:
創建一個鏡像,在dockerfile中可以運行多個RUN命令,也可以使用CMD命令,但是如果在docker run 容器創建的時候使用了CMD就會被覆蓋,如果沒有使用就默認使用build構建的CMD命令
dockerfile主要命令如下:
-
FROM:
命令格式:FROM <image>
用法說明:第一個指令必須是FROM了,其指定一個構建鏡像的基礎源鏡像,如果本地沒有就會從公共庫中拉取,沒有指定鏡像的標簽會使用默認的latest標簽,可以出現多次,如果需要在一個Dockerfile中構建多個鏡像
-
MAINTAINER:
命令格式:MAINTAINER <name> <email>
用法說明:描述鏡像的創建者和其郵箱
-
RUN:
命令格式:RUN <command>
用法說明:可以通過&符號連接多個RUN語句
- CMD:
命令格式:CMD <command>
用法說明:可以使用多次,但是只有最后一個生效
-
EXPOSE:
命令格式:EXPOSE <port> [<port>...]
用法說明:告訴Docker服務器容器對外映射的容器端口號,在docker run -p的時候生效
- EVN:
命令格式:EVN <key> <value> #只能設置一個
EVN <key>=<value>#可以設置多個
用法說明:設置容器的環境變量,可以讓其后面的RUN命令使用,容器運行的時候這個變量也會保留
- ADD:
命令格式:ADD <src> <dest>
用法說明:復制本機文件或目錄或遠程文件,添加到指定的容器目錄,支持GO的正則模糊匹配。路徑是絕對路徑,不存在會自動創建。如果源是一個目錄,只會復制目錄下的內容,目錄本身不會復制。ADD命令會將復制的壓縮文件夾自動解壓(如果是遠程的壓縮文件將不會自動解壓),這也是與COPY命令最大的不同
- COPY:
命令格式:COPY <src> <dest>
用法說明:COPY除了不能復制網絡文件。其它功能和ADD相同
- ENTRYPOINT:
命令格式:ENTRYPOINT "command"
用法說明:這個命令和CMD命令一樣,唯一的區別是不能被docker run命令的執行命令覆蓋,如果要覆蓋需要帶上選項--entrypoint,如果有多個選項,只有最后一個會生效
- VOLUME:
命令格式:VOLUME ["path"]
用法說明:在主機上創建一個掛載,掛載到容器的指定路徑。docker run -v命令也能完成這個操作,而且更強大。這個命令不能指定主機的需要掛載到容器的文件夾路徑。但docker run -v可以,而且其還可以掛載數據容器
- USER:
命令格式:USER daemon
用法說明:指定運行容器時的用戶名或UID,后續的RUN、CMD、ENTRYPOINT也會使用指定的用戶運行命令
- ONBUILD:
命令格式:ONBUILD [INSTRUCTION]
用法說明:配置當前所創建的鏡像作為其它新創建鏡像的基礎鏡像時,所執行的操作指令。意思就是,這個鏡像創建后,如果其它鏡像以這個鏡像為基礎,會先執行這個鏡像的ONBUILD命令
- 一個例子:
1 FROM centos 2 MAINTAINER arrow "arrow@qq.com" 3 RUN mkdir -p /opt/python/ 4 RUN mkdir -p /data/script/ 5 RUN "pip install django uwsgi " 6 ADD operations.tar.gz /data/object/ 7 ADD uwsgi_script.tar.gz /data/script/ 8 ENV PYTHON_HOME /opt/object 9 EXPOSE 8080 10 ENV PATH $PATH:$PYTHON_HOME /bin 11 CMD "uwsgi --ini /data/script/uwsgi.ini"
- 運行docker build:
1 docker build -t centos_python:v1
dcoker RUN:
創建一個容器:
1 docker run --name myweb -d -it --rm centos_python:v1