docker概念、安裝與基本使用
一、概念
1.1 docker是什么?
就是一個軟件,跑容器的軟件 -> 容器化軟件
有什么作用,解決了什么問題?
- 將任何軟件都可以放到容器里去運行
- 更加節(jié)約企業(yè)的服務器資源,降低基礎設施成本
- 軟件的快速部署和縮放 --》改變了軟件部署和安裝的方式
1.2 什么是容器?
類似軟件的集裝箱
官方網站:https://www.docker.com/resources/what-container/

使用容器的好處:
1.成本低廉
2.管理方便
顆粒度更加小的虛擬化技術–》容器技術–》可以控制資源
很多企業(yè)里的物理機的資源使用率比較低,一個業(yè)務一群機器,導致大量的資源浪費,成本過高
docker技術可以控制資源的使用率,可以讓物理機很飽和的運行 --》減少機器的數(shù)量,同時業(yè)務也能正常的運行
使用docker可以降低基礎設施成本
1.3 docker與虛擬機的區(qū)別

| 特性 | 容器化(Docker) | 虛擬機(Hypervisor) |
|---|---|---|
| 隔離層級 | 進程級隔離(共享宿主 OS 內核) | 硬件級隔離(每個 VM 有獨立 OS 內核) |
| 隔離策略 | Hypervisor | CGroups |
| 資源占用 | 極輕量(MB 級,僅需應用自身資源) | 重量級(GB 級,需承載完整 OS 資源) |
| 啟動速度 | 秒級(直接啟動應用進程) | 分鐘級(需啟動完整 OS) |
| 多應用支持 | 同一宿主 OS 下可運行多個不同應用容器 | 每個 VM 通常運行一個主要應用(因 OS 資源占用高) |
| 兼容性 | 依賴宿主 OS 內核(如 Linux 容器難跑 Windows 應用) | 支持任意 OS(只要 Hypervisor 兼容) |
| 鏡像存儲 | KB-MB | GB-TB |
| 集群規(guī)模 | 上萬 | 上百 |
| 高可用策略 | 彈性、負載、動態(tài) | 備份、容災、遷移 |
1.4 容器,鏡像,倉庫
- 鏡像: image 是軟件單元,本質上是一個
文件,文件里面有應用程序代碼(nginx、mysql等)、微型操作系統(tǒng)、依賴軟件 --》需要運行軟件 - 倉庫: repository 存放鏡像的地方, hub.docker.com
hub.docker.com 是docker官方提供的鏡像的集市。 全球最大的鏡像集散地 - 鏡像倉庫: 國內的站點 --》網站,提供鏡像下載功能
- 容器: container 運行的鏡像,本質上是一個
進程,提供服務
1.5 微服務、云計算
微小的服務:盡量的將某個功能或者服務獨立出來,跑在單獨的容器里,且可獨立開發(fā)、測試、部署和擴展
微服務的核心特征
- 單一職責:每個服務只負責一個業(yè)務模塊
- 獨立部署:修改一個服務時,無需重新部署整個應用
- 技術多樣性:不同服務可選擇適合自身的技術棧
- 彈性擴展:可針對高負載服務單獨擴容
微服務架構雖然解決了單體應用的耦合問題,但也帶來了部署復雜、環(huán)境不一致、資源管理難等挑戰(zhàn) —— 而 Docker 恰好能針對性解決這些問題
| 微服務面臨的挑戰(zhàn) | Docker 的解決方案 | 核心價值 |
|---|---|---|
| 環(huán)境不一致(“開發(fā)能跑,生產報錯”) | 容器打包應用 + 依賴,確保所有環(huán)境鏡像一致 | 消除 “環(huán)境差異”,降低部署故障 |
| 服務部署復雜(需手動配置依賴、端口) | 通過 Dockerfile 自動化構建鏡像,Compose 一鍵部署多服務 | 標準化部署流程,提升效率 |
| 資源隔離差(多服務共享主機資源,易沖突) | 容器間資源隔離(CPU、內存、網絡),互不干擾 | 避免 “服務搶占資源”,提升系統(tǒng)穩(wěn)定性 |
| 服務擴容慢(需手動搭建新主機環(huán)境) | 容器輕量(啟動秒級),可快速復制鏡像啟動新容器 | 支持 “秒級擴容”,應對流量峰值 |
| 版本管理難(多服務版本迭代,回滾復雜) | 鏡像版本化,回滾時只需切換鏡像版本 | 簡化版本管理,降低回滾風險 |
云計算(Cloud Computing)
物理機–》虛擬化–》云計算–》云服務–》容器–》云原生
云原生: 就是與容器、k8s、Prometheus、etcd相關的技術
云計算是一種基于互聯(lián)網的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需求提供給計算機各種終端和其他設備
云計算利用強大的分布式計算和存儲能力,將數(shù)據(jù)和應用程序從本地計算機或服務器轉移到云中,使得用戶可以隨時隨地獲取所需的信息和服務
- 公有云: 阿里云、騰訊云、華為云、AWS(亞馬遜)、google云、微軟云azure、電信云
- 買服務器
- 私有云/專有云: 自己使用不與其他人分享的云平臺 --》購買阿里云/騰訊云、華為云的云平臺軟件,自己的服務器
- 國家電網、財通證券
- 政府、國企
- 混合云: 公有云、私有云
- 12306 購買火車票
| 服務模式 | 英文全稱 | 核心定義 | 用戶視角 | 典型場景 |
|---|---|---|---|---|
| IaaS | Infrastructure as a Service(基礎設施即服務) | 提供最底層的 IT 基礎設施:虛擬服務器(ECS)、存儲(OSS)、網絡(VPC)等,用戶需自行部署操作系統(tǒng)、數(shù)據(jù)庫、應用程序 | 租用一臺虛擬電腦,自己裝系統(tǒng)和軟件 | 企業(yè)搭建自有服務器集群、開發(fā)測試環(huán)境 |
| PaaS | Platform as a Service(平臺即服務) | 提供 “應用開發(fā) / 運行平臺”:包含操作系統(tǒng)、數(shù)據(jù)庫、中間件(如 Tomcat)、開發(fā)工具等,用戶只需上傳應用代碼即可運行 | 租用一個已裝好環(huán)境的開發(fā)平臺,直接寫代碼 | 快速開發(fā) Web 應用、移動 APP 后端、大數(shù)據(jù)分析(如使用 Hadoop 平臺) |
| SaaS | Software as a Service(軟件即服務) | 提供 “開箱即用的軟件應用”:用戶無需安裝,直接通過瀏覽器或客戶端使用(如在線 Office、CRM 系統(tǒng)),所有維護由服務商負責 | 直接用在線軟件,不用管背后的技術 | 企業(yè)辦公(釘釘、企業(yè)微信)、在線協(xié)作(飛書文檔)、客戶管理(Salesforce) |
| Serverless | 1.FaaS(Function as a Service,函數(shù)即服務) 2.BaaS(Backend as a Service,后端即服務) | 開發(fā)者無需管理服務器,只需編寫業(yè)務邏輯代碼,按實際執(zhí)行消耗付費 | 直接使用別人的容器平臺,云廠商按照使用時長和算力來收費,企業(yè)不需要購買服務器了 | 適合流量波動大、執(zhí)行時間短、事件驅動型的業(yè)務場景 |
函數(shù)計算(Function Compute)是一個事件驅動的全托管 Serverless 計算服務,您無需管理服務器等基礎設施,只需編寫代碼并上傳,函數(shù)計算會為您準備好計算資源,并以彈性、可靠的方式運行您的代碼
二、Rocky (使用 dnf 或 yum 安裝)
參考Centos的官方文檔:https://docs.docker.com/engine/install/centos/
第1步:卸載以前安裝過的docker相關的軟件
[root@localhost ~]#sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine第2步: 配置安裝docker的源,默認使用官方的源,在安裝的時候出錯,下載不下來軟件,建議使用阿里云的源
# 兩條命令等同,yum 是 dnf 的軟鏈接,執(zhí)行 yum install yum-utils 本質也是安裝 dnf 兼容的擴展工具 [root@localhost ~]# sudo yum install -y yum-utils [root@localhost ~]# sudo dnf -y install dnf-plugins-core [root@localhost ~]# sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo [root@localhost ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第3步: 安裝docker
docker-ce是docker引擎,提供docker服務的docker-ce-cli提供docker客戶端命令的containerd.io是提供容器運行時管理的docker-buildx-plugin是docker的一個插件,用來構建鏡像docker-compose-plugindocker的單機里的容器編排工具,可以同時啟動很多容器
[root@localhost ~]# sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
第4步: 啟動docker
[root@localhost ~]# systemctl start docker [root@localhost ~]# systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
第5步:查看dockerd進程,確認docker服務已經啟動了
[root@localhost yum.repos.d]# ps aux|grep docker root 17423 0.3 2.1 1908364 80208 ? Ssl 11:42 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock root 17661 0.0 0.0 6408 2176 pts/0 S+ 11:42 0:00 grep --color=auto docker # 查看版本 [root@docker ~]# docker --version Docker version 28.4.0, build d8eb465
三、docker 基本使用
3.1 配置國內源
在使用 Docker 時,默認是訪問docker官方提供的鏡像下載的網站,配置合適的鏡像源可以顯著提升鏡像拉取速度,尤其是在國內網絡環(huán)境下
[root@localhost ~]# mkdir -p /etc/docker/
# 添加2個國內的源
[root@localhost docker]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1panel.live"]
}
EOF
{
"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1panel.live"]
}
[root@localhost docker]# sudo systemctl daemon-reload
[root@localhost docker]# sudo systemctl restart docker3.2 下載nginx鏡像
docker pull
不接版本號,默認下載最新的
[root@localhost docker]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx b1badc6e5066: Pull complete a2da0c0f2353: Pull complete e5d9bb0b85cc: Pull complete 14a859b5ba24: Pull complete 716cdf61af59: Pull complete 14e422fd20a0: Pull complete c3741b707ce6: Pull complete Digest: sha256:33e0bbc7ca9ecf108140af6288c7c9d1ecc77548cbfd3952fd8466a75edefe57 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
3.3 查看本機已經下載的鏡像
docker images
[root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ad5708199ec7 3 weeks ago 192MB
3.4 啟動一個nginx的容器
–》啟動nginx程序docker run
--namesc-nginx-1:指定容器名稱為 sc-nginx-1(方便后續(xù)管理)-p 8080:80:端口映射,將宿主機的 8080 端口映射到容器內的 80 端口-d:后臺運行容器( detached 模式)nginx:使用的鏡像名稱(默認拉取 latest 標簽版本)
[root@localhost docker]# docker run --name sc-nginx-1 -p 8080:80 -d nginx 12af7441bf2e0fdefb41445aca7f4ec4a6284acfb24c89f70672689002895dff
3.5 查看啟動的容器
docker ps
[root@localhost docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 12af7441bf2e nginx "/docker-entrypoint.…" 29 seconds ago Up 29 seconds 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp sc-nginx-1
瀏覽器訪問宿主機的8080端口可正常顯示nginx的首頁
3.6 鏡像導入/導出
導出
[root@localhost images]# docker save -o nginx.tar nginx
導入
[root@localhost images]# docker load -i nginx.tar nginx
3.7 刪除鏡像
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ad5708199ec7 3 weeks ago 192MB
[root@localhost ~]#docker rminginx
二、Ubuntu(使用 apt-get 進行安裝)
官方文檔:https://docs.docker.com/engine/install/ubuntu/
https://developer.aliyun.com/mirror/docker-ce
root@huang:~# cat /etc/issue
Ubuntu 24.04.2 LTS \n \l
之前裝了的版本要移除
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
step 1: 安裝必要的一些系統(tǒng)工具
sudo apt-get update sudo apt-get install ca-certificates curl gnupg
step 2: 信任 Docker 的 GPG 公鑰
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
step 3: 寫入軟件源信息
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
step 4: 安裝Docker
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
三、CentOS (使用 yum 進行安裝)
step 1: 安裝必要的一些系統(tǒng)工具sudo yum install -y yum-utils
step 2: 添加軟件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
step 3: 安裝Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
step 4: 開啟Docker服務
sudo service docker start
到此這篇關于docker概念、安裝與基本使用的文章就介紹到這了,更多相關docker安裝和使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑
本文主要介紹了Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決
在使用docker的時候,在某些未知的情況下可能啟動了容器,但是過了沒幾秒容器自動退出了,這個時候如何排查問題呢?下面這篇文章主要給大家介紹了關于docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決的相關資料,需要的朋友可以參考下2023-05-05
docker容器在uos-12038.101上啟動報錯的解決辦法
這篇文章主要介紹了docker容器在uos-12038.101上啟動報錯的問題,解決方案是需要在/etc/systemd/system/或者 /usr/lib/systemd/system/2024-03-03
找到docker.service文件,在ExecStart=/usr/bin/dockerd后面添加 --default-ulimit nofile=65536:65536參數(shù),需要的朋友可以參考下
關于Docker部署postgresql數(shù)據(jù)庫的問題
這篇文章主要介紹了Docker部署postgresql數(shù)據(jù)庫的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03

