1、卸载旧版本
Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们。
sudo apt-get remove docker docker-engine docker.io containerd runc
当前称为 Docker Engine-Community 软件包 docker-ce 。
2、设置仓库
在新主机上首次安装Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker 。
更新 apt 包索引:
sudo apt-get update
安装 apt 依赖包,用于通过HTTPS来获取仓库:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 Docker 的官方 GPG 密钥:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
sudo apt-key fingerprint 0EBFCD88
使用以下指令设置稳定版仓库:
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
3、安装 Docker Engine-Community
更新 apt 包索引:
sudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd:
sudo apt-get install docker-ce docker-ce-cli containerd.io
或者安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本:
apt-cache madison docker-ce
使用第二列中的版本字符串安装特定版本,例如 5:20.10.20~3-0~ubuntu-jammy。
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
4、测试
sudo docker run hello-world
5、在非sudo用户下运行docker命令
(1)#代表root管理员权限
(2)$代表普通用户
在运行 docker 的命令时必须加上 sudo,例如:sudo docker ps -a ,但是我们其实更希望能够直接通过docker ps -a来运行 docker 命令。
解决办法:
- 创建 docker 的用户组:sudo groupadd docker
- 将当前 user 加入 docker 的用户组:sudo gpasswd -a $USER docker
- 更新用户组:newgrp docker
测试docker命令是否可以使用sudo正常使用:
问题:
切换当前会话到新 group 或者重启会话。可以通过 newgrp docker切换当前用户组到 docker 用户组。
注意:这一步是必须的,否则 groups 命令获取到的是缓存的用户组信息,刚添加的用户组信息可能还未能生效,所以docker ps -a执行时同样会有错。
但有时还会遇到下面的问题,导致仍然无法直接通过docker ps -a访问 docker 命令。
如果在确定了用户组的设置是正确的情况下,再次遇到这个问题,就是由于/var/run/docker.sock文件的权限不够导致的。
ls -lrth /var/run/docker.sock
sudo chmod666 /var/run/docker.sock更改权限。
再次查看docker.sock 的权限,这样就可以直接通过docker ps -a这样的方式操作docker命令,而不用每次都加上sudo了