国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【云原生-Docker】docker鏡像制作、上傳、dockerfile命令解析

這篇具有很好參考價值的文章主要介紹了【云原生-Docker】docker鏡像制作、上傳、dockerfile命令解析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

場景

  • 在實際業(yè)務場景中,需要制作多個不同版本進行鏡像使用,如maven版本、JDK、openJDK不同使用等,所以需要做多個針對不同版本做不同的鏡像。
  • 這里記錄一下之前devops用的openJDK版本、某些部門需要用orcle JDK、特此需要做不同的鏡像,鏡像內包含centos、maven、jdk。

鏡像制作

基礎鏡像

  • 基礎鏡像拉去,如centos、alpine等
  • docker pull centos:7

jdk、maven

  • 拉取centos基礎鏡像,把jdk、maven鏡像制作進基礎鏡像中,在使用centos:7作為基礎鏡像,配置jdk版本及maven版本,當拉取鏡像時可以直接使用,在devops使用過程中,可以直接run進行啟動使用。
  • dockerfile
FROM centos:7
MAINTAINER rundreams@yeah.net

WORKDIR /usr/bin/jdk
WORKDIR /usr/bin/mvn
COPY apache-maven-3.8.6 /usr/bin/mvn
COPY jdk1.8.0_202 /usr/bin/jdk

ENV LANG=C.UTF-8
ENV JAVA_HOME=/usr/bin/jdk
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV MAVEN_HOME=/usr/bin/mvn
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
  • 然后下載maven、JDK版本在Dockerfile同級目錄下,并配置Maven配置文件信息,如拉取倉庫地址等
  • 在同級目錄存在文件夾 apache-maven-3.8.6、jdk1.8.0_202
  • 基于進行可以根據(jù)要求選擇,如果還有其他命令執(zhí)行或者需要加入某些環(huán)境變量配置,可以參考后面的命令解析

構建鏡像

  • 執(zhí)行命令
docker build -f Dockerfile -t 鏡像地址:版本 .

docker制作鏡像上傳 拉取,CNCF,# Docker,docker,云原生,運維,dockerfile

推送遠程

docker push 鏡像地址:版本

命令解析

  • 官方參考
  • https://docs.docker.com/engine/reference/builder/

FROM

  • 指定基礎鏡像,必須為第一個命令
格式:
  FROM <image>
  FROM <image>:<tag>
  FROM <image>@<digest>
示例:  
	FROM centos:7
注:
   tag或digest是可選的,如果不使用這兩個值時,會使用latest版本的基礎鏡像

RUN

  • 構建鏡像時執(zhí)行的命令
RUN用于在構建鏡像時執(zhí)行命令,其有以下兩種命令執(zhí)行方式:
shell執(zhí)行
格式:
    RUN <command>
exec執(zhí)行
格式:
    RUN ["executable", "param1", "param2"]
示例:
    RUN apk update
    RUN ["/etc/execfile", "arg1", "arg1"]
注:RUN指令創(chuàng)建的中間鏡像會被緩存,并會在下次構建中使用。如果不想使用這些緩存鏡像,
可以在構建時指定--no-cache參數(shù),如:docker build --no-cache

ADD

  • 將本地文件添加到容器中,tar類型文件會自動解壓(網(wǎng)絡壓縮資源不會被解壓),可以訪問網(wǎng)絡資源,類似wget
格式:
    ADD <src>... <dest>
    ADD ["<src>",... "<dest>"] 用于支持包含空格的路徑
示例:
    ADD hom* /mydir/          # 添加所有以"hom"開頭的文件
    ADD hom?.txt /mydir/      # ? 替代一個單字符,例如:"home.txt"
    ADD test relativeDir/     # 添加 "test" 到 `WORKDIR`/relativeDir/
    ADD test /absoluteDir/    # 添加 "test" 到 /absoluteDir/

COPY

  • 類似ADD,但是是不會自動解壓文件,也不能訪問網(wǎng)絡資源

