1. 程式人生 > 其它 >1、CentOS 8.5.2111 安裝Docker

1、CentOS 8.5.2111 安裝Docker

轉載自: http://www.linuxe.cn/post-323.html

一、Docker介紹

1、Docker的作用與原理

Docker是容器技術的一種實現方式,容器技術可以快速的將不同應用或者一個應用的不同版本打包到一個可移植的容器中實現服務快速部署,減少環境不一致帶來的問題,而且每個容器之間相互隔離互不影響,這好比船上有很多集裝箱,裝水果的集裝箱出了問題,但是不影響裝酒水的集裝箱。但是需要明白的是嚴格來說Docker並不是容器,它是對容器進行了封裝,以實現簡化管理。Docker底層技術是Linux核心所自帶的LXC技術。

2、Docker名詞解釋

CGROUP:它負責對Docker各容器之間資源佔用進行分配管理。相比傳統虛擬化來說Docker容器會共享宿主機的核心資源,而且少了系統層面的開銷,不需要為每個容器去虛擬化一個完整的系統,而且即使是下載一個Centos系統映象也才200M(底層會使用宿主機的核心,也因此容器的核心是無法升級的,必須和宿主機一致)。Docker不太適合對資料或日誌進行儲存,資料檔案一般會通過NFS\MFS等技術掛載到Docker容器之外。

Namespace:負責容器之間資源隔離的實現。不同的Namespace隔離的資源不同:

· UTS:隔離主機名和域名,要求系統核心版本2.6

· IPC:隔離訊息佇列、共享記憶體、訊號量,要求系統核心版本2.6

· PID:隔離程序編號,要求系統核心版本,要求系統核心版本2.6

· NETWORK:隔離網路裝置和埠等,要求系統核心版本2.6

· MOUNT:隔離檔案系統與掛載點,要求系統核心版本2.4

· USER:用於隔離使用者和使用者組,需要注意的是登陸容器後看到的root通常不是真正的root,比如要用那個使用者去cat /etc/passwd,那一樣會報出許可權錯誤。要求系統核心版本3.8,這也是為什麼要在Centos 7使用Docker的原因

注:UTS、NET、IPC這三個名稱空間通常是共享給各容器使用,這樣可以更方便的實現多容器使用同埠的需求。否則需要DNAT、SNAT兩次網路轉換才可以。

docker映象:可以理解為模板檔案,也可以想象成平時裝系統用的.iso檔案
docker容器:映象執行之後成為docker容器,就像程式執行後變成程序

docker倉庫(registry):映象倉庫,就像github一樣可以存放很多做好的映象。比如需要LAMP環境可以去公有倉庫裡看看有沒有合適的映象,有的話直接下載就可以使用,無需配置。也可以自建倉庫,存放適合內部使用的映象。Docker採用分層構建機制,最底層為bootfs,上層為rootfs。在bootfs中包含了bootloader和kernel,它的作用就是用於引導和啟動容器,在容器啟動完成後就會卸掉bootfs節約記憶體,rootfs則是容器的根檔案系統。而且不同的映象如果使用到了相同的內容,只會存一份,節約了磁碟空間。Aufs是Docker最初使用的容器檔案系統,而現在最主流的則是overlay2(已經從3.18版本開始被Linux核心合併)、devicemapper(CentOS7早期所使用)。

二、Docker的安裝與啟動

1、使用YUM安裝Docker

前面已經提到過要使用Docker的話系統核心要求3.8以上,所以最好使用CentOS 7作為平臺。目前安裝Docker的主流方法就是使用第三方YUM倉庫,比如阿里雲、清華大學等。Docker從V1.13之後分為了CE和EE兩個分支,CE為社群免費版,EE為收費版。Docker的版本號也改為用年月命名,如18.03代表18年3月發行的版本。

yum install docker-ce  #安裝docker-ce程式,老版本中命名則是docker.io、docker-engine、docker

2、使用Docker Machine遠端安裝Docker

Docker Machine的作用就是可以通過一臺配置好Docker Machine的機器對遠端其他伺服器安裝Docker,這個僅需瞭解即可

3、檢視Docker版本資訊

使用docker version命令檢視當前Docker版本號,使用docker info命令可以檢視更詳細資訊,比如啟動了多少個容器、預設的倉庫地址、下載了多少映象等,還有上面說到的檔案系統,overlay2。如果提示"Is the docker daemon running on this host",說明服務沒有啟動,如圖:

4、啟動Docker服務,由於Docker沒有認證機制,所以預設是使用sock檔案而不是埠,這樣可避免入侵監聽埠的話

systemctl start docker.service
systemctl enable docker
#如果要監聽埠的話
vi /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}

轉載自:http://www.linuxe.cn/post-323.html