使用Dockerfile定制化鏡像和私有網盤案例

使用Dockerfile定制化鏡像和私有網盤案例

在這里插入圖片描述

鏡像的分層結構是docker很重要的環節,如同搭積木一樣。

也主要是為了節省資源。

理解docker build的工作原理

  • Docker在運行的時候分為Docker引擎,和客戶端工具。docker的引擎提供一組API,被稱為Docker Remote Api 而如果,docker命令這樣的客戶端工具,則是通過Api與Docker引擎交互完成的。

  • 當我們進行鏡像構建的時候,并非所有的定制都是依靠RUN指令來完成,也會優勢使用ADD 命令,COPY命令,而docker build 命令構建鏡像,其實并非在本地構建而是在服務端上構建,也就是docker引擎中構建,

  • 會有一個問題,在客戶端上,服務端框架中,如何獲得本地文件


  • 這里就引入了上下文的概念,當構建時候,用戶會指定構建鏡像上下文,docker build 命令收到這個路徑的指令,會將上下文的內容打包,給到Docker.

  • Docker引擎收到這個上下文后,展開就會獲得構建鏡像所需要的一切文件

  • 實際上Dockerfile的文件名并不是一定是Dockerfile ,和處于文件中,但是我們為了規范因此大家會默認使用Dockerfile為文件名,放置于構建鏡像的目錄中。

dockerfile的基礎語法

我這里簡單的介紹一下。

在這里插入圖片描述

構建私有網盤鏡像案例