CMD

  • 構建鏡像后調用,也就是在容器啟動時才進行調用。
格式:
    CMD ["executable","param1","param2"] (執(zhí)行可執(zhí)行文件,優(yōu)先)
    CMD ["param1","param2"] (設置了ENTRYPOINT,則直接調用ENTRYPOINT添加參數(shù))
    CMD command param1 param2 (執(zhí)行shell內部命令)
示例:
    CMD echo "This is a test." | wc -l
    CMD ["/usr/bin/wc","--help"]

注:CMD不同于RUN,CMD用于指定在容器啟動時所要執(zhí)行的命令,而RUN用于指定鏡像構建時所要執(zhí)行的命令。

ENTRYPOINT

  • 配置容器,使其可執(zhí)行化。
格式:
    ENTRYPOINT ["executable", "param1", "param2"] (可執(zhí)行文件, 優(yōu)先)
    ENTRYPOINT command param1 param2 (shell內部命令)
示例:
    FROM centos:7
    ENTRYPOINT ["ls", "/usr/local"]
    CMD ["/usr/local/tomcat"]
  之后,docker run 傳遞的參數(shù),都會先覆蓋cmd,然后由cmd 傳遞給entrypoint ,做到靈活應用

注:
 ENTRYPOINT與CMD非常類似,不同的是通過docker run執(zhí)行的命令不會覆蓋ENTRYPOINT,
 而docker run命令中指定的任何參數(shù),都會被當做參數(shù)再次傳遞給CMD。
 Dockerfile中只允許有一個ENTRYPOINT命令,多指定時會覆蓋前面的設置,
 而只執(zhí)行最后的ENTRYPOINT指令。
 通常情況下,	ENTRYPOINT 與CMD一起使用,ENTRYPOINT 寫默認命令,當需要參數(shù)時候 使用CMD傳參

LABEL

  • 用于為鏡像添加元數(shù)據(jù)
格式:
    LABEL <key>=<value> <key>=<value> <key>=<value> ...
示例:
  LABEL version="1.0" description="ssd硬盤" by="rundreamsFly"
注:
  使用LABEL指定元數(shù)據(jù)時,一條LABEL指定可以指定一或多條元數(shù)據(jù),指定多條元數(shù)據(jù)時不同元數(shù)據(jù)
  之間通過空格分隔。推薦將所有的元數(shù)據(jù)通過一條LABEL指令指定,以免生成過多的中間鏡像。

ENV

  • 設置環(huán)境變量
格式:
    ENV <key> <value>  #<key>之后的所有內容均會被視為其<value>的組成部分,因此,一次只能設置一個變量
    ENV <key>=<value> ...  #可以設置多個變量,每個變量為一個"<key>=<value>"的鍵值對,
    如果<key>中包含空格,可以使用\來進行轉義,也可以通過""來進行標示;另外,反斜線也可以用于續(xù)行
示例:
    ENV myName Iversion
    ENV myCat=demos

EXPOSE

  • 指定于外界交互的端口
格式:
    EXPOSE <port> [<port>...]
示例:
    EXPOSE 80 443
    EXPOSE 8080    
    EXPOSE 11211/tcp 11214/udp
注:  
EXPOSE并不會讓容器的端口訪問到主機。要使其可訪問,
需要在docker run運行容器時通過-p來發(fā)布這些端口,或通過-P參數(shù)來發(fā)布EXPOSE導出的所有端口

如果沒有暴露端口,后期也可以通過-p 8080:80方式映射端口,但是不能通過-P形式映射

VOLUME

  • 指定持久化目錄(指定此目錄可以被掛載出去)
格式:
    VOLUME ["/path/to/to"]
