網站首頁 編程語言 正文
1、Docker的存在解決的問題
1.1 統一標準
應用構建:我們寫的應用可能使用了不同的編程語言,例如:Java、C++、JavaScript等,這些應用最終打成軟件包,有的是壓縮包、有的是文件夾、有的是源程序讓自己編譯,這就很麻煩;那么能否統一打成一個包?這就需要docker build,把我們的軟件打成一個標準格式的包,這個包就叫做鏡像!
應用分享:所有軟件的鏡像都放到一個指定地方 docker hub(就相當于安卓手機里的應用市場)。
應用運行:我們都打包成了統一標準的鏡像(相當于Windows里的可執行程序.exe);直接docker run就可以啟動應用。
Docker的存在開啟了一個時代,一個容器化的時代!
區別于容器化,以前我們有一個虛擬化技術:假如有一個8核64G的應用,我們跑很多的應用,所有的應用都放到一個機器里面;如果一個軟件造成內存泄漏,就可能把整個64G內存全部占完,造成其它應用就擠下去運行不了了!為了安全,所以我們要把這些應用進行隔離:
(1)第一種辦法:虛擬化技術;裝幾個虛擬機,假如每個虛擬機占8個G,每個虛擬機里布置各自的應用,就算有一個應用造成了內存泄漏,也只會漏掉8個G,不會影響別人!但是虛擬化技術也有很多缺點:基礎鏡像都是GB級別、創建使用復雜、啟動速度慢、移植與分享不方便;
(2)第二種辦法:容器化技術;一個服務器裝了操作系統,對于虛擬機化技術實際上每個虛擬機又是一個完整的操作系統;對于容器化技術,既然有操作系統了,docker就是搞一些差異化的東西保存起來,所以每個應用的環境只是區別于當前服務器的一個差異化環境;優點:基礎鏡像MB級別、創建簡單、隔離性強、啟動速度秒級、移植與分享方便;
1.2 資源隔離
(1)cpu、內存資源隔離與限制;
(2)訪問設備隔離與限制;
(3)網絡隔離與限制;
(4)用戶、用戶組隔離限制;容器里跑的應用的root用戶,跟Linux主機里的root用戶,可以不是同一個root用戶
........................
2、Docker的建構
1、Docker_Host:
? ? ? ? 想用Docker,每臺主機必須安裝Docker;安裝Docker的主機,即為Docker_Host
2、Docker Daemon
? ? ? ? 安裝好Docker就會在主機上啟動,后臺啟動一個Docker的進程;運行在Docker主機上的Docker后臺進程
3、Client
????????操作Docker主機的客戶端(命令行、UI等)
4、Registry
? ? ? ? 鏡像倉庫:Docker Hub
5、Images
????????鏡像,帶環境打包好的程序,可以直接啟動運行
6、Containers
????????容器,由鏡像啟動起來正在運行中的程序
總結:想要用docker,先裝好Docker;然后去 軟件市場?(docker hub)尋找鏡像,下載(docker pull)鏡像并運行(docker run);
3、安裝Docker
Docker官方部署Docker平臺的底層Linux操作系統對應的Linux內核版本至少3.8+,在實際的企業生產環境中,推薦的Linux內核至少3.10+,對應的Linux操作系統發型版本:Centos7.x或者Ubuntu16.x;
cat /etc/centos-release # 查看當前Centos的版本 uname -a #查看當前內核的版本
Docker安裝的官方文檔:https://docs.docker.com/engine/install/centos/
1、卸載以前安裝的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 如果以前什么都沒安裝,直接yum remove docker*就可以
2、配置yun源
yum install -y yum-utils # 下載yum工具類所需要的依賴
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 添加docker安裝源地址
3、安裝docker
yum install -y docker-ce docker-ce-cli containerd.io # 安裝最新版本得docker
# docker-ce---docker社區版
# docker-ce-cli---操作docker服務器的命令行程序
# containerd.io---docker容器化的運行環境
# 如果想要安裝其他版本
yum list | grep docker # 查看一下docker資源的安裝列表
4、啟動docker并設置為開機自啟
systemctl start docker --now
systemctl enable docker
5、查看一下當前的docker運行狀態
systemctl status docker
6、隨便使用一個命令驗證
docker info # 打印docker的詳細信息
7、配置鏡像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
然后輸入:docker ps能打印出來內容就說明沒問題!
總結
原文鏈接:https://blog.csdn.net/m0_61933976/article/details/125233101
相關推薦
- 2022-11-03 Python?文檔解析lxml庫的使用詳解_python
- 2021-12-06 Gin框架之參數綁定的實現_Golang
- 2023-07-26 TypeScript中的keyof、typeof、索引訪問類型、條件類型
- 2022-06-17 C語言深入講解棧與堆和靜態存儲區的使用_C 語言
- 2022-04-28 C#網絡編程中常用特性介紹_C#教程
- 2022-09-25 linux基礎入門1 vi/vim編輯器
- 2023-10-15 理解C/C++中的鏈接
- 2023-07-08 git代碼回滾到某個tag
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支