Docker封裝鏡像、分發、部署實踐:nginx

在實際生產工作中,通常是沒法直接訪問公網的,但是有經常需要使用Docker部署應用,本文將介紹使用Docker從拉取nginx、打包、分發到加載部署nginx的全流程!

1 準備工作

1.1 安裝docker

請參考:Docker入門指南:1分鐘搞定安裝 + 常用命令,輕松入門容器化!-CSDN博客

1.2 配置鏡像地址

vim /etc/docker/daemon.json 
# 編輯/etc/docker/daemon.json文件,添加如下內容
{"registry-mirrors": ["https://proxy.1panel.live","https://docker.1panel.top","https://docker.1ms.run","https://docker.ketches.cn","https://docker.hpcloud.cloud","https://docker.1panel.live","http://mirrors.ustc.edu.cn","http://mirror.azure.cn","https://nrbewqda.mirror.aliyuncs.com","https://dmmxhzvq.mirror.aliyuncs.com"]
}
# 重新加載配置并重啟docker
systemctl daemon-reload
systemctl restart docker.service
# 驗證鏡像地址是否生效可用,能夠看到Registry Mirrors:說明正常
[root@node3 ~]# docker info
Client:Version:    27.3.1Context:    defaultDebug Mode: falseServer:Containers: 0Running: 0Paused: 0Stopped: 0Images: 1Server Version: 27.3.1Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: inactiveRuntimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311crunc version: v1.1.14-0-g2c9f560init version: de40ad0Security Options:seccompProfile: builtinKernel Version: 3.10.0-1160.el7.x86_64Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 2Total Memory: 7.777GiBName: node3ID: 11b2908d-4f1c-4d9f-9ea1-275e70e998f9Docker Root Dir: /var/lib/dockerDebug Mode: falseExperimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:https://proxy.1panel.live/https://docker.1panel.top/https://docker.1ms.run/https://docker.ketches.cn/https://docker.hpcloud.cloud/https://docker.1panel.live/http://mirrors.ustc.edu.cn/http://mirror.azure.cn/https://nrbewqda.mirror.aliyuncs.com/https://dmmxhzvq.mirror.aliyuncs.com/Live Restore Enabled: falseProduct License: Community EngineWARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@node3 ~]# 

2 拉取鏡像并運行容器

2.1 拉取鏡像

# 執行如下命令,拉取最新版鏡像
docker pull nginx:latest[root@node3 ~]# docker pull nginx:latest
latest: Pulling from library/nginx
7cf63256a31a: Downloading [===============================>                   ]  18.05MB/28.22MB
7cf63256a31a: Pull complete 
bf9acace214a: Pull complete 
513c3649bb14: Pull complete 
d014f92d532d: Pull complete 
9dd21ad5a4a6: Pull complete 
943ea0f0c2e4: Pull complete 
103f50cb3e9f: Pull complete 
Digest: sha256:9d6b58feebd2dbd3c56ab5853333d627cc6e281011cfd6050fa4bcf2072c9496
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@node3 ~]# 
# 查看拉取的鏡像
[root@node3 ~]# docker images|grep nginx
nginx                          latest    b52e0b094bc0   5 weeks ago   192MB
[root@node3 ~]# 

2.2 試運行容器

[root@node3 ~]# docker run --name mynginx -p 8080:80 -d nginx 5545a43d8e06cf1290dd35b08de0d8ae8a850880ada02a96c893f570269d4bae 
[root@node3 ~]#

參數解釋:

-d:后臺模式運行容器

-p 8080:80:將主機的8080端口映射到容器的80端口

--name mynginx:指定容器名稱為?mynginx

nginx:使用的鏡像名稱

2.3 驗證運行結果

