dockerfile:創建鏡像的方式,船艦自定義的鏡像

dockerfile:創建鏡像的方式,船艦自定義的鏡像

包括配置文件,掛載點,對外暴露的端口,設置環境變量

docker創建鏡像的方式

1、基于已有鏡像進行創建。

根據官方提供的鏡像源,創建鏡像,然后拉起容器,只能提供基礎的功能,擴展性的功能還是需要自定義(進入容器進入操作)

2、基于模板進行創建

3、dockerfile

聯合文件系統(UnionFS),docker鏡像的基礎

鏡像通過分層進行繼承,特性:一次同時可以加載多個文件系統,但是從外面來看,就是一個文件系統。

docker鏡像實際上就是由一層一層的文件系統組成,這種層級的文件系統就是UnionFS

每一層都是layers,每一層都包含文件系統的一部分,這些層次疊加在一起,最終形成的就是rootfs

bootfs:宿主機提供的內核和引導程序

rootfs:即使容器的操作系統,載dockerfile中,我們可以自己指定

rootfs是多個基礎鏡像和應用鏡像結合起來的只讀層,鏡像實際上就是一個只讀文件

容器基于鏡像實例,運行起來之后,容器變成可讀可寫層

在dockerfile當中每創建一個指定都是一個鏡像層

鏡像層會被緩存和復層

一旦有一層鏡像失敗,所有的鏡像層都會失敗,鏡像也不會創建。

一旦定義好了鏡像層是不可變的,你在某一層當中添加一個新的命令,但是下一層刪除了指令,鏡像中基于這個命令創建的文件依然存在,但是在容器中看不到

1、touch 123

dockerfile的核心:用戶的個性化定制docker的鏡像

dockerfile的結構:

1、基礎鏡像信息

2、維護者信息

3、鏡像的操作指令

4、容器啟動時,執行的命令

nginx定義好了容器執行的命令 /bin/bash,覆蓋了容器內的標準輸出

dockerfile的語法

FROM:就是指定基礎鏡像信息嗎,指定容器的操作系統。

MAINTAINER:指定維護者信息(可有可無)

RUN:在基礎的鏡像上執行的命令,每個run就是一層,分層越多鏡像越大

ENRYPOINT:設置容器運行時的默認命令(理解為容器內部運行的主程序)

CMD:指定容器運行時的默認命令(docker run 后面加了其他的命令,cmd的指令將會被覆蓋)

EXPOSE:暴露端口(指定容器的運行端口)

ENV:設置環境變量,環境變量可以被RUN命令使用(聲明容器運行需要的環境變量)

ADD:復制和解壓,解壓不支持.zip和.tar 只能解壓tar.gz tar.bz2,可以支持url地址解壓和復制

COPY:復制文件,不能解壓,而且只能復制本地文件,文件要和dockerfile在一個目錄(官方推薦復制用copy)

VOLUME:創建一個容器內的掛載點,既可以為宿主機掛載,也可以供容器掛載。

USER:設置運行鏡像時使用的用戶或者UID(可以不加)

WORKDIR:為后續指令設置的工作的目錄

ONBUILD:這個鏡像可以被其他鏡像引用,需要這個命令

ARG:傳參,用于創建容器時,傳遞參數。ENV用于容器運行時設置環境變量。

CMD和ENTRYPOINT的區別:

都是可以為作為容器啟動時的默認命令

區別:

1、CMD可以把參數傳給ENTRYPOINT

2、多個ENTRYPOINT和多個CMD只會運行最后一個(一個dockerfile當中只會有一個ENTRYPOINT和cmd)

3、ENTRYPOINT的指令不會被覆蓋,CMD的指令如果在docker run后面加上輸出會被覆蓋

4、ENTRYPOINT的指令在容器啟動時執行,都會成為容器的主進程,主進程負責接收信號,處理容器的聲明周期,主進程退出,容器也講終止運行

RUN命令的優化:

主要是減少鏡像的層數,把多個run命令寫在一塊。

&&符號:

RUN yum -y install nginx && make -j 4 && make install

前一個命令執行成功才會執行下一個命令。

可以使用;符號:

RUN yum -y install nginx ; make -j 4 ; make install

不管前一個命令是否成功,后面的命令都會執行

||符號

如果前一個命令執行失敗,才會執行下一個命令

反斜杠\:換行

RUN yum -y install nginx \

&& maker -j 4 \

&& make install

可讀性更高

copy和add之間區別

copy和add都可以把本地文件復制到鏡像中 但是官方推薦,如果是復制,使用copy

