目錄
一.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