Docker 學習筆記
基本概念
- 映象:Docker 的映象概念類似於虛擬機器裡的映象,是一個只讀的模板,一個獨立的檔案系統,包括執行容器所需的資料,可以用來建立新的容器。
- DockerFile;映象可以基於 DockerFile 構建,DockerFile 是一個描述檔案,裡面包含若干條命令,每條命令都會對基礎檔案系統建立新的層次結構,使用者可以透過編寫 DockerFile 建立新的映象。
- 容器:Docker 容器是由 Docker 映象建立的執行例項。Docker 容器類似虛擬機器,可以支援的操作包括啟動,停止,刪除等。每個容器間是相互隔離的,但隔離的效果比不上虛擬機器。容器中會執行特定的應用,包含特定應用的程式碼及所需的依賴檔案。
- 容器隔離:在 Docker 容器中,每個容器之間的隔離使用 Linux 的 CGroups(Control Groups)和 Namespace 技術實現的。CGroups(控制組)提供了資源控制: CPU、記憶體、磁碟等資源的訪問限制。Namespaces (名稱空間)提供了系統資源的隔離:程序、網路、檔案系統等。
- Registry:如果你使用過 Git 和 GitHub 就很容易理解 Docker 的倉庫概念。Docker 倉庫相當於一個 GitHub 上的程式碼庫。Docker 倉庫是用來包含映象的位置,Docker 提供一個註冊伺服器(Registry)來儲存多個倉庫,每個倉庫又可以包含多個具備不同 tag 的映象。Docker 執行中使用的預設倉庫是 Docker Hub 公共倉庫。倉庫支援的操作類似 Git,建立了新的映象後,我們可以 Push 提交到倉庫,也可以從指定倉庫 Pull 拉取映象到本地。
Docker 安裝
Docker 有兩個版本,Community Edition(CE) 和 Enterprise Edition(EE)。即社群版和企業版本。
安裝 docker-engine:見官網手冊 https://docs.docker.com/engine/install/
更換 docker-ce 映象源:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
docker-engine安裝流程:
解除安裝之前安裝的docker及其工具包
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
新增docker-ce的安裝源:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安裝docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
驗證安裝是否成功
在安裝成功後,Docker 的守護程序自動啟動,不需要手動啟動服務。此時,我們可以檢視其版本資訊,使用如下命令:
docker version
如果你是 自己搭建的 Docker 環境,可能會提示我們沒有相應的許可權連線到 Docker 守護進行繫結的 Unix 套接字。這是因為,預設情況下,該套接字歸屬於 root 使用者,對於其它使用者只能透過 sudo 來進行訪問。
如果要讓普通使用者可以直接執行 Docker 命令而不必在每次執行時都輸入 sudo 來獲得許可權,我們可以將要執行 Docker 命令的使用者新增到使用者組 Docker 中。該使用者組會在安裝後自動建立,我們只需執行新增使用者到 Docker 使用者組的操作:
sudo usermod -aG docker username
在新增成功後,我們還需要重新開啟一個 shell 修改才能生效。這時可以嘗試開啟一個新的終端或者使用如下命令:
sudo su username
在安裝之後,我們可以透過執行一個 hello-world 的映象來驗證 Docker CE 是否被正確的安裝,使用如下命令:
docker run hello-world
該命令會下載一個名為 hello-world 的映象並執行於一個容器中。當這個容器執行時,會輸出一些資訊並退出:
如上圖中標註出的提示資訊所示,提示我們安裝正確。
docker hub 映象配置
使用 Docker Hub 國內映象:https://linux.do/t/topic/114516
注意:所有映象加速器網址需要 https://
開頭,否則會報錯!
配置方法:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker