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

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

| 特性 | 容器化(Docker) | 虛擬機(jī)(Hypervisor) |
|---|---|---|
| 隔離層級 | 進(jìn)程級隔離(共享宿主 OS 內(nèi)核) | 硬件級隔離(每個 VM 有獨(dú)立 OS 內(nèi)核) |
| 隔離策略 | Hypervisor | CGroups |
| 資源占用 | 極輕量(MB 級,僅需應(yīng)用自身資源) | 重量級(GB 級,需承載完整 OS 資源) |
| 啟動速度 | 秒級(直接啟動應(yīng)用進(jìn)程) | 分鐘級(需啟動完整 OS) |
| 多應(yīng)用支持 | 同一宿主 OS 下可運(yùn)行多個不同應(yīng)用容器 | 每個 VM 通常運(yùn)行一個主要應(yīng)用(因 OS 資源占用高) |
| 兼容性 | 依賴宿主 OS 內(nèi)核(如 Linux 容器難跑 Windows 應(yīng)用) | 支持任意 OS(只要 Hypervisor 兼容) |
| 鏡像存儲 | KB-MB | GB-TB |
| 集群規(guī)模 | 上萬 | 上百 |
| 高可用策略 | 彈性、負(fù)載、動態(tài) | 備份、容災(zāi)、遷移 |
1.4 容器,鏡像,倉庫
- 鏡像: image 是軟件單元,本質(zhì)上是一個
文件,文件里面有應(yīng)用程序代碼(nginx、mysql等)、微型操作系統(tǒng)、依賴軟件 --》需要運(yùn)行軟件 - 倉庫: repository 存放鏡像的地方, hub.docker.com
hub.docker.com 是docker官方提供的鏡像的集市。 全球最大的鏡像集散地 - 鏡像倉庫: 國內(nèi)的站點(diǎn) --》網(wǎng)站,提供鏡像下載功能
- 容器: container 運(yùn)行的鏡像,本質(zhì)上是一個
進(jìn)程,提供服務(wù)
1.5 微服務(wù)、云計(jì)算
微小的服務(wù):盡量的將某個功能或者服務(wù)獨(dú)立出來,跑在單獨(dú)的容器里,且可獨(dú)立開發(fā)、測試、部署和擴(kuò)展
微服務(wù)的核心特征
- 單一職責(zé):每個服務(wù)只負(fù)責(zé)一個業(yè)務(wù)模塊
- 獨(dú)立部署:修改一個服務(wù)時,無需重新部署整個應(yīng)用
- 技術(shù)多樣性:不同服務(wù)可選擇適合自身的技術(shù)棧
- 彈性擴(kuò)展:可針對高負(fù)載服務(wù)單獨(dú)擴(kuò)容
微服務(wù)架構(gòu)雖然解決了單體應(yīng)用的耦合問題,但也帶來了部署復(fù)雜、環(huán)境不一致、資源管理難等挑戰(zhàn) —— 而 Docker 恰好能針對性解決這些問題
| 微服務(wù)面臨的挑戰(zhàn) | Docker 的解決方案 | 核心價(jià)值 |
|---|---|---|
| 環(huán)境不一致(“開發(fā)能跑,生產(chǎn)報(bào)錯”) | 容器打包應(yīng)用 + 依賴,確保所有環(huán)境鏡像一致 | 消除 “環(huán)境差異”,降低部署故障 |
| 服務(wù)部署復(fù)雜(需手動配置依賴、端口) | 通過 Dockerfile 自動化構(gòu)建鏡像,Compose 一鍵部署多服務(wù) | 標(biāo)準(zhǔn)化部署流程,提升效率 |
| 資源隔離差(多服務(wù)共享主機(jī)資源,易沖突) | 容器間資源隔離(CPU、內(nèi)存、網(wǎng)絡(luò)),互不干擾 | 避免 “服務(wù)搶占資源”,提升系統(tǒng)穩(wěn)定性 |
| 服務(wù)擴(kuò)容慢(需手動搭建新主機(jī)環(huán)境) | 容器輕量(啟動秒級),可快速復(fù)制鏡像啟動新容器 | 支持 “秒級擴(kuò)容”,應(yīng)對流量峰值 |
| 版本管理難(多服務(wù)版本迭代,回滾復(fù)雜) | 鏡像版本化,回滾時只需切換鏡像版本 | 簡化版本管理,降低回滾風(fēng)險(xiǎn) |
云計(jì)算(Cloud Computing)
物理機(jī)–》虛擬化–》云計(jì)算–》云服務(wù)–》容器–》云原生
云原生: 就是與容器、k8s、Prometheus、etcd相關(guān)的技術(shù)
云計(jì)算是一種基于互聯(lián)網(wǎng)的計(jì)算方式,通過這種方式,共享的軟硬件資源和信息可以按需求提供給計(jì)算機(jī)各種終端和其他設(shè)備
云計(jì)算利用強(qiáng)大的分布式計(jì)算和存儲能力,將數(shù)據(jù)和應(yīng)用程序從本地計(jì)算機(jī)或服務(wù)器轉(zhuǎn)移到云中,使得用戶可以隨時隨地獲取所需的信息和服務(wù)
- 公有云: 阿里云、騰訊云、華為云、AWS(亞馬遜)、google云、微軟云azure、電信云
- 買服務(wù)器
- 私有云/專有云: 自己使用不與其他人分享的云平臺 --》購買阿里云/騰訊云、華為云的云平臺軟件,自己的服務(wù)器
- 國家電網(wǎng)、財(cái)通證券
- 政府、國企
- 混合云: 公有云、私有云
- 12306 購買火車票
| 服務(wù)模式 | 英文全稱 | 核心定義 | 用戶視角 | 典型場景 |
|---|---|---|---|---|
| IaaS | Infrastructure as a Service(基礎(chǔ)設(shè)施即服務(wù)) | 提供最底層的 IT 基礎(chǔ)設(shè)施:虛擬服務(wù)器(ECS)、存儲(OSS)、網(wǎng)絡(luò)(VPC)等,用戶需自行部署操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用程序 | 租用一臺虛擬電腦,自己裝系統(tǒng)和軟件 | 企業(yè)搭建自有服務(wù)器集群、開發(fā)測試環(huán)境 |
| PaaS | Platform as a Service(平臺即服務(wù)) | 提供 “應(yīng)用開發(fā) / 運(yùn)行平臺”:包含操作系統(tǒng)、數(shù)據(jù)庫、中間件(如 Tomcat)、開發(fā)工具等,用戶只需上傳應(yīng)用代碼即可運(yùn)行 | 租用一個已裝好環(huán)境的開發(fā)平臺,直接寫代碼 | 快速開發(fā) Web 應(yīng)用、移動 APP 后端、大數(shù)據(jù)分析(如使用 Hadoop 平臺) |
| SaaS | Software as a Service(軟件即服務(wù)) | 提供 “開箱即用的軟件應(yīng)用”:用戶無需安裝,直接通過瀏覽器或客戶端使用(如在線 Office、CRM 系統(tǒng)),所有維護(hù)由服務(wù)商負(fù)責(zé) | 直接用在線軟件,不用管背后的技術(shù) | 企業(yè)辦公(釘釘、企業(yè)微信)、在線協(xié)作(飛書文檔)、客戶管理(Salesforce) |
| Serverless | 1.FaaS(Function as a Service,函數(shù)即服務(wù)) 2.BaaS(Backend as a Service,后端即服務(wù)) | 開發(fā)者無需管理服務(wù)器,只需編寫業(yè)務(wù)邏輯代碼,按實(shí)際執(zhí)行消耗付費(fèi) | 直接使用別人的容器平臺,云廠商按照使用時長和算力來收費(fèi),企業(yè)不需要購買服務(wù)器了 | 適合流量波動大、執(zhí)行時間短、事件驅(qū)動型的業(yè)務(wù)場景 |
函數(shù)計(jì)算(Function Compute)是一個事件驅(qū)動的全托管 Serverless 計(jì)算服務(wù),您無需管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫代碼并上傳,函數(shù)計(jì)算會為您準(zhǔn)備好計(jì)算資源,并以彈性、可靠的方式運(yùn)行您的代碼
二、Rocky (使用 dnf 或 yum 安裝)
參考Centos的官方文檔:https://docs.docker.com/engine/install/centos/
第1步:卸載以前安裝過的docker相關(guān)的軟件
[root@localhost ~]#sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine第2步: 配置安裝docker的源,默認(rèn)使用官方的源,在安裝的時候出錯,下載不下來軟件,建議使用阿里云的源
# 兩條命令等同,yum 是 dnf 的軟鏈接,執(zhí)行 yum install yum-utils 本質(zhì)也是安裝 dnf 兼容的擴(kuò)展工具 [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服務(wù)的docker-ce-cli提供docker客戶端命令的containerd.io是提供容器運(yùn)行時管理的docker-buildx-plugin是docker的一個插件,用來構(gòu)建鏡像docker-compose-plugindocker的單機(jī)里的容器編排工具,可以同時啟動很多容器
[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進(jìn)程,確認(rèn)docker服務(wù)已經(jīng)啟動了
[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 配置國內(nèi)源
在使用 Docker 時,默認(rèn)是訪問docker官方提供的鏡像下載的網(wǎng)站,配置合適的鏡像源可以顯著提升鏡像拉取速度,尤其是在國內(nèi)網(wǎng)絡(luò)環(huán)境下
[root@localhost ~]# mkdir -p /etc/docker/
# 添加2個國內(nèi)的源
[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
不接版本號,默認(rèn)下載最新的
[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 查看本機(jī)已經(jīng)下載的鏡像
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:端口映射,將宿主機(jī)的 8080 端口映射到容器內(nèi)的 80 端口-d:后臺運(yùn)行容器( detached 模式)nginx:使用的鏡像名稱(默認(rèn)拉取 latest 標(biāo)簽版本)
[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
瀏覽器訪問宿主機(jī)的8080端口可正常顯示nginx的首頁
3.6 鏡像導(dǎo)入/導(dǎo)出
導(dǎo)出
[root@localhost images]# docker save -o nginx.tar nginx
導(dǎo)入
[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 進(jìn)行安裝)
官方文檔: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 進(jìn)行安裝)
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服務(wù)
sudo service docker start
到此這篇關(guān)于docker概念、安裝與基本使用的文章就介紹到這了,更多相關(guān)docker安裝和使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑
本文主要介紹了Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決
在使用docker的時候,在某些未知的情況下可能啟動了容器,但是過了沒幾秒容器自動退出了,這個時候如何排查問題呢?下面這篇文章主要給大家介紹了關(guān)于docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決的相關(guān)資料,需要的朋友可以參考下2023-05-05
docker容器在uos-12038.101上啟動報(bào)錯的解決辦法
這篇文章主要介紹了docker容器在uos-12038.101上啟動報(bào)錯的問題,解決方案是需要在/etc/systemd/system/或者 /usr/lib/systemd/system/2024-03-03
找到docker.service文件,在ExecStart=/usr/bin/dockerd后面添加 --default-ulimit nofile=65536:65536參數(shù),需要的朋友可以參考下
docker 學(xué)習(xí)筆記之docker連接網(wǎng)絡(luò)的設(shè)置
本篇文章主要介紹了docker 學(xué)習(xí)筆記之docker連接網(wǎng)絡(luò)的設(shè)置 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
docker部署安裝jenkins的實(shí)現(xiàn)步驟
本文主要介紹了docker部署安裝jenkins的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
關(guān)于Docker部署postgresql數(shù)據(jù)庫的問題
這篇文章主要介紹了Docker部署postgresql數(shù)據(jù)庫的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
更改docker默認(rèn)數(shù)據(jù)目錄的方法步驟
本文主要介紹了更改docker默認(rèn)數(shù)據(jù)目錄的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
在Docker Compose中獲取最新鏡像的多種方法總結(jié)
Docker 鏡像是 Docker 容器的基礎(chǔ),鏡像包含了應(yīng)用程序所需的所有文件和依賴,Docker-Compose 默認(rèn)不會自動拉取最新的鏡像版本,這可能會導(dǎo)致使用過時的鏡像,從而錯過重要的更新,為了確保 Docker-Compose 始終使用最新的鏡像,我們可以采用多種方法,以下將詳細(xì)介紹這些方法2024-08-08