示例:
    VOLUME ["/data"]
    VOLUME ["/var/www", "/var/log/apache2", "/etc/apache/user"
注:一個卷可以存在于一個或多個容器的指定目錄,該目錄可以繞過聯(lián)合文件系統(tǒng),并具有以下功能:
	卷可以容器間共享和重用
	容器并不一定要和其它容器共享卷
	修改卷后會立即生效
	對卷的修改不會對鏡像產生影響
	卷會一直存在,直到沒有任何容器在使用它

WORKDIR

  • 工作目錄,類似于cd命令
格式:
    WORKDIR /path/to/workdir
示例:
    WORKDIR /a  (這時工作目錄為/a)
    WORKDIR b  (這時工作目錄為/a/b)
    WORKDIR c  (這時工作目錄為/a/b/c)
注: 
  通過WORKDIR設置工作目錄后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY
  等命令都會在該目錄下執(zhí)行。在使用docker run運行容器時,可以通過-w參數(shù)覆蓋構建時所設置的工作目錄。

ARG

  • 相當于構建鏡像時可以在外部為里面?zhèn)鲄?/strong>
格式:
    ARG <name>[=<default value>]
示例:
    ARG site
    ARG build_user=www
From centos:7
ARG parameter
VOLUME /usr/share/nginx
RUN yum -y install $parameter
EXPOSE 80 443
CMD nginx -g "daemon off;"

# 可以這如下這樣靈活傳參
docker build --build-arg=parameter=net-tools -t nginx:1.14 . 

一圖匯總

docker制作鏡像上傳 拉取,CNCF,# Docker,docker,云原生,運維,dockerfile文章來源地址http://www.zghlxwxcb.cn/news/detail-779574.html

其他信息

源碼編譯制作nginx鏡像

# This my first nginx Dockerfile
# Version 1.0

# Base images 基礎鏡像
FROM centos

#MAINTAINER 維護者信息
MAINTAINER bertwu 

#ENV 設置環(huán)境變量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在當前目錄下,拷過去會自動解壓
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.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相當于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 運行以下命令
CMD ["nginx"]

