云原生技術與應用-容器技術技術入門與Docker環境部署

目錄

一.Docker概述

? 1.什么是Docker

? 2.Docker的優勢

? 3.Docker的應用場景?

? 4.Docker核心概念

二.Docker安裝

? 1.本安裝方式使用阿里的軟件倉庫

? 2.Docker鏡像操作

? 3.Docker容器操作


一.Docker概述

? ?因為 Docker 輕便、快速的特性,可以使應用達到快速迭代的目的。每次小的變更,馬上就可以看到效果,而不用將若干個小變更積攢到一定程度再變更。每次變更一小部分其實是一種非常安全的方式,在開發環境中能夠快速提高工作效率。

? ?Docker 容器能夠幫助開發人員、系統管理員、質量管理和版本控制工程師在一個生產環節中一起協同工作。制定一套容器標準能夠使系統管理員更改容器的時候,程序員不需要關心容器的變化,而更專注自己的應用程序代碼。從而隔離開了開發和管理,簡化了開發和部署的成本。

1.什么是Docker

? ?Docker 是一種開源的容器化平臺,核心作用是讓應用程序及其依賴能夠在隔離的容器環境中運行,實現 “一次構建,到處運行” 的效果。

簡單來說,它像一個 “標準化的包裝箱”:

  • 開發者將應用代碼、運行環境(如庫、配置)等打包進 “容器”,確保應用在任何支持 Docker 的環境(開發機、服務器、云平臺等)中都能以相同方式運行,解決了 “在我這能跑,到你那卻不行” 的兼容性問題。

  • 容器與宿主機系統共享內核,但擁有獨立的文件系統和資源(如內存、CPU),相比虛擬機更輕量、啟動更快(秒級),資源利用率也更高。

2.Docker的優勢

特性Docker 容器虛擬機
啟動速度秒級分鐘級
計算能力損耗幾乎無損耗 50% 左右
性能接近原生弱于
系統支持量(單機)上千個幾十個
隔離性資源限制完全隔離

容器技術的優勢主要體現在以下幾個方面:

  • 隔離性:不同的容器之間相互隔離,一個容器的故障或異常不會影響其他容器的運行,提高了應用的穩定性和安全性。

  • 可移植性:容器將應用及其依賴項打包成一個獨立的單元,使得應用可以在不同的環境中(如開發環境、測試環境、生產環境)無縫遷移和運行,避免了 “在我的機器上能運行,但在你的機器上不行” 的問題。

  • 資源高效利用:容器共享宿主機的操作系統內核,不需要為每個應用運行獨立的操作系統,大大減少了資源的浪費,提高了服務器的利用率。

  • 快速部署和擴展:容器的啟動速度非常快,通常只需要幾秒鐘,而且可以根據需要快速創建和銷毀容器,方便進行應用的快速部署和彈性擴展。

?3.Docker的應用場景

  • 開發環境管理:開發人員可以使用容器來創建一致的開發環境,確保團隊成員之間的環境一致性,提高開發效率。

  • 持續集成和持續部署(CI/CD):在 CI/CD 流程中,容器可以幫助實現應用的快速打包、測試和部署,實現自動化的軟件開發流程。

  • 微服務架構:容器技術非常適合微服務架構,每個微服務可以打包成一個獨立的容器,獨立開發、測試和部署,提高系統的可伸縮性和容錯性。

  • 云計算:云服務提供商可以利用容器技術為用戶提供更高效、靈活的計算資源,用戶可以根據自己的需求快速創建和管理容器化的應用。

4.Docker核心概念

  • 鏡像(Image):容器的 “模板”,包含運行應用所需的完整文件系統和配置。

  • 容器(Container):鏡像的 “實例”,是動態運行的進程,可被創建、啟動、停止、刪除。

  • Docker Engine:運行和管理容器的核心引擎。

  • Docker Hub:公共鏡像倉庫,可共享或獲取現成鏡像。

