Docker 是一個開源軟件,用于開發(fā)應用、交付應用、運行應用。 Docker允許用戶將基礎(chǔ)設(shè)施中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件的速度。
一、Docker初識
1.什么是Docker
- Docker 是一個開源的應用容器引擎,基于Go 語言實現(xiàn)并遵從 Apache2.0 協(xié)議開源。
- Docker 可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
- 容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
2.Docker vs VM
docker與vm比較
- 傳統(tǒng)的虛擬機模擬出一套硬件來運行操作系統(tǒng),也就是在硬件層面實現(xiàn)虛擬化,通常啟動速度比較忙,資源消耗比較大。
- Docker容器化技術(shù)則是在操作系統(tǒng)層面實現(xiàn)虛擬化,直接復用本地主機的操作系統(tǒng),而傳統(tǒng)虛擬機則是在硬件實現(xiàn)虛擬化。
3.Docker組成
Docker基本組成主要包括以下三部分內(nèi)容:
- 鏡像(image) —> 類模板
- 容器(container)—> 對象
- 倉庫(repository)—> 鏡像倉庫
Docker image:鏡像是只讀的,鏡像中包含有需要運行的文件。鏡像用來創(chuàng)建container,一個鏡像可以運行多個container;鏡像可以通過commit命令、Dockerfile等方式創(chuàng)建,也可以從Docker hub/registry上下載。
Docker container:容器是可寫的,也是Docker的運行組件,啟動一個鏡像就是一個容器,容器是一個隔離環(huán)境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環(huán)境中。
Docker repository: 存儲鏡像的倉庫,用戶通過它來共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
4.Docker優(yōu)點
應用架構(gòu)上 ,就比如那一個訂購系統(tǒng)來舉例子,本來是一個基本的靜態(tài)網(wǎng)頁用來電話訂購,現(xiàn)在需要網(wǎng)絡(luò)訂購了,那么我們就需要引入DB,再然后為了提升性能,引入了類似Redis、Memcached、MQ緩存等中間件,到項目后期,發(fā)現(xiàn)單機不能滿足性能要求了,然后引入了Nginx作為反向代理,總之,隨著系統(tǒng)功能的日趨復雜,那么應用依賴就會逐漸復雜,不同組件的配置方法各不相同,運維人員進行應用配置可能會耗費大量時間。
應用部署上 ,Dockerfile的存在使得開發(fā)人員僅僅需要修改其配置文件就可以輕松構(gòu)建具有不同依賴的鏡像。同時保障了從開發(fā)、構(gòu)建、測試、生成的一整套流程。
集群角度上 ,隨著流量的逐漸增大,這個時候就要引入集群了,服務(wù)器由原來的一臺變成兩臺,那么相同的配置在另一臺主機進行相同的配置時間開銷比較大,因此可以通過鏡像來一鍵打包部署即可。
關(guān)于Docker優(yōu)點,總結(jié)如下:
- 快速的應用部署和維護
- 更便捷的升級和擴縮容
- 更簡單的系統(tǒng)運維
- 更高效的計算資源利用
- 支持多種操作系統(tǒng),Windows、Mac和Debian等
5.Docker架構(gòu)
關(guān)于官方文檔中解釋:Docker Architecture
Docker引擎 (Docker Engine)是一個服務(wù)端-客戶端結(jié)構(gòu)的應用,主要有這些部分:Docker守護進程、Docker Engine API、Docker客戶端。
- Docker守護進程 (Docker daemons),也叫
dockerd
,是一個持久化的進程,用戶管理容器。守護進程會監(jiān)聽Docker Engine API 的請求。 - Docker Engine API是用于與Docker守護進程交互用的的API。它是一個RESTful API,因此它不僅可以被Docker客戶端調(diào)用,也可以被
wget
和curl
等命令調(diào)用。 - Docker客戶端 ,也叫
docker
,是大部分用戶與Docker交互的主要方式。用戶通過客戶端將命令發(fā)送給守護進程。命令會遵循Docker Engine API
6.Docker生態(tài)
Docker生態(tài)中還有一個非常重要的容器管理工具–Kubernetes,它是Google開源的用于在集群環(huán)境中管理、維護、自動擴展容器,通過Kubernetes可以很方便地在多個機器上管理和部署容器服務(wù)。現(xiàn)在已經(jīng)得到IBM、Microsoft、RedHat等多個大公司的支持。
Docker現(xiàn)在出現(xiàn)了一個特殊的模式——swarm模式——可以用來管理容器集群。Docker Swarm允許使用Docker CLI運行swarm命令,因而很容易初始化一組容器,并向組中添加或刪除容器。除了Docker Swarm,還有幾個其他的容器協(xié)調(diào)管理器:
- Kubernetes,一個容器集群管理器??梢栽谀阕约旱姆?wù)器上或是在云上運行。
- DC/OS,一個特別的項目,提供了高級用戶界面管理Docker容器。
- Nomad Project,一個部署和管理應用的軟件,運行在Amazon ECS,DigitalOcean,Azure Container Service或Google云平臺。
二、Docker安裝
1. 命令行安裝
這里測試環(huán)境是 Centos Linux 8版本,安裝使用 yum
命令安裝。
yum -y install docker-ce docker-ce-cli #下載Docker
docker version #查看docker版本號
docker images #存在的鏡像
image-20220614152303600
- TAG:版本號(默認最新)
- REPOSITORY: 鏡像名字
- IMAGET ID : 鏡像全局唯一ID
- CREATED: 鏡像創(chuàng)建時間
- SIZE:鏡像大小
2. 設(shè)置加速倉庫
注冊阿里云開發(fā)者賬戶,進入倉庫鏡像模塊,獲取倉庫加速域名。
倉庫(Repository)、注冊服務(wù)器(Registry)、注冊索引(Index)有何關(guān)系?
首先,倉庫是存放一組關(guān)聯(lián)鏡像的集合,比如同一個應用的不同版本的鏡像,注冊服務(wù)器是存放實際的鏡像的地方,注冊索引則負責維護用戶的賬號,權(quán)限,搜索,標簽等管理。注冊服務(wù)器利用注冊索引來實現(xiàn)認證等管理。
3. 配置普通用戶管理Docker
由于需要使用普通用戶對Docker進行管理,因此需要給普通用戶配置Docker權(quán)限,根據(jù) 官方文檔來進行配置。具體命令行如下:
sudo groupadd docker #加入Docker用戶組
sudo usermod -aG docker $USER #將用戶添加到用戶組
newgrp docker #刷新權(quán)限
id $USER #查看用戶情況
docker run hello-world #運行hello world測試
image-20220615190215061
三、Docker基本使用
- 獲取鏡像
docker pull REPOSITORY:TAG
- 運行鏡像
docker run IMAGE_ID
- 刪除鏡像
docker rmi IMAGE_ID
- 暫停容器
docker stop CONTAINER_ID
docker run -i 鏡像ID #交互模式啟動容器
## 常用參數(shù)
-i, --interactive Keep STDIN open even if not attached
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--ipc string IPC mode to use
--isolation string Container isolation technology
--kernel-memory bytes Kernel memory limit
-p : 宿主機端口 :Docker運行端口
-P : 隨機宿主機端口
-t : 命令終端
image-20220614154748840
Docker虛懸鏡像:倉庫名、標簽都為的鏡像。建議刪除
前臺啟動和后臺啟動
docker run -d #守護式啟動
docker run -i #前臺式啟動
#重新進入命令交互界面
docker exec -it 容器ID bashshell
docker attach 容器ID
區(qū)別:
- accatch 不會重新創(chuàng)建一個新的進程,使用
exec
會導致終端停止 - exec 會重新創(chuàng)建一個新的進程,不會導致終端停止,此種方法也是工作常用的
-
開源軟件
+關(guān)注
關(guān)注
0文章
212瀏覽量
16255 -
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95189 -
Docker
+關(guān)注
關(guān)注
0文章
515瀏覽量
12937
發(fā)布評論請先 登錄
一文帶你搞懂Docker容器的核心基石Cgroups
一文帶你入門Docker容器

如何使用 Docker容器化技術(shù)
ARM平臺實現(xiàn)Docker容器技術(shù)
ARM平臺實現(xiàn)Docker容器技術(shù)
如何在Docker中創(chuàng)建容器
理解Docker容器并暢玩docker
一文帶你讀懂Docker容器 2

一文帶你讀懂Docker容器 3

評論