Docker 高級管理--Dockerfile鏡像制作

二:Dockerfile 語法基礎

1:基礎指令
(1)FROM
指定基礎鏡像,所有的 Dockerfile 都必須以 FROM 指令開頭,它定義了新鏡像基于哪個基礎鏡像構建。

FRoM ubuntu:20.04

(2)MAINTAINER(已奔用,推薦使用LABEL)
用于指定鏡像的維護者信息。不過在較新的Docker版本中,推薦使用 LABEL 指今來替代

MAINTAINER John Doe <johndoe@example.com>

(3)LABEL

為鏡像添加元數據,這些元數據可以是任何信息,如作者、版本、描述等,方便對鏡像進行管理和識別。

LABEL version="1.0" description="This is a sample image"
maintainer="John'

2:環境設置指令
(1)ENV
設置環境變量,這些環境變量會在容器運行時持續存在,并且可以被容器內的應用程序使用。

ENV MYSOL_ROOT_PASSWORD=password

(2)ARG
定義在構建鏡像時可以傳遞的參數,這些參數只在鏡像構建過程中有效。

ARG VERSION=1.0

3:文件操作指令
(1)CPOY
將本地文件或目錄復制到鏡像中。

COPY app.py /app/

(2)ADD
與 COPY 類似,也是將文件或目錄復制到鏡像中,但 ADD 還支持從遠程 URL 下載文件和自動解壓玉縮文件。

ADD http://example.com/file.tar.gz /app/

3)WORKDIR
設置工作目錄,后續的 RUN、CMD、ENTRYPOINT、COPY 和 ADD 等指令都會在這個工作目錄下執行。

WORKDIR /app

4:執行命令指令
(1)RUN
在構建鏡像的過程中執行命令,常用于安裝軟件包、配置環境等操作。

RUN apt-get update && apt-get install -y python3

(2)CMD
為容器提供默認的執行命令。一個 Dockerfile 中只能有一個 CMD 指令,如果有多個,只有最后個會生效。當使用 docker run 啟動容器時,如果沒有指定其他命令,就會執行 CMD 指定的命令。

CMD ["python3","app.py"]

3)ENTRYPOINT
配置容器啟動時執行的命令,與 CMD 類似,但 ENTRYPOINT 的命令不會被 docker run 后面的命令覆蓋,而是將 docker run 后面的命令作為參數傳遞給 ENTRYPOINT 命令。

ENTRYPOINT ["python3"]
CMD ["app.py"]

5:網絡和暴露端口指令
(1)EXPOSE
聲明容器在運行時會監聽的端口,但這只是一個聲明,并不會實際進行端口映射。在使用 dockerrun 啟動容器時,需要使用-p或-P選項進行端口映射。

EXPOSE 8080

6:容器掛載指令
(1)VOLUME
創建一個可以從本地主機或其他容器掛載的掛載點,用于持久化數據或共享數據

VOLUME ["/app/data"]

三:Dockerfile 系例實施
1:案例 1--構建 nginx 容器
(1)拉取 centos 鏡像

docker pull centos:7

(2)創建 dockerfile 工作目錄

(3)創建 dockerfile

(4)編寫nginx 啟動腳本

(5)用dockerfile 創建鏡像

(6)啟動容器

(7)訪問nginx 網站

http://192.168.10.101:8083

2:案例 2--構建 Tomcat 容器
(1)創建工作目錄

(2)創建 dockerfile 文件

(3)創建啟動腳本

(4)用dockerfile 生成鏡像

(5)運行容器

docker run -d -i -p 8080:8080 --name tomcat01 mytomcat

(6)訪問 tomcat 網站

3:案例 3--構建 mysq1 容器
(1)創建工作目錄

(2)創建 dockerfile 文件

(3)編寫mysq1 初始化腳本

(4)生成鏡像

docker bulid -t mysql .

(5)創建容器

docker run -id -p 3306:3306 mysql
yum -y install mysql
mysql -uroot -p123456 -h 192.168.10.101 -p 3306

4:案例 4--構建 php
(1)創建工作目錄

mkdir /opt/php
cd /opt/php

(2)創建dockerfile(yum 安裝安裝)

vim dockerfile