二.Docker安裝

1.本安裝方式使用阿里的軟件倉庫

關閉系統防火墻

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's=enforcing/=disabled/=' /etc/selinux/config

?下載Docker的repo文件

curl -o /etc/yum.repos.d/docker-ce.repo?https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

?替換倉庫地址

sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo

sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo

?更新索引文件并安裝Docker

dnf clean all
dnf makecache
dnf -y install docker-ce

添加國內鏡像站

mkdir /etc/docker/
cat>/etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com"]
}

開啟Docker服務

systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version

?優化內核參數

vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl -p

2.Docker鏡像操作

獲取鏡像

[root@localhost ~]# docker pull nginx:1.24.0

? ?docker pull 是 Docker 里的一個關鍵命令,其主要功能是從 Docker 鏡像倉庫(默認是 Docker Hub)中拉取鏡像到本地 Docker 主機?

查看鏡像信息

[root@localhost ~]# docker images

?? ? docker images 是 Docker 中一個基礎且常用的命令,主要用于列出本地 Docker 主機上的鏡像信息。docker images 命令會列出本地 Docker 主機上所有可用的鏡像,展示鏡像的基本信息,幫助用戶了解本地鏡像的存儲情況,包括鏡像的倉庫名、標簽、鏡像 ID、創建時間和大小等。?

查看鏡像的詳細信息

[root@localhost ~]# docker inspect c15

? ?docker inspect 是 Docker 中一個非常實用的命令,它用于返回 Docker 對象(如容器、鏡像、網絡、卷等)的底層詳細信息,這些信息以 JSON 格式展示,方便用戶深入了解 Docker 對象的配置和狀態。

修改鏡像標簽(老名字+新名字)

[root@localhost ~]# docker tag nginx1.24.0 nginx:v1
[root@localhost ~]# docker images

? ?在 Docker 中,docker tag 命令用于為現有的 Docker 鏡像添加一個新的標簽(tag)。標簽本質上是鏡像的一個別名,它可以讓你更方便地引用和管理鏡像,同時也有助于區分不同版本或用途的鏡像。?

刪除鏡像

(1)用鏡像名刪除

[root@localhost ~]# docker rmi nginx:v1

(2) 用ID刪除

[root@localhost ~]# docker rmi c15 

?存出鏡像和載入鏡像

(1)導入

[root@localhost ~]# docker save -o nginx nginx:1.24.0

? ?docker save 命令用于將一個或多個 Docker 鏡像保存為一個 tar 歸檔文件,這在需要將鏡像傳輸到其他 Docker 環境(如離線環境)時非常有用。

(2)導入

[root@localhost ~]# docker load<nginx

?3.Docker容器操作

創建容器

[root@localhost ~]# docker create -it centos:7

? ? docker create 是 Docker 中的一個重要命令,它的主要作用是基于指定的鏡像創建一個新的容器,但并不立即啟動該容器。?

查看所有的容器

[root@localhost ~]# docker create -it centos:7

? docker create 是 Docker 中的一個重要命令,它的主要作用是基于指定的鏡像創建一個新的容器,但并不立即啟動該容器。

容器的運行

[root@localhost ~]# docker start 5a

? docker start 是 Docker 中用于啟動已創建但處于停止狀態容器的命令。docker start 命令的主要作用是將之前使用 docker create 創建好但處于停止狀態的容器,或者之前已經停止運行的容器重新啟動起來。它會重新初始化容器的運行環境,加載相關資源,讓容器內的進程繼續執行。?

利用容器執行命令

[root@localhost ~]# docker run centos:7 /usr/bin/bash -c "ls /root"

? ? docker run 是 Docker 中最常用的命令之一,它的主要功能是基于指定的鏡像創建并啟動一個新的容器。

在啟動容器時持續在后臺運行

[root@localhost ~]# docker run -dit centos:7 /bin/bash

容器的終止?

