Ubuntu安装Docker
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守护进程。
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2020-12-17 线程池
2019-12-17 百度云BCC主机宝镜像
2019-12-17 软件设计师10-系统开发模型
2018-12-17 Mysql更改表名大小写不敏感