操作系统:ubuntu20.04
一、安装&卸载
卸载老版本的docker
sudo apt-get remove docker docker-engine docker.io containerd runc
如果apt-get
报告没有安装这些软件包,那就可以了。
/var/lib/docker/
的内容(包括映像,容器,卷和网络)被保留。 如果您不需要保存现有数据,并希望从全新安装开始,请参阅的卸载Docker Engine部分。
设置repository
- 更新apt软件包索引并安装软件包
sudo apt-get update
sudo apt-get install \
apt-transport-https \
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
- 使用以下命令来设置稳定的存储库
echo \
"deb [arch=amd64 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 engine
更新apt软件包索引,并安装最新版本的Docker Engine和容器
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
卸载Docker Engine
卸载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
二、使用docker
管理docker作为非root用户
Docker守护程序绑定到Unix套接字而不是TCP端口。 默认情况下,Unix套接字由用户root拥有,其他用户只能使用sudo访问它。 Docker守护程序始终以root
用户身份运行。
如果您不想以sudo作为docker命令的开头,请创建一个名为docker
的Unix组并将用户添加到其中。 Docker守护程序启动时,它将创建一个可由Docker组成员访问的Unix套接字。
- 创建
docker
组
sudo groupadd docker
- 将当前用户加入docker组
sudo usermod -aG docker $USER
注销并重新登录,以便重新评估您的组成员身份。如果在虚拟机上进行测试,则可能需要重新启动虚拟机以使更改生效。在台式机Linux环境(例如X Windows)上,完全注销会话,然后重新登录。在Linux上,您还可以运行以下命令来激活对组的更改:
newgrp docker
确认您可以在不使用sudo的情况下运行docker命令。
docker run hello-world
此命令下载测试图像并在容器中运行它。 容器运行时,它会打印参考消息并退出。
如果最初在将用户添加到docker组之前使用sudo运行Docker CLI命令,则可能会看到以下错误,这表明由于sudo命令而创建的~/.docker/
目录使用了不正确的权限。
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
要解决此问题,请删除~/.docker/
目录(该目录会自动重新创建,但是所有自定义设置都会丢失),或者使用以下命令更改其所有权和权限:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
对于ubuntu来说,会自动加docker service加入开机启动,对于其他系统可以使用systemd命令加入开机自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
如果想关闭开机自启,可以使用disable
命令
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
- 对于长期运行的docker,可能会产生较多的日志,从而消耗较多的磁盘资源,这里可以进行配置进行滚动日志。参考官方文档https://docs.docker.com/config/containers/logging/local/
- 如果想配置远程访问,参考https://docs.docker.com/engine/install/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections,不过要注意安全问题