[root@localhost ~]# docker stop b18 

? ? docker stop 命令用于優雅地停止一個或多個正在運行的 Docker 容器。docker stop 命令的主要作用是向正在運行的容器內的主進程發送終止信號,讓容器內的應用程序有機會正常關閉和清理資源,而不是像 docker kill 那樣直接強制終止容器。這有助于避免數據丟失或損壞,保證應用程序的正常關閉流程。?

容器導出

[root@localhost ~]# docker export 03f > centos7 

? ?docker export 命令用于將一個運行中的或已停止的 Docker 容器的文件系統內容導出為一個 tar歸檔文件。

容器導入生成鏡像

[root@localhost ~]# docker import centos7 centos7:test
[root@localhost ~]# docker images

?容器刪除

[root@localhost ~]# docker rm 7f

? ?docker rm 是 Docker 中用于刪除容器的基礎命令。?

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

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

相關文章

第2章,[標簽 Win32] :匈牙利標記法

專欄導航 上一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;Windows 數據類型 回到目錄 下一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;兼容 ASCII 字符與寬字符的 Windows 函數調用 本節前言 在初學編程的時候&#xff0c;我們給變量命令的…

從深度學習的角度看自動駕駛

從深度學習的角度看自動駕駛 A Survey of Autonomous Driving from a Deep Learning Perspective 我們探討了深度學習在自主駕駛中的關鍵模塊&#xff0c;例如感知&#xff0c;預測&#xff0c;規劃以及控制。我們研究了自主系統的體系結構&#xff0c;分析了如何從模塊化&…

java+vue+SpringBoo基于Hadoop的物品租賃系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.8 數…

【文獻筆記】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代碼&#xff1a;https://github.com/amazon-research/auto-cot 標題翻譯&#xff1a;大規模語言模型中的自動思維鏈提示 1. 內容介紹 在提示詞中提供思考步驟被稱為思維鏈&#xff08;CoT&#xff09;&…

【Behavior Tree】-- 行為樹AI邏輯實現- Unity 游戲引擎實現

行為樹簡易敵人AI 前言&#xff1a; 有些天沒更新新文章了&#xff0c;主要是最近科一有些頭疼&#xff0c;而且最近琢磨這個行為樹代碼有些難受&#xff0c;但是終于熬出頭了&#xff0c;MonoGame的系列會繼續更新的&#xff0c;今天不說別的就說困擾我兩三天的行為樹 有限狀態…

百度大模型開源,倆條命令、本地啟動

百度大模型開源 本地啟動手冊 安裝依賴&#xff1a; python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ讀取不到ThreadLocal消息的bug

rabbitMQ讀取不到ThreadLocal消息的bug 當使用消息隊列時&#xff0c;監聽隊列不會運行到主線程上&#xff0c;線程消息之間是不會共享的&#xff0c;故屬于主線程的ThreadLocal就讀取不到數據的值 主線程名字&#xff1a;main使用消息隊列的線程名字&#xff1a;ntContainer#2…

IDEA Maven報錯 無法解析 com.taobao:parent:pom:1.0.1【100%解決 此類型問題】

IDEA Maven報錯 無法解析com.taobao:parent:pom:1.0.1【100%解決 此類型問題】 報錯日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函數-1-字符串函數

函數-1-字符串函數字符串函數函數語法字符串函數的使用字符串函數語法案例演示實戰練習字符串函數 函數 函數是一段可以直接被另一端程序調用的程序或代碼 語法 SELECT 函數名(參數名)大家可能會有那么一點點疑惑, 為什么執行函數還需要加上SELECT語句? 總結一下, 因為SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+開箱即用”破壁之道

中國企業的數字化轉型已步入深水區&#xff0c;人力資源管理作為企業核心競爭力的關鍵引擎&#xff0c;正經歷從“信息化”向“智能化”的范式躍遷。在這場以AI為驅動的組織效能革命中&#xff0c;??易路人力資源科技??憑借前瞻性的“軟件AI服務”戰略&#xff0c;推出國內…