[root@node3 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
5545a43d8e06   nginx     "/docker-entrypoint.…"   16 minutes ago   Up 16 minutes   0.0.0.0:8080->80/tcp, [::]:8080->80/tcp   mynginx
[root@node3 ~]# 

3 封裝并打包鏡像

3.1 保存鏡像為tar文件

docker save -o mynginx.tar nginx參數解釋:
-o my-nginx.tar:指定輸出文件名為mynginx.tar
nginx:要保存的鏡像名稱[root@node3 ~]# docker save -o mynginx.tar nginx
[root@node3 ~]# ls -lrht|grep mynginx.tar 
-rw-------  1 root    root    188M Mar 13 22:52 mynginx.tar
[root@node3 ~]# 

?3.2 壓縮tar文件(可選)

# 如果文件太大,可以壓縮tar文件,命令如下:
[root@node3 ~]# gzip mynginx.tar[root@node3 ~]# ls -lrht|grep mynginx.tar
-rw-------  1 root    root     68M Mar 13 22:52 mynginx.tar.gz
[root@node3 ~]# 

3.3 分發鏡像

# 將保存的進項分發到需要部署的主機上
[root@node3 ~]# scp mynginx.tar.gz root@192.168.10.30:/root/root@192.168.10.30's password: 
mynginx.tar.gz                                                                                                                                 100%   68MB  13.3MB/s   00:05    
[root@node3 ~]# 

4 加載鏡像

4.1 解壓壓縮包

[root@node1 ~]# gzip -d mynginx.tar.gz
[root@node1 ~]#ls |grep mynginx.tar
mynginx.tar
[root@node1 ~]# 

4.2 加載鏡像

[root@node1 ~]# docker load -i mynginx.tar
5f1ee22ffb5e: Loading layer [==================================================>]  77.84MB/77.84MB
c68632c455ae: Loading layer [==================================================>]  118.3MB/118.3MB
cabea05c000e: Loading layer [==================================================>]  3.584kB/3.584kB
791f0a07985c: Loading layer [==================================================>]  4.608kB/4.608kB
f6d5815f290e: Loading layer [==================================================>]   2.56kB/2.56kB
7d22e2347c12: Loading layer [==================================================>]   5.12kB/5.12kB
55e9644f21c3: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@node1 ~]# 

4.3 驗證加載情況

