dockerfile編寫入門

dockerfile 入門

  • 前提已經知道常用的docker和linux命令
    如容器的創建,運行, linux的文件命令,會上傳文件到linux等等

dockerfile簡介

之前我們所使用的鏡像都是別人構建好的,但是別人構建好的鏡像不一定能滿足我們的需求。為了滿足我們自己的某一些需求,此時我們就需要構建自己的鏡像,怎么構建?使用dockerfile。

dockerfile就是一個文本文件,在這個文本文件中可以使用docker所提供的一些指令來指定我們構建鏡像的細節,后面就可以使用這個dockerfile文件來構建自己的鏡像。

dockerfile文件內容一般分為4部分:

1、基礎鏡像信息(必選)

2、維護者信息(可選)

3、鏡像操作指令(可選)

4、容器啟動時執行的指令(可選)

常用命令

指令用法作用
FROMFROM image_name:tag指定一個構建鏡像的基礎源鏡像,如果本地沒有就會從公共庫中拉取,沒有指定鏡像的標簽會使用默認的latest標簽,可以出現多次,如果需要在一個dockerfile中構建多個鏡像。
MAINTAINERMAINTAINER user_name描述鏡像的創建者,名稱和郵箱
RUNRUN “command” “param1” “param2”用來執行一些命令,可以寫多條
ENVENV key value設置容器的環境變量,可以寫多條。
ADDADD source_dir/file將宿主機的文件復制到容器內,如果是壓縮文件,則復制后自動解壓
ENTRYPOINTENTRYPOINT “command” “param1” “param2”用來指定容器啟動時所執行的命令

入門案例

需求:使用dockerfile來構建一個包含Jdk17的centos7鏡像

分析:

1、基礎的鏡像的應該選擇centos:7 (FROM centos:7)

2、在自己所構建的鏡像中需要包含Jdk17,就需要把Jdk17添加到centos:7的基礎鏡像中

3、為了方便的去使用自己構建的鏡像中的Jdk17,就需要去配置環境變量

4、因為Jdk17僅僅是一個開發工具,并不是一個服務進程,因此在啟動容器的時候可以不指定任何的執行命令

實現步驟:

1、 準備環境

先下載好linux版本的jdk🔗官網
在這里插入圖片描述

將Jdk17的安裝包上傳到linux服務器
在這里插入圖片描述

我們是依賴 centos7鏡像創建, 要先拉取centos7的鏡像

docker pull centos:7

在這里插入圖片描述

2、在Jdk17壓縮包所在目錄下創建一個dockerfile文件

在這里插入圖片描述
內容為

FROM centos:7
RUN mkdir -p /usr/local/java   
ADD jdk-17.0.12_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV PATH=$PATH:$JAVA_HOME/bin

3、使用docker build命令構建鏡像

docker build -t <鏡像名>:<標簽> .
如果你不寫標簽(如 :1.0),默認就是 :latest。

在這里插入圖片描述

4、使用docker images查看鏡像構建情況

在這里插入圖片描述

5、使用自己所構建的鏡像創建容器,測試Jdk17的安裝情況

直接交互式運行(-it)就可以, 進入用java命令看看生效不

 docker run -it  --name test01 mycentos-jdk17 /bin/bashjava  -version

在這里插入圖片描述

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

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

相關文章

jenkins 啟動報錯

java.lang.UnsatisfiedLinkError: /opt/application/jdk-17.0.11/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory。 解決方案&#xff1a; yum install freetype-devel 安裝完成之后重啟jenkins。

Harness: 全流程 DevOps 解決方案,讓持續集成如吃飯般簡單

引言 在當今快速發展的軟件開發世界中,高效的 DevOps 工具變得越來越重要。Harness 作為一個開源的運維平臺,為開發和運維團隊提供了從代碼托管到 CI/CD 的全流程解決方案,同時實現自動化的開發環境和制品管理。這種集中化的工具可以顯著減少運維難度,提高團隊效率,真正解…

Kubernetes生產實戰(十七):負載均衡流量分發管理實戰指南

在Kubernetes集群中&#xff0c;負載均衡是保障應用高可用、高性能的核心機制。本文將從生產環境視角&#xff0c;深入解析Kubernetes負載均衡的實現方式、最佳實踐及常見問題解決方案。 一、Kubernetes負載均衡的三大核心組件 1&#xff09;Service資源&#xff1a;集群內流…

單脈沖前視成像多目標分辨算法——論文閱讀

單脈沖前視成像多目標分辨算法 1. 論文的研究目標及實際意義1.1 研究目標1.2 實際問題與產業意義2. 論文的創新方法及公式解析2.1 核心思路2.2 關鍵公式與模型2.2.1 單脈沖雷達信號模型2.2.2 匹配濾波輸出模型2.2.3 多目標聯合觀測模型2.2.4 對數似然函數與優化2.2.5 MDL準則目…

Java后端程序員學習前端之JavaScript

1.什么是JavaScript 1.1.概述 JavaScript是一門世界上最流行的腳本語言javaScript 一個合格的后端人員&#xff0c;必須要精通JavaScript 1.2.歷史 JavaScript的起源故事-CSDN博客 2.快速入門 2.1.引入JavaScript 1.內部標簽 <script>//.......</script> --…

AI編程: 使用Trae1小時做成的音視頻工具,提取音頻并識別文本

背景 在上個月&#xff0c;有網頁咨詢我怎么才能獲取視頻中的音頻并識別成文本&#xff0c;我當時給他的回答是去問一下AI&#xff0c;讓AI來給你答案。 他覺得我在敷衍他&#xff0c;大罵了我一頓&#xff0c;大家覺得我的回答對嗎&#xff1f; 小編心里委屈&#xff0c;我…