Higress離線部署

1.前提條件檢查docker和docker compose是否已經具備 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…

利用AI技術快速提升圖片編輯效率的方法

通過更換背景或進行其他創意編輯&#xff0c;可以為圖片賦予新的生命力和視覺效果&#xff0c;使得創意表達更加自由靈活。這款AI摳圖工具堪稱強大&#xff0c;依托先進的阿爾法通道技術&#xff0c;能夠精準、自然地實現圖像摳取與背景更換。操作也非常簡單&#xff0c;只需將…

Wend看源碼-RAGFlow(上)

前言 最近在github上搜羅Rag相關項目的時候&#xff0c;我根據star 搜索到了目前star 最高的一些RAG 項目 &#xff0c;其中穩居榜首的就是RAGFlow。 RAG stars:>1000 language:Python pushed:>2025-01-01 github RAG 相關項目搜索結果 為了系統性的學習RAG 技術棧&#…

LangChain實現RAG檢索增強

1:啟動vllm的openai兼容server&#xff1a; export VLLM_USE_MODELSCOPETrue python -m vllm.entrypoints.openai.api_server --model qwen/Qwen-7B-Chat-Int4 --trust-remote-code -q gptq --dtype float16 --gpu-memory-utilization 0.6 2:構建向量數據庫 from langchain_…

Redis基礎(6):SpringDataRedis

SpringDataRedis簡介 SpringData是Spring中專門進行數據操作的模塊&#xff0c;包含了對于各種數據庫的集成。其中對Redis的集成模塊叫做SpringDataRedis&#xff08;官網地址&#xff1a;Spring Data Redis&#xff09;。其最核心的特點就是提供了不同Redis客戶端的整合&…

B. Shrinking Array/縮小數組

B. Shrinking Array讓我們稱一個數組 b 為 i 美麗 &#xff0c;如果它至少包含兩個元素&#xff0c;并且存在一個位置 |bi?bi1|≤1 使得 |x| (其中 x 是 #10# #11# 的絕對值)。給定一個數組 a &#xff0c;只要它至少包含兩個元素&#xff0c;你就可以執行以下操作&#xff1a…

【學習筆記】Linux系統中SSH服務安全配置

一、背景知識 以ubuntu為例&#xff0c;查看ssh服務是否安全并配置&#xff0c;執行 ssh -V ssh的配置文件路徑&#xff1a;/etc/ssh/sshd_config 二、SSH服務配置文件 1.端口和監聽設置 Port 22 含義&#xff1a;指定SSH服務監聽的端口號&#xff08;默認是22&#xff09…

FastAPI + Tortoise-ORM + Aerich 實現數據庫遷移管理(MySQL 實踐)

在 FastAPI 項目中&#xff0c;Tortoise-ORM 是一個輕量的異步 ORM 框架&#xff0c;適用于 async/await 場景。結合數據庫遷移工具 Aerich&#xff0c;可以優雅地管理數據庫表結構演進&#xff0c;本文將通過完整流程演示如何在 MySQL 環境下使用。&#x1f4e6; 一、環境準備…

7.7日 實驗03-Spark批處理開發(2)

使用Spark處理數據文件檢查數據檢查$DATA_EXERCISE/activations里的數據&#xff0c;每個XML文件包含了客戶在指定月份活躍的設備數據。拷貝數據到HDFS的/dw目錄樣本數據示例&#xff1a;<activations><activation timestamp"1225499258" type"phone&q…

C語言可變參數感悟

#include <stdio.h> #include <stdarg.h> #if 1 /* *在C語言中&#xff0c;可變參函數是指參數數量不固定的函數&#xff0c;比如printf\scanf *可變參函數的語法&#xff1a; *返回類型 函數名&#xff08;固定函數&#xff0c;.....) { //函數體 } *1、包含頭文件…