Docker架構
docker的架構設計分為三個組件:一個客戶端,一個REST API和一個服務器(守護進程):
- Client :與REST API交互。主要目的是允許用戶連接守護進程。
- REST API:充當客戶端和服務器之間的接口,實現通信。
- 守護進程:負責實際管理容器 - 啟動,停止等。守護進程監聽來自docker客戶端的API請求。
環境
WSL Ubuntu 20.4
查看系統版本
lsb_release -a
cat /proc/version
官網
使用倉庫安裝
卸載舊版Docker,docker, docker.io, docker-engine都是舊版Docker名字。
sudo apt-get remove docker docker-engine docker.io containerd runc
設置倉庫
更新apt-get,安裝包使得apt可以使用https。
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
添加Docker官方的GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
設置stable倉庫
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安裝Docker引擎
更新apt包索引,安裝最新版本的Docker Engine和containerd
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
如果想要安裝特定版本Docker Engine,需要在 repo 中列出可用版本,然后選擇並再次安裝
#列出所有版本
apt-cache madison docker-ce
#安裝特定版本,例如: 5:20.10.12~3-0~ubuntu-focal
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
測試Docker
啟動Docker服務
#啟動Docker服務
sudo service docker start
下載測試映像並在容器中運行它。當容器運行時,它會打印一條消息並退出。
sudo docker run hello-world
卸載Docker
#卸載Docker Engine、CLI和Containerd包
sudo apt-get purge docker-ce docker-ce-cli containerd.io
#主機上的映像、容器、卷或自定義配置文件不會自動刪除。刪除所有鏡像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
從包安裝
去https://download.docker.com/linux/ubuntu/dists/ 選擇你的Ubuntu版本,然后瀏覽pool/stable/,選擇amd64, armhf,arm64,或s390x,並下載.deb文件要安裝引擎版本。
安裝 Docker Engine
sudo dpkg -i /path/to/package.deb
Docker 守護進程自動啟動。
報錯
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380
docker run hello-world時報錯。
原因是docker的版本和linux的內核版本不兼容,查了下是WSL 1是不支持Docker的守護進程的。可以使用Docker CLI連接到通過Docker for Windows或任何其他VM 運行的遠程Docker守護進程。WSL 2可以完美支持Docker守護進程。