(3)生成鏡像

docker build -t myphp .

(4)啟動容器

docker run -d -i -p 9000:9000 myphp /bin/bash

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

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

相關文章

LeetCode 692題解 | 前K個高頻單詞

前K個高頻單詞一、題目鏈接二、題目三、分析四、代碼一、題目鏈接 692.前K個高頻單詞 二、題目 三、分析 本題目我們利用map統計出次數以后&#xff0c;返回的答案應該按單詞出現頻率由高到低排序&#xff0c;有一個特殊要求&#xff0c;如果不同的單詞有相同出現頻率&#…

C++ 中的 std::bind 用法

在現代 C++ 編程中,std::bind 是一個非常強大但常常被誤解的工具。它允許我們將函數(包括成員函數)、參數進行綁定,并生成一個新的可調用對象。這在編寫異步回調、事件處理、適配器模式等場景中非常有用。 ?? 一、std::bind 是什么? std::bind 是定義在 <functiona…

Spring Boot秒級冷啟動方案:阿里云FC落地實戰(含成本對比)

Spring Boot秒級冷啟動方案&#xff1a;阿里云FC落地實戰&#xff08;含成本對比&#xff09;一、冷啟動痛點與FC核心優勢1. 傳統Spring Boot冷啟動瓶頸2. 阿里云FC核心能力二、秒級冷啟動架構設計1. 整體架構2. 關鍵組件選型三、5大核心優化策略1. 應用瘦身&#xff08;JAR包精…

搜索引擎vs向量數據庫:LangChain混合檢索架構實戰解析

本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型應用開發學習視頻及資料&#xff0c;盡在聚客AI學院。一、LangChain搜索工具實戰&#xff1a;集成DuckDuckGo實現實時信息查詢 核心場景&#xff1a;解決大模型知識滯后問題&#xff0c;通過搜索引擎獲取實…

【算法】貪心算法:將數組和減半的最少操作次數C++

文章目錄前言題目解析算法原理代碼示例策略證明前言 題目的鏈接&#xff0c;大家可以先試著去做一下再來看一下思路。2208. 將數組和減半的最少操作次數 - 力扣&#xff08;LeetCode&#xff09; 題目解析 要認真去把題目看一遍&#xff0c;畫出題目中的有用信息。 示例一定是…

git異常退出,應該是內存不足

這次下載代碼&#xff1a; 公司虛擬機到了一定步驟&#xff0c;肯定退出。而家里的虛擬機則完全正常。我把家里的虛擬機復制到公司&#xff0c;還是崩潰。 差異在哪里&#xff1f;公司電腦虛擬機內存設置為10G&#xff0c;家里的16。因為家里電腦64G內存。 后來確認&#xff…

機器學習13——支持向量機下

支持向量機下 非線性支持向量機&#xff08;Non-linear SVMs&#xff09;詳解 核心思想 當數據在原始空間線性不可分時&#xff0c;通過**核技巧&#xff08;Kernel Trick&#xff09;**將數據映射到高維特征空間&#xff0c;使其在該空間中線性可分。 比如以下的樣本在一維空間…

GPT-4和Claude哪個好

選擇GPT-4還是Claude?這就像在問“蘋果還是橙子哪個更好”——?答案完全取決于你的具體需求?。兩者都是頂尖大語言模型,但各有特色。 我為你做了詳細對比,幫你快速定位哪個更適合你: ?? 核心能力對比 特性GPT-4 (OpenAI)Claude (Anthropic)?語言理解/推理?頂尖水平,…

RHCE考試 ——筆記

RHCE模擬測試exam_start ehcerht-vmctl start all考前說明? 請勿更改 IP 地址。DNS 解析完整主機名&#xff0c;同時也解析短名稱。? 所有系統的 root 密碼都是 redhat? Ansible 控制節點上已創建用戶賬戶 devops。可以使用 ssh 訪問? 所需的所有鏡像保存在鏡像倉庫 utilit…

信創 CDC 實戰 | TiDB 實時入倉難點與解決方案解析(以 ClickHouse 為例)