AI日報 · 2025年5月10日|OpenAI“Stargate”超級數據中心項目掀起美國各州爭奪戰

1、OpenAI“Stargate”超級數據中心項目掀起美國各州爭奪戰 《華盛頓郵報》披露&#xff0c;OpenAI 與 Oracle、SoftBank 合作推進的“Stargate”項目&#xff08;首期投資 1000?億美元&#xff0c;四年內總投資 5000?億美元&#xff09;已收到超過 250 份選址提案&#xff…

Windows系統Jenkins企業級實戰

目標 在Windows操作系統上使用Jenkins完成代碼的自動拉取、編譯、打包、發布工作。 實施 1.安裝Java開發工具包&#xff08;JDK&#xff09; Jenkins是基于Java的應用程序&#xff0c;因此需要先安裝JDK。可以從Oracle官網或OpenJDK下載適合的JDK版本。推薦java17版本&#x…

MySQL 索引和事務

目錄 一、MySQL 索引介紹 1、索引概述 2、索引作用 3、索引的分類 &#xff08;1&#xff09;普通索引 &#xff08;2&#xff09;唯一索引 &#xff08;3&#xff09;主鍵索引 &#xff08;4&#xff09;組合索引&#xff08;最左前綴&#xff09; &#xff08;5&…

Block Styler——字符串控件

字符串控件的應用 參考官方幫助案例&#xff1a;&#xff08;這個方式感覺更好&#xff0c;第二種方式也可以&#xff09;E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式&#xff1a; 讀取&#xff1a; //方法一 string0->GetProperti…

P2572 [SCOI2010] 序列操作 Solution

Description 給定 01 01 01 序列 a ( a 1 , a 2 , ? , a n ) a(a_1,a_2,\cdots,a_n) a(a1?,a2?,?,an?)&#xff0c;并定義 f ( l , r ) [ ( ∑ i l r a i ) r ? l 1 ] f(l,r)[(\sum\limits_{il}^r a_i)r-l1] f(l,r)[(il∑r?ai?)r?l1]. 執行 m m m 個操作&am…

RAG 2.0 深入解讀

作者&#xff1a;阿里云開發者 原文&#xff1a;https://zhuanlan.zhihu.com/p/1903437079603545114? 一、Introduction 過去一年可謂是RAG元年&#xff0c;檢索增強生成技術迅速發展與深刻變革&#xff0c;其創新與應用已深刻重塑了大模型落地的技術范式。站在2025年&#x…

代碼隨想錄第41天:圖論2(島嶼系列)

一、島嶼數量&#xff08;Kamacoder 99&#xff09; 深度優先搜索&#xff1a; # 定義四個方向&#xff1a;右、下、左、上&#xff0c;用于 DFS 中四向遍歷 direction [[0, 1], [1, 0], [0, -1], [-1, 0]]def dfs(grid, visited, x, y):"""對一塊陸地進行深度…

基于CNN的貓狗圖像分類系統

一、系統概述 本系統是基于PyTorch框架構建的智能圖像分類系統&#xff0c;專門針對CIFAR-10數據集中的貓&#xff08;類別3&#xff09;和狗&#xff08;類別5&#xff09;進行分類任務。系統采用卷積神經網絡&#xff08;CNN&#xff09;作為核心算法&#xff0c;結合圖形用…

linux搭建hadoop學習

linux搭建hadoop學習 下載安裝包: 海外資源可能需要翻墻或者找國內資源 cd /opt wget https://dlcdn.apache.org/hadoop/common/hadoop-2.10.2/hadoop-2.10.2.tar.gz tar -zxvf hadoop-2.10.2.tar.gz mv hadoop-2.10.2 hadoop配置環境變量 # 在/etc/profile文件中添加下面內…

Kubernetes生產實戰(十六):集群安全加固全攻略

Kubernetes集群安全加固全攻略&#xff1a;生產環境必備的12個關鍵策略 在容器化時代&#xff0c;Kubernetes已成為企業應用部署的核心基礎設施。但根據CNCF 2023年云原生安全報告顯示&#xff0c;75%的安全事件源于K8s配置錯誤。本文將基于生產環境實踐&#xff0c;系統講解集…

類加載機制詳解:雙親委派模型與打破它的方式

在復雜的 Java 系統中&#xff0c;類加載是最基礎卻常被忽略的一環。理解 JVM 的類加載機制&#xff0c;特別是 雙親委派模型&#xff08;Parent Delegation Model&#xff09;&#xff0c;是我們深入掌握熱部署、插件機制、ClassLoader 隔離、ClassNotFound 錯誤等問題的關鍵。…

Android SDK 開發中的 AAR 與 JAR 區別詳解

在 Android SDK 開發中&#xff0c;構建項目時我們常常會看到生成兩個不同的文件&#xff1a;一個是 build/outputs/aar/*.aar&#xff0c;另一個是 build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar。很多初學者會疑惑&#xff1a;它們之間有什么區別&am…

服務器配置錯誤導致SSL/TLS出現安全漏洞,如何進行排查?

SSL/TLS 安全漏洞排查與修復指南 一、常見配置錯誤類型? 弱加密算法與密鑰問題? 使用弱密碼套件&#xff08;如DES、RC4&#xff09;或密鑰長度不足&#xff08;如RSA密鑰長度<2048位&#xff09;&#xff0c;導致加密強度不足。 密鑰管理不當&#xff08;如私鑰未加密存…

Day20打卡-奇異值SVD分解

今天學習非特征篩選的方法&#xff1a; 知識點回顧&#xff1a; 線性代數概念回顧&#xff08;可不掌握&#xff09;奇異值推導&#xff08;可不掌握&#xff09;奇異值的應用 特征降維&#xff1a;對高維數據減小計算量、可視化數據重構&#xff1a;比如重構信號、重構圖像&am…