到了這里,關于【云原生-Docker】docker鏡像制作、上傳、dockerfile命令解析的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【云原生 · Docker】輕松學會dockerfile構建鏡像

    【云原生 · Docker】輕松學會dockerfile構建鏡像

    目錄 ??dockerfile是什么 ??鏡像的緩存特性 ??dockerfile命令 ??FROM ??RUN ??CMD ??LABEL ??EXPOSE ??ENV ??ADD ??COPY ??ENTRYPOINT ??VOLUME ??USER ??WORKDIR ??ARG ??ONBUILD ??STOPSIGNAL ??????博客主頁:大蝦好吃嗎的博客 ? ? ??專欄地址:云原生專欄 docker中并不建議用戶通過com

    2024年02月08日
    瀏覽(28)
  • 【Docker】用Dockerfile制作個人的鏡像文件

    【Docker】用Dockerfile制作個人的鏡像文件

    作者簡介: 辭七七,目前大一,正在學習C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: 七七的閑談 歡迎大家點贊 ?? 收藏 ? 加關注哦!???? 前言 Docker 是一個 開源的應用容器引擎 ,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)

    2024年02月10日
    瀏覽(85)
  • Docker容器化技術(使用Dockerfile制作鏡像)

    Docker容器化技術(使用Dockerfile制作鏡像)

    Docker 支持通過擴展現(xiàn)有鏡像,創(chuàng)建新的鏡像。實際上,Docker Hub 中 99% 的鏡像都是通過在 base 鏡像中安裝和配置需要的軟件構建出來的。 1、Docker 鏡像為什么分層 鏡像分層最大的一個好處就是共享資源。 比如說有多個鏡像都從相同的 base 鏡像構建而來,那么 Docker Host 只需在

    2024年03月19日
    瀏覽(861)
  • Docker(七)—— 如何用Dockerfile制作自己的鏡像

    Docker(七)—— 如何用Dockerfile制作自己的鏡像

    目錄 需求: 一、步驟? 二、Dockerfile 三、 實戰(zhàn) —— 構建自己的centos 1. dockerfile編寫 2. build構建 3. run 運行 四、用docker commit實現(xiàn) 四、實戰(zhàn) —— 構建jar包的鏡像(helloworld版本) 五、實戰(zhàn) —— 構建jar包的鏡像(兩個容器通信版本)? 自己寫了一個小程序,如何帶著環(huán)境打包

    2024年02月05日
    瀏覽(94)
  • 【Docker】利用Dockerfile制作個人的鏡像文件詳細講解

    【Docker】利用Dockerfile制作個人的鏡像文件詳細講解

    前言 Docker 是一個 開源的應用容器引擎 ,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux或Windows 操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。 ??作者簡介: 熱愛跑步的恒川 ,致力于

    2024年02月11日
    瀏覽(22)
  • 【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構建鏡像詳解【附加實戰(zhàn)】

    【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構建鏡像詳解【附加實戰(zhàn)】

    ??Dockerfile 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令(Instruction)和操作命令;每一條指令構建一層鏡像,因此每一條指令的內容,就是描述該層鏡像應當如何構建(也就是你要執(zhí)行的操作命令)。 ?dockerfile是純文本文件; ?dockerfile是用來

    2024年01月18日
    瀏覽(24)
  • docker基于已有容器和通過Dockerfile進行制作鏡像配置介紹

    目錄 一.制作鏡像的兩種方式 1.在已有容器中更新并提交這個鏡像 2.使用Dockerfile來制作 二.基于容器制作鏡像 1.格式 (1)主要格式 (2)可選參數(shù) 2.案例 基于容器創(chuàng)建鏡像設置標簽并進行驗證是否可用 (1)運行容器并寫入驗證內容(改變容器存儲層內容) (2)另起終端制

    2024年02月11日
    瀏覽(107)
  • Docker容器學習:Dockerfile制作Web應用系統(tǒng)nginx鏡像

    Docker容器學習:Dockerfile制作Web應用系統(tǒng)nginx鏡像

    目錄 編寫Dockerfile 1.文件內容需求: 2.編寫Dockerfile: 3.開始構建鏡像 ?4.現(xiàn)在我們運行一個容器,查看我們的網(wǎng)頁是否可訪問 推送鏡像到私有倉庫 1.把要上傳的鏡像打上合適的標簽 2.登錄harbor倉庫 3.上傳鏡像 1.文件內容需求: 基于centos基礎鏡像。 指定作者信息。 安裝nginx服

    2024年02月11日
    瀏覽(119)
  • 【云原生】Docker鏡像的創(chuàng)建
Dockerfile 多階段構建原理和使用場景

    【云原生】Docker鏡像的創(chuàng)建 Dockerfile 多階段構建原理和使用場景

    創(chuàng)建鏡像有三種方法,分別為【基于已有鏡像創(chuàng)建】、【基于本地模板創(chuàng)建】以及【基于Dockerfile創(chuàng)建】。 (1)首先啟動一個鏡像,在容器里做修改 ?docker run -it --name web centos:7 /bin/bash ? ? #啟動容器 ?? ?yum install -y epel-release ?#安裝epel源 ?yum install -y nginx ? ? ? ? #安裝ng

    2024年02月12日
    瀏覽(30)
  • docker (九)-進階篇-dockerfile制作zabbix鏡像(帶python3環(huán)境)

    環(huán)境說明:根據(jù)前文docker (七)部署zabbix進行zabbix告警配置時,發(fā)現(xiàn)zabbix沒有腳本所需要的python3環(huán)境,也沒有yum環(huán)境 參考?https://www.cnblogs.com/daniel-ming/p/15341636.html ? ? ? ? ?Zabbix docker鏡像 build Python3_docker zabbixserver python-CSDN博客 容器起不來...查看日志 ? ? ?7:20240220:105203.7

    2024年02月22日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包