區別:add可以解壓,如果是一個壓縮問價,add在復制后會自動解壓(tar.gz和tar.bz2)可以支持URL下載源文件,只能支持下載但是不能解壓,通過URL拷貝的文件無法自動解壓

copy只能復制,而且只能是本地文件,不支持URL路徑

centos7構建一個apache的dockerfile(編譯安裝):

docker build -t nginx:wqb5 .

docker run -itd --name nginx8 -p 1212:80 nginx:wqb5

FROM centos:7 AS first
MAINTAINER "this is my apache <wqb>"
RUN yum -y install gcc gcc-gcc+ make pcre pcre-devel expat-devel perl
ADD apr-1.6.2.tar.gz /opt
ADD apr-util-1.6.0.tar.gz /opt
ADD httpd-2.4.29.tar.bz2 /opt
RUN mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr && mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util &&\
cd /opt/httpd-2.4.29 &&\ ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &&\
make -j 4 && make install#二層構建:FROM centos:7COPY --from=first /usr/local/httpd /usr/local/httpdRUN yum -y install pcre pcre-devel expat-devel perlEXPOSE 80
CMD ["/usr/local/httpd/bin/apachectl","-D","FOREGROUND"]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215254.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IP與以太網的轉發操作

TCP模塊在執行連接、收發、斷開等各階段操作時&#xff0c;都需要委托IP模塊將數據封裝成包發送給通信對象。 網絡中有路由器和集線器兩種不同的轉發設備&#xff0c;它們在傳輸網絡包時有著各自的分工。 (1)路由器根據目標地址判斷下一個路由器的位置 (2)集線器在子網中將網…

docker的鏡像創建 dockerfile

dockerfile Dokcer鏡像的創建 創建鏡像有三種方法&#xff0c;分別為【基于已有鏡像創建】、【基于本地模板創建】以及【基于Dockerfile創建】。 &#xff08;1&#xff09;首先啟動一個鏡像&#xff0c;在容器里做修改 docker run -itd --name web centos:7 /bin/bash …

k8s pod日志寫入ELK的具體實現

shigen堅持更新文章的博客寫手&#xff0c;擅長Java、python、vue、shell等編程語言和各種應用程序、腳本的開發。記錄成長&#xff0c;分享認知&#xff0c;留住感動。 在上一部分&#xff0c;shigen講到了k8spod的日志寫入ELK的三種技術方案&#xff0c;并在最后展示了一下我…

QMainWindow和QWidget有什么區別

2023年12月12日&#xff0c;周二上午 QMainWindow 和 QWidget 是 Qt 框架中兩個不同的類&#xff0c;用于創建用戶界面的窗口部件。它們之間的主要區別在于它們的設計和用途。 QMainWindow: QMainWindow 是用于創建主窗口的類&#xff0c;通常包含了一個應用程序的主要界面。…

NFR 數字權益開發流程

NFR 在技術開發領域通常指的是“非功能性需求”&#xff08;Non-Functional Requirements&#xff09;&#xff0c;這些是描述系統屬性如安全性、性能、可用性、兼容性等方面的需求。然而&#xff0c;如果在這里 NFR 被用來指代與數字權益或非同質化代幣&#xff08;NFT&#x…

C++ 構造函數 調用方法

構造函數 調用方法 //括號法&#xff08;常用&#xff09; Person p1(100); //有參構造 Person p2(p1); //拷貝構造//注意&#xff1a;不要用括號法調用無參構造&#xff0c;會和 函數聲明 混淆。//顯示法 Person p3 Person(); //無參構造 Person p4 Person(100); //有參構…

【USRP】LFTX / LFRX

LFTX/LFRX 設備概述 LFTX 子板利用兩個高速運算放大器來允許 0-30 MHz 的傳輸。該板僅接受實模式信號。LFTX 非常適合 HF 頻段的應用&#xff0c;或使用外部前端來上變頻和放大中間信號的應用。LFTX 的輸出可以獨立處理&#xff0c;也可以作為單個 I/Q 對進行處理。 主要特征…

Python - 搭建 Flask 服務實現圖像、視頻修復需求

目錄 一.引言 二.服務構建 1.主函數 upload_gif 2.文件接收 3.專屬目錄 4.圖像修復 5.gif2mp4 6.mp42gif 7.圖像返回 三.服務測試 1.服務啟動 2.服務調用 四.總結 一.引言 前面我們介紹了如何使用 Real-ESRGAN 進行圖像增強并在原始格式 jpeg、jpg、mp4 的基礎上…