[root@node1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    b52e0b094bc0   5 weeks ago   192MB
[root@node1 ~]# 

4.4 運行容器

[root@node1 ~]# docker run --name mynginx -p 8080:80 -d nginx
702bffa6db25fb688a2c3d2ac5c9d657abc492e8978342fc71aab97c7174c513
[root@node1 ~]# 

4.5 驗證運行結果

[root@node1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                                     NAMES
702bffa6db25   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp, [::]:8080->80/tcp   mynginx
[root@node1 ~]# 

5 總結

通過以上步驟,你就完成了鏡像的拉取、封裝、分發、以及在目標機器上加載鏡像并部署容器。

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

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

相關文章

LuaJIT 學習(5)—— string.buffer 庫

文章目錄 Using the String Buffer LibraryBuffer ObjectsBuffer Method Overview Buffer Creation and Managementlocal buf buffer.new([size [,options]]) local buf buffer.new([options])buf buf:reset()buf buf:free() Buffer Writersbuf buf:put([str|num|obj] [,……

vue3:request.js中請求方法,api封裝請求,方法請求

方法一 request.js // 封裝GET請求 export const get (url, params {}) > {return request.get(url, { params }); }; // 封裝POST請求 export const post (url, data {}) > {return request.post(url, data); }; api封裝 import { post } from /utils/request; …

Ollama+OpenWebUI本地部署大模型

OllamaOpenWebUI本地部署大模型 前言Ollama使用Ollama安裝Ollama修改配置Ollama 拉取遠程大模型Ollama 構建本地大模型Ollama 運行本地模型:命令行交互Api調用Web 端調用 總結 前言 Ollama是一個開源項目,用于在本地計算機上運行大型語言模型&#xff0…

【機器學習】基于t-SNE的MNIST數據集可視化探索

一、前言 在機器學習和數據科學領域,高維數據的可視化是一個極具挑戰但又至關重要的問題。高維數據難以直觀地理解和分析,而有效的可視化方法能夠幫助我們發現數據中的潛在結構、模式和關系。本文以經典的MNIST手寫數字數據集為例,探討如何利…

【redis】發布訂閱

Redis的發布訂閱(Pub/Sub)是一種基于消息多播的通信機制,它允許消息的**發布者(Publisher)向特定頻道發送消息,而訂閱者(Subscriber)**通過訂閱頻道或模式來接收消息。 其核心特點如…

C語言零基礎入門:嵌入式系統開發之旅

C語言零基礎入門:嵌入式系統開發之旅 一、引言 嵌入式系統開發是當今科技領域中一個極具魅力和挑戰性的方向。從智能家居設備到汽車電子系統,從智能穿戴設備到工業自動化控制,嵌入式系統無處不在。而C語言,作為嵌入式開發中最常…

K8S學習之基礎二十三:k8s的持久化存儲之nfs

K8S持久化存儲之nfs ? 在 Kubernetes (k8s) 中使用 NFS(Network File System)作為存儲解決方案是一種常見的方式,特別是在需要共享存儲的場景中。以下是關于如何在 Kubernetes 中使用 NFS 存儲的詳細說明: 1. 準備 NFS 服務器 …

【Rust】枚舉和模式匹配——Rust語言基礎14

文章目錄 1. 枚舉類型1.2. Option 枚舉 2. match 控制流結構2.1. match 對綁定值的匹配2.2. Option<T> 的匹配2.3. 通配模式以及 _ 占位符 3. if let 控制流4. 小測試 1. 枚舉類型 枚舉&#xff08;enumerations&#xff09;&#xff0c;也被稱作 enums。枚舉允許你通過…

【商城實戰(25)】解鎖UniApp移動端適配秘籍,打造完美商城體驗

【商城實戰】專欄重磅來襲&#xff01;這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建&#xff0c;運用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用戶、商品、訂單等核心模塊開發&#xff0c;再到性能優化、安全加固、多端適配&#xf…

《C++ Primer》學習筆記(二)

第二部分&#xff1a;C標準庫 1.為了支持不同種類的IO處理操作&#xff0c;標準庫定義了以下類型的IO&#xff0c;分別定義在三個獨立的文件中&#xff1a;iostream文件中定義了用于讀寫流的基本類型&#xff1b;fstream文件中定義了讀寫命名文件的類型&#xff1b;sstream文件…

MATLAB風光柴儲微網粒子群算法

本程序實現了風光柴儲微網中的粒子群優化&#xff08;PSO&#xff09;算法&#xff0c;用于優化微網的能源調度問題。具體來說&#xff0c;程序考慮了光伏發電、風力發電、柴油機發電&#xff08;柴儲&#xff09;&#xff0c;并使用粒子群算法來優化這些能源的調度&#xff0c…

解決Windows版Redis無法遠程連接的問題

&#x1f31f; 解決Windows版Redis無法遠程連接的問題 在Windows系統下使用Redis時&#xff0c;很多用戶會遇到無法遠程連接的問題。尤其是在配置了Redis并嘗試通過工具如RedisDesktopManager連接時&#xff0c;可能會報錯“Cannot connect to ‘redisconnection’”。今天&am…

解決 HTTP 請求中的編碼問題:從亂碼到正確傳輸

文章目錄 解決 HTTP 請求中的編碼問題&#xff1a;從亂碼到正確傳輸1. **問題背景**2. **亂碼問題的原因**2.1 **客戶端編碼問題**2.2 **請求頭缺失**2.3 **服務器編碼問題** 3. **解決方案**3.1 **明確指定請求體編碼**3.2 **確保請求頭正確**3.3 **動態獲取響應編碼** 4. **調…

VS Code 配置優化指南

目錄 一、安裝與基礎設置1. 安裝 VS Code2. 中文語言包 二、插件推薦三、常見配置項與優化1. 用戶 / 工作區設置2. 全局配置 / Settings Sync3. 常用設置示例 四、性能優化五、調試與終端配置1. 調試配置2. 內置終端配置 六、快捷鍵配置七、美觀與主題八、總結 VS Code&#xf…

基于NXP+FPGA永磁同步電機牽引控制單元(單板結構/機箱結構)

永磁同步電機牽引控制單元&#xff08;單板結構/機箱結構&#xff09; 永磁同步電機牽引控制單元&#xff08;TCU-PMSM&#xff09;用于牽引逆變器-永磁同步電機構成的牽引電傳動系統&#xff0c;采用軸控方式。執行高性能永磁同步電機復矢量控制策略&#xff0c;具有響應迅速…

/etc/sysconfig/jenkins 沒有這個文件

在 CentOS 或其他基于 Red Hat 的 Linux 系統中&#xff0c;/etc/sysconfig/jenkins 文件通常用來存儲 Jenkins 的配置參數&#xff0c;例如 JENKINS_HOME 的路徑。但是&#xff0c;如果你發現沒有這個文件&#xff0c;你可以通過以下幾種方式來解決或確認&#xff1a; 檢查 J…

conda 安裝軟件報錯 Found conflicts! Looking for incompatible packages.

問題描述&#xff1a; 利用 conda 安裝某包 conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc時發現報錯&#xff1a; Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with…

MySQL 衍生表(Derived Tables)

在SQL的查詢語句select …. from …中&#xff0c;跟在from子句后面的通常是一張擁有定義的實體表&#xff0c;而有的時候我們會用子查詢來扮演實體表的角色&#xff0c;這個在from子句中的子查詢會返回一個結果集&#xff0c;這個結果集可以像普通的實體表一樣查詢、連接&…

STM32配套程序接線圖

1 工程模板 2 LED閃爍 3LED流水燈 4蜂鳴器 5按鍵控制LED 6光敏傳感器控制蜂鳴器 7OLED顯示屏 8對射式紅外傳感器計次 9旋轉編碼器計次 10 定時器定時中斷 11定時器外部時鐘 12PWM驅動LED呼吸燈 13 PWM驅動舵機 14 PWM驅動直流電機 15輸入捕獲模式測頻率 16PWMI模式測頻率占空…

鴻蒙初級考試備忘

Module類型 Module按照使用場景可以分為兩種類型&#xff1a; Ability類型的Module&#xff1a; 用于實現應用的功能和特性。每一個Ability類型的Module編譯后&#xff0c;會生成一個以.hap為后綴的文件&#xff0c;我們稱其為HAP&#xff08;Harmony Ability Package&#x…