國產數據庫加速進入核心系統&#xff0c;傳統同步工具卻頻頻“掉鏈子”。本系列文章聚焦 OceanBase、GaussDB、TDSQL、達夢等主流信創數據庫&#xff0c;逐一拆解其日志機制與同步難點&#xff0c;結合 TapData 的實踐經驗&#xff0c;系統講解從 CDC 捕獲到實時入倉&#xff0…

Linux修煉:自動化構建make/Makefile

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《C修煉之路》、《Linux修煉&#xff1a;終端之內 洞悉真理…

GaussDB 分布式部署下創建表方法

1、問題現象 分布式集群采用水平分表的方式,將業務數據表的元組/行打散存儲到各個節點內。 2、技術背景 通過全并行數據處理技術和快速定位到數據存儲位置等手段可極大提升數據庫性能,GaussDB分布式部署下可以創建倆種類型表,在做實際業務系統開發時根據業務場景創建不同表。…

Padavan路由器設置DNSmasq的DHCP Option

是下文的拓展&#xff1a;由于更換路由器為Padavan&#xff0c;需要配置DHCP option才能使得AC能夠納管AP 愛快路由器下水星&#xff08;Mercury&#xff09;無線管理器AC跨三層發現AP_愛快管理第三方ap-CSDN博客 DNSmasq全部配置請參考&#xff1a;Man page of DNSMASQ dhcp-…

Ubuntu 22.04 Server 虛擬機初始化配置與優化指南

? Ubuntu 22.04 本地/通用服務器初始化配置清單 1. 設置時區 sudo timedatectl set-timezone Asia/Shanghai2. 防火墻配置&#xff08;UFW&#xff09; sudo ufw enable sudo ufw default deny # 可選放通SSH或其他端口 sudo ufw allow 22/tcp # 查看狀態 sudo ufw status # 禁…

如何在服務器上運行一個github項目

一、事情的緣起 今天一個朋友向我推薦了小紅書上的一個視頻&#xff0c;我看了一下這是一個在演示TypeWords項目的視頻。這個項目是Github上采用vue來編寫的一個開源項目。我進入該項目后看到了給出的樣例網址2study.top&#xff0c;然后到上面看了一下。我發現這是一個通過打…

7.14 Java基礎|String 和StringBuilder

補充注意&#xff1a;1、StringBuilder 的 append 方法可以接收整數類型的參數&#xff0c;并將其自動轉換為字符串后添加到 StringBuilder 中2、該方法適用于所有基本數據類型&#xff08;如 long、double 等&#xff09;和對象&#xff08;通過調用其 toString() 方法&#x…

React 第六十九節 Router中renderMatches的使用詳解及注意事項

前言 renderMatches 是 React Router 的一個高級實用函數&#xff0c;用于根據路由匹配結果渲染對應的組件樹。它提供了對路由渲染過程的底層控制能力&#xff0c;特別適用于自定義路由渲染邏輯的場景。 一、基本概念和功能 renderMatches 函數的作用是將路由匹配結果轉換為 Re…

esp8266-01S實現PPM波形

esp8266-01雖然小眾&#xff0c;但是功能可不能少。因航模需要讓ESP8266-01生成PPM波形。#include <ESP8266WiFi.h> #include <Ticker.h> // 僅用于延時函數替代#define PPM_PIN 2 // 使用 GPIO2 (需斷開串口上傳時的連接) #define CHANNELS 4 // PPM通道數量…

使用 pytest 測試框架構建自動化測試套件之一

pytest 是一個非常靈活且強大的測試框架&#xff0c;它支持簡單的單元測試到復雜的功能測試。顯著特點是其簡潔的語法&#xff0c;可以無需繼承 TestCase 類直接使用函數來編寫測試用例&#xff0c;并通過 assert語句 進行斷言。還支持參數化測試、豐富的插件系統。 pytest自動…

nacos docker 配置

docker.io/nacos 項目中國可用鏡像列表 | 高速可靠的 Docker 鏡像資源 1、Docker 拉取鏡像 docker pull nacos/nacos-server:v2.1.0 2、創建宿主機掛載目錄 mkdir -p /mydata/nacos/logs/ mkdir -p /mydata/nacos/conf/ AI寫代碼 3、啟動nacos并復制文件到宿主機&#xff0…