案例的網址 [filebrowser/filebrowser: 📂 Web File Browser](https://github.com/filebrowser/filebrowser)大家可以玩玩

[root@docker-110 filebrowser-master]# docker build -t filebrower:v10 .

編寫一個centos系統的鏡像

# base image
FROM centos:7.8.2003# MAINTAINER
MAINTAINER xxx@zz.com# add epel
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak \&& curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \&& curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo \&& yum clean all && yum makecache# Necessary packages
RUN yum install -y  wget gcc gcc-c++ glibc make autoconf openssl openssl-devel ntpdata crontabs# change timzone to Asia/Shanghai
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

構建nginx的鏡像

# 編寫nginx的鏡像
# base image
FROM centos7.8:v1MAINTAINER zz@zz.comRUN useradd -M -s /sbin/nologin www
ADD nginx-1.19.2.tar.gz /usr/local/src# install Dependency package
RUN yum install openssl openssl-devel libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel libx
ml2 libxml2-dev libxslt-develWORKDIR /usr/local/src/nginx-1.19.2# make && make install
RUN ./configure --user=www --group=www --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module -
-with-http_realip_module    --with-http_addition_module    --with-http_xslt_module   --with-http_image_fi
lter_module    --with-http_geoip_module  --with-http_sub_module  --with-http_dav_module --with-http_flv_m
odule    --with-http_mp4_module --with-http_gunzip_module  --with-http_gzip_static_module  --with-http_au
th_request_module  --with-http_random_index_module   --with-http_secure_link_module   --with-http_degrada
tion_module   --with-http_stub_status_module && make && make install# configure
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
COPY fastcgi_params /usr/local/nginx/conf/fastcgi_params
RUN mkdir /usr/local/nginx/conf/conf.d
COPY www.conf /usr/local/nginx/conf/conf.d/www.confEXPOSE 80CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

定制化mysql鏡像

FROM centos:7.8:v1
MAINTAINER zz@zz.comCOPY mysql-community-common-5.7.31-1.el7.x86_64.rpm /root/mysql-community-common-5.7.31-1.el7.x86_64.rpm
COPY mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm /root/mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
COPY mysql-community-client-5.7.31-1.el7.x86_64.rpm  /root/mysql-community-client-5.7.31-1.el7.x86_64.rpm
COPY mysql-community-libs-5.7.31-1.el7.x86_64.rpm  /root/mysql-community-libs-5.7.31-1.el7.x86_64.rpm
COPY mysql-community-server-5.7.31-1.el7.x86_64.rpm  /root/mysql-community-server-5.7.31-1.el7.x86_64.rpm
COPY postfix-2.10.1-9.el7.x86_64.rpm  /root/postfix-2.10.1-9.el7.x86_64.rpmWORKDIR /root
RUN yum remove mysql-libs -y
RUN yum -y install *.rpmADD initialization.sql /root/initialization.sql
ADD my.cnf /etc/my.cnf
ADD setup.sh /root/setup.shRUN yum clean all && rm -rf /root/*.rpm && chmod +x /root/setup.shEXPOSE 3306CMD ["/root/setup.sh"]

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

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

相關文章

分享一些實用的PHP函數(對比js/ts實現)

檢查數組所有元素是否滿足給定條件 如果提供的函數對數組的所有元素返回 true,則返回 true,否則返回 false。 思路 實現思路如下: 使用數組的filter方法對數組執行給定的函數,然后使用count方法獲取執行后的結果,再和count方法…

HuggingFace下載的模型緩存到了C盤,如何安全遷移到其他盤

HuggingFace下載的模型緩存到了C盤,如何安全遷移到其他盤 ? 方法一:通過環境變量永久遷移緩存目錄(**推薦**)步驟如下:1?? 在 D 盤創建一個目錄(比如):2?? 設置環境變量&#x…

vue 開啟 source-map 后構建速度會很慢

vue.config.js 的 configureWebpack.devtool 設置為 source-map 后,編譯速度會變慢,嚴重影響開發進度。 改善方法: 一:改為 module-eval-source-map 改為 module-eval-source-map 在打包速度和源碼信息還原程度都屬于良好程度。…

三維空間數據格式全景圖:OSGB | 3Dtiles | I3S | S3M

前言 當城市數字孿生遇上國產化替代,開發者該如何選型? ——深入解析四大主流格式的技術基因與落地場景 🔮 趨勢預言: 2025年國土空間規劃全面實景三維化 ? S3M市占率將突破60%Cesium開源生態持續領跑Web端 ? 3Dtiles仍是跨國項…

【服務器】服務器選型設計

一、服務器產品說明 1.1 基礎服務器說明 1.1.1、服務器產品分類與核心指標?? ??1. 通用分類體系?? ??類型?? ??適用場景?? ??代表產品指標?? 塔式服務器 中小企業應用 ≤2路CPU,32G內存,支持熱插拔HDD 機架服務器 數據中心主…

【C++】noexcept的作用

【C】noexcept的作用 noexcept是C11引入的關鍵字,用于指定函數是否會拋出異常。它既是一個修飾符也是一個操作符,在現代C編程中扮演著重要角色。 一、noexcept的基本概念 noexcept主要有兩種形式: 無條件形式?:void func() n…

Docker 到底是個什么?

Docker 技術全面解析:從安裝到應用 一、引言 在當今的軟件開發和運維領域,Docker 已經成為了一個不可或缺的工具。它以其輕量級、可移植性和高效性等特點,改變了開發者和運維人員的工作方式,使得應用的打包、分發、運行變得更加…

Python 可迭代的對象、迭代器 和生成器(Sentence類第3版:生成器函數)

Sentence類第3版:生成器函數 實現相同功能,但卻符合 Python 習慣的方式是,用生成器函數代替 SentenceIterator 類。先看示例 14-5,然后詳細說明生成器函數。 示例 14-5 sentence_gen.py:使用生成器函數實現 Sentence…

5G自協商

好的&#xff0c;下面是一個基于裸機 C 環境的自協商實現示例代碼&#xff0c;支持 **最高 5G 并向下兼容**。這個代碼框架假設你使用的是 IEEE 802.3 規范下的 **MDIO** 接口和常見的 **Marvell PHY**&#xff08;或類似支持 5G/2.5G 的PHY&#xff09;。 c #include <std…

sublime 4200 激活

目錄 下載激活方式一&#xff1a;sublime 打開方式二&#xff1a;https://hexed.it 打開 下載 sublime官方下載 sublime_text_build_4200_x64.zip 激活 方式一&#xff1a;sublime 打開 1、復制 sublime_text.exe 為 sublime_text_activation.exe 2、直接使用 sublime_ 打開…

Ceph 和 MinIO

Ceph 和 MinIO 是兩種主流的分布式存儲系統&#xff0c;但它們的設計目標、架構和使用場景存在顯著差異。以下是清晰的對比解析&#xff1a; &#x1f9e9; 核心定位對比 維度CephMinIO定位統一存儲平臺&#xff08;塊/對象/文件&#xff09;純對象存儲&#xff08;S3兼容&…

cili3d筆記20 正交投影3d重建筆記1

正交視圖轉3d mostFrequentCluster.lines.forEach(line > {const [x1, y1, x2, y2] line;let xhat{x1,x2};let yhat{y1,y2};}); 沒考慮到側視圖 const clusters clusterLines(inputlines, 5);const lines3d:[number,number,number,number,number,number][][]const { mostM…

【Docker基礎】Docker容器生命周期管理:從創建到刪除的完整指南

目錄 1 容器生命周期概述 2 容器創建&#xff08;docker create&#xff09; 2.1 docker create命令詳解 2.2 創建流程解析 2.3 創建與運行的區別 3 容器啟動&#xff08;docker start&#xff09; 3.1 docker start命令詳解 3.2 啟動流程解析 3.3 啟動與運行的區別 …

Docker、Docker composer與Docker desktop

文章目錄 Docker、Docker composer與Docker desktop一、docker、docker composer、docker desktop1.1 Docker1.2 Docker Compose1.3 Docker Desktop1.4 三者之間的區別 二、docker desktop的安裝和換源2.1 前期準備WSL2 2.1 Docker Desktop 安裝下載 Docker Desktop安裝 Docker…

H5錄音、圖文視頻IndexDB儲存最佳實踐:用AI生成語音備忘錄

引言 早在大學的時候&#xff0c;我就期望做一款屬于自己的 APP&#xff0c;可惜那時不懂技術。現在有了技術&#xff0c;但卻沒有時間。好在 AI 的快速發展終于讓我完成了這個愿望。于是&#xff0c;我用半天的時間&#xff0c;用 AI 生成了一個純前端的 H5 程序&#xff1a;…

簡述C++ nlohmann/json 庫

目錄 JSON概述 nlohmann/json 庫的使用 創建json數組/對象 字符串解析&#xff08;parse反序列化&#xff09; 數據訪問 序列化 文件讀寫 JSON概述 JSON(JavaScrip Object Notation)是一種輕量級、跨語言的數據交換格式。它基于 ECMAScript 子集&#xff0c;以獨立于編程…

定制開發開源AI智能名片與S2B2C商城小程序的內容分發體系構建:基于“1+N“素材復用模型的創新實踐

摘要&#xff1a;在數字內容爆炸式增長的當下&#xff0c;本文針對內容分發效率低下的行業痛點&#xff0c;提出基于"定制開發開源AI智能名片S2B2C商城小程序"的一體化解決方案。通過構建"1篇長文10條長視頻20條短視頻10個平臺"的素材復用公式&#xff0c;…

c++26新功能—hive容器

一、容器的演進 科學進步的過程一般來說都是從先解決常用的、迫切的問題開始&#xff0c;然后再逐步解決一些少見不迫切的問題&#xff0c;直到最終解決到認知程度內的諸多問題。舉一個網上的例子&#xff0c;以前說咱們無法生產水筆的尖頭上的鋼球&#xff0c;其實這對于國內…

Kafka 源碼剖析:消息存儲與協議實現(二)

四、協議實現機制探秘 4.1 生產者協議 4.1.1 消息發送流程 Producer 在向 Kafka 集群發送消息時&#xff0c;首先會根據分區策略選擇目標分區 。常見的分區策略有輪詢、按消息鍵的哈希值分區以及自定義分區策略 。如果生產者在發送消息時指定了分區號&#xff0c;那么消息就…

Vue.js 與 TypeScript:最佳實踐

1. 引言 Vue.js 是一個漸進式、靈活的 JavaScript 框架&#xff0c;廣泛用于構建用戶界面和單頁應用&#xff08;SPA&#xff09;。而 TypeScript 是 JavaScript 的一個超集&#xff0c;添加了靜態類型和其他高級特性。將兩者結合使用&#xff0c;可以幫助開發者構建更具可維護…