国产精品三级国产专区,国产欧美二区亚洲综合,欧美精品专区一中文字在线观看,国产免费A∨片在线播放

  • 
    
  • <mark id="t4lup"><thead id="t4lup"><input id="t4lup"></input></thead></mark>

    <s id="t4lup"></s>

      湖北企業(yè)新聞網(wǎng),歡迎您!

      幫助中心 廣告聯(lián)系

      網(wǎng)站關(guān)鍵詞: 湖北企業(yè)新聞網(wǎng)

      Docker鏡像和Dockerfile詳解!

      來(lái)源:時(shí)間:2020-11-19 14:30:11 閱讀:-

      鏡像是容器的模板,容器是鏡像運(yùn)行的實(shí)例,可以類(lèi)比為模具和實(shí)物的關(guān)系或者編程語(yǔ)言里面"類(lèi)"和"實(shí)例"的關(guān)系,鏡像是靜態(tài)的定義,容器是動(dòng)態(tài)運(yùn)行的實(shí)體

      一、鏡像的構(gòu)成

      hello-world

      Hello-world是docker官方提供的一個(gè)很小的鏡像,用來(lái)測(cè)試docker是否正確運(yùn)行

      $ docker run hello-world$ docker images
      Docker鏡像和Dockerfile詳解

      這個(gè)鏡像才1.04kb,我們看下他的Dockerfile描述

      FROM scratchCOPY hello /CMD ["/hello"]

      (1) FROM scratch 說(shuō)明鏡像是白手起家,從0開(kāi)始構(gòu)建

      (2) COPY hello / 將文件"hello"復(fù)制到鏡像的目錄

      (3) CMD ["/hello"] 容器啟動(dòng)時(shí)執(zhí)行 /hello

      二、Dockerfile的構(gòu)建

      概念:Dockerfile 是一個(gè)包含創(chuàng)建鏡像所有命令的文本文件,通過(guò)docker build命令可以根據(jù) Dockerfile 的內(nèi)容構(gòu)建我們自己需要的鏡像

      base鏡像:

      a、不依賴(lài)其他鏡像,從scratch開(kāi)始

      b、以其他鏡像為基礎(chǔ)擴(kuò)展

      Dockerfile常用指令,主要分為配置指令和操作指令,一圖展示各種命令


      Docker鏡像和Dockerfile詳解

      dockerfile常用命令

      配置指令

      2.1、ARG(定義鏡像創(chuàng)建過(guò)程中的變量)

      用法:ARG []

      2.2、FROM

      用法:FROM 
      • FROM指定構(gòu)建鏡像的基礎(chǔ)源鏡像,如果本地沒(méi)有該鏡像,默認(rèn)會(huì)從 DockerHub上拉取鏡像
      • FROM scratch 說(shuō)明鏡像是從0開(kāi)始構(gòu)建,不依賴(lài)其他鏡像
      • FROM可以在一個(gè) Dockerfile 中出現(xiàn)多次,如果有需求在一個(gè) Dockerfile 中創(chuàng)建多個(gè)鏡像

      2.3、LABEL

      用法:LABEL = = =

      例如:LABEL version="l.0.0-rc3"

      LABEL author="yeasy@github" date="2020-01-01"

      2.4、EXPOSE(聲明鏡像內(nèi)服務(wù)監(jiān)聽(tīng)的端口)

      用法:EXPOSE 

      例如:EXPOSE 22 80 8443

      2.5、ENV

      用法:ENV  或 ENV =

      例如:

      ENV APP_VERSION=1.0.0

      ENV APP_HOME=/usr/local/bin

      ENV PATH $PATH:/usr/local/bin

      2.6、ENTRYPOINT

      支持兩種格式:

      □ ENTRYPOINT ["executable", "paraml ", "param2"]:exec 調(diào)用執(zhí)行;

      □ ENTRYPOINT command param 1 param2: shell 中執(zhí)行;

      每個(gè)Dockerfile 中只能有一個(gè)ENTRYPOINT, 當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起效。

      2.7、WORKDIR

      指定工作目錄

      用法:WORKDIR 

      WORKDIR /root/test

      操作指令

      2.8、RUN

      用法:RUN 

      例如:

      RUN apt-get update \

      && apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \

      && rm -rf /var/cache/apt

      2.9、CMD(啟動(dòng)容器時(shí)指定默認(rèn)執(zhí)行的命令)

      用法:CMD command paraml param2 :在默認(rèn)的Shell 中執(zhí)行

      每個(gè)Dockerfile 只能有一條CMD 命令。如果指定了多條命令,只有最后一條會(huì)被執(zhí)行

      2.10、ADD

      格式為ADD  

      COPY的作用和ADD類(lèi)似,這里不再贅述

      三、通過(guò)示例練習(xí)Dockerfile

      # This my first nginx Dockerfile# Version 1.0# Base images 基礎(chǔ)鏡像FROM centos#MAINTAINER 維護(hù)者信息MAINTAINER pythontaotao#ENV 設(shè)置環(huán)境變量ENV PATH /usr/local/nginx/sbin:$PATH#ADD  文件放在當(dāng)前目錄下,拷過(guò)去會(huì)自動(dòng)解壓ADD nginx-1.8.0.tar.gz /usr/local/  ADD epel-release-latest-7.noarch.rpm /usr/local/  #RUN 執(zhí)行以下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpmRUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean allRUN useradd -s /sbin/nologin -M www#WORKDIR 相當(dāng)于cdWORKDIR /usr/local/nginx-1.8.0 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make installRUN echo "daemon off;" >> /etc/nginx.conf#EXPOSE 映射端口EXPOSE 80#CMD 運(yùn)行以下命令CMD ["nginx"]
      推薦閱讀:車(chē)展網(wǎng)