HeartBeat監控Redis狀態

目錄 一、概述 二、 安裝部署 三、配置 四、啟動服務 五、查看數據 一、概述 使用heartbeat可以實現在kibana界面對redis服務存活狀態進行觀察&#xff0c;如有必要&#xff0c;也可在服務宕機后立即向相關人員發送郵件通知 二、 安裝部署 參照文章&#xff1a;HeartBeat監…

Java實現多線程的三種方式

Java 有三種方式實現多線程&#xff0c;繼承 Thread 類、實現 Runnable 接口、實現 Callable 接口。還有匿名內部類方式&#xff0c;Lambda 表達式方式簡化開發。 1、Thread Thread 創建線程方式&#xff1a;創建線程類 start() 方法底層其實是給 CPU 注冊當前線程&#xff0…

關于IDEA中maven的作用以及如何配置MAVEN

關于IDEA中maven的作用以及如何配置MAVEN 1、Maven是什么2、Idea中對于Maven的配置3、下載依賴時&#xff0c;Idea下方的顯示3.1、Maven中央倉庫的下載顯示界面3.2、阿里云倉庫的下載顯示界面 4、Maven在Idea中的使用4.1、clean4.2、validate4.3、compile4.4、test&#xff08;…

智能優化算法應用:基于人工蜂群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于人工蜂群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于人工蜂群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.人工蜂群算法4.實驗參數設定5.算法結果6.…

java智能異常處理

標題&#xff1a;優雅處理異常&#xff1a;Java智能異常處理的最佳實踐 摘要&#xff1a;在軟件開發中&#xff0c;異常處理是一項至關重要的任務。本文將介紹Java中的智能異常處理技術&#xff0c;通過合理的異常處理規范和最佳實踐&#xff0c;幫助開發者優雅地處理異常情況…

從零構建屬于自己的GPT系列5:模型部署1(文本生成函數解讀、模型本地化部署、文本生成文本網頁展示、代碼逐行解讀)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1&#xff1a;數據預處理 從零構建屬于自己的GPT系列2&#xff1a;模型訓…

2023年國賽高教杯數學建模A題定日鏡場的優化設計解題全過程文檔及程序

2023年國賽高教杯數學建模 A題 定日鏡場的優化設計 原題再現 構建以新能源為主體的新型電力系統&#xff0c;是我國實現“碳達峰”“碳中和”目標的一項重要措施。塔式太陽能光熱發電是一種低碳環保的新型清潔能源技術[1]。 ??定日鏡是塔式太陽能光熱發電站&#xff08;以下…

ES6-import后是否有{}的區別

在ES6中&#xff0c;import語句用于導入其他模塊中的變量、函數、類等。在使用import語句時&#xff0c;可以選擇是否使用花括號{}來包裹導入的內容&#xff0c;這會影響導入的內容的使用方式。 1.使用花括號{}&#xff1a; 當使用花括號{}時&#xff0c;表示只導入指定的變量…

【Fastadmin】根據Fieldlist鍵值組件做一個等級配置的完整示例

目錄 1.效果展示&#xff1a; ?編輯 2.建表&#xff1a; 3.html頁面 4.controller控制器 5.js 6.model 1.效果展示&#xff1a; 2.建表&#xff1a; 表名&#xff1a;fa_xxfb_config /*Navicat Premium Data TransferSource Server : rootSource Server Type …

深入Docker命令行:探索常用命令和實用技巧

Docker命令行界面是每個容器開發者的得力工具。在這篇文章中&#xff0c;將深入探討一系列常用的Docker命令&#xff0c;以及一些實用技巧&#xff0c;通過更豐富的示例代碼&#xff0c;幫助大家更全面地理解和運用Docker命令行工具。 1. Docker基本命令 1.1 鏡像操作 深入了…

用 CSS 寫一個漸變色邊框的輸入框

Using_CSS_gradients MDN 多漸變色輸入框&#xff0c;群友問了下&#xff0c;就試著寫了下&#xff0c;看了看 css 漸變色 MDN 文檔&#xff0c;其實很簡單&#xff0c;代碼記錄下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta ch…

使用FFMPEG轉碼,轉單聲道,轉標準WAV,轉PCM

本文為使用FFMPEG命令行的方式處理音頻&#xff0c;來獲取想要得到的音頻文件。 零、使用命令行查看編碼封裝信息 格式&#xff1a;ffprobe.exe -show_format inputfile 例子&#xff1a;ffprobe.exe -show_format .\stereo_44_16bit.wav 運行結果為下圖&#xff1a; 如圖可…