- 本文环境
- 云服务器:阿里云(不同厂商云服务器上的操作基本相同)
- 系统:Ubuntu 22.04
- 终端:腾讯云 OrcaTerm(可使用 Xshell+Xftp 代替)
- 本文全部 shell 终端指令均执行在 root 用户下(命令前的
sudo
可不加),如果是非 root 用户也许本文中某些没加sudo
命令也要加上sudo
本文不具体介绍 Docker
下面步骤均根据写本文时最新的官方文档
安装 docker
使用 APT 安装
首次在新的主机上安装 Docker Engine 之前,需要先设置 Docker 的软件源,之后就可以通过软件源安装和更新 Docker
1.设置 Docker 的软件源
依次执行以下命令
1 | # 更新软件包列表 |
鉴于国内网络问题,建议使用国内源,官方源请在注释中查看
1 | # 添加软件源的 GPG 密钥(阿里镜像源) |
2.安装 Docker
执行以下命令
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
使用脚本安装
Docker 在 https://get.docker.com/ 提供了一个方便的脚本,可以在开发环境中非交互式地安装 Docker,不推荐在生产环境使用,但对于创建适合自己需求的配置脚本非常有用,该脚本的源代码开源在 GitHub 上的 docker-install 仓库
1 | curl -fsSL https://get.docker.com -o get-docker.sh |
这个示例会从 https://get.docker.com/ 下载脚本并运行,在 Linux 上安装最新稳定版本的 Docker
可以使用
--dry-run
选项运行脚本,以了解脚本在调用时会运行哪些步骤curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh –dry-run
如果想安装最新的预发布版本,可以通过测试通道
1 | curl -fsSL https://test.docker.com -o test-docker.sh |
查看 Docker 状态
安装完成后,Docker 服务将会自动启动,可以输入下面命令查看 Docker 服务状态
1 | sudo systemctl status docker |
输出显示 Docker 正常运行
测试 Docker 是否安装正确
1 | sudo docker run hello-world |
若能正常输出以下信息,则说明安装成功
1 | Unable to find image 'hello-world:latest' locally |
停止 Docker 服务
希望通过执行以下命令停止 Docker 服务时
1 | sudo systemctl stop docker |
会提示
1 | Warning: Stopping docker.service, but it can still be activated by: |
此时再次查看 Docker 状态
会发现有一个TriggeredBy: docker.socket
依旧在运行
实际上是 Docker 在关闭状态下被访问的自动唤醒机制,即在执行任意 Docker 命令时会自动启动
如果不希望 Docker 被自动唤醒,在停止 Docker 服务时应该依次执行下面两条命令
1 | sudo systemctl stop docker.socket |
附上启动的命令
1 | sudo systemctl start docker |
注:docker.socket
也会一起跟着重启
卸载 Docker
- 卸载 Docker Engine, CLI, containerd 和 Docker Compose 软件包
1 | sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras |
- 主机上的镜像、容器、卷或自定义配置文件不会自动删除,因此要手动删除所有的镜像、容器和卷
1 | sudo rm -rf /var/lib/docker |
以及相关编辑过的配置文件
非 root 用户管理 Docker
Docker 守护进程绑定Unix socket
而不是 TCP 端口,默认情况下,Unix socket
的所有者是 root 用户,其他用户想要访问只能使用 sudo,Docker 守护进程始终以 root 用户身份运行
出于安全考虑,一般 Linux 系统上不会直接使用 root 用户,如果希望非 root 用户能够不通过 sudo 访问,可以创建一个名为docker
的 Unix 组,并将需要使用 Docker 的用户添加进用户组
创建docker
组
注:Ubuntu 在使用 apt 安装 Docker 时会自动创建该组
1 | sudo groupadd docker |
将用户添加到docker
组
1 | # 将 $USER 修改为你要添加的用户名 |
刷新组成员权限
重新登陆或运行以下命令
1 | newgrp docker |
测试
不使用 sudo 运行以下命令(使用添加到docker
用户组的用户)
1 | docker run hello-world |
正常输出以下信息,则说明添加成功
1 | Hello from Docker! |
注:如果没有在测试 Docker 是否安装正确时运行过该命令,则会多出拉取镜像的信息
可能出现的问题
1 | WARNING: Error loading config file: /home/user/.docker/config.json - |
原因:当前用户没有加入docker
用户组
解决方法:按上述流程将该用户加入用户组,并依次执行以下命令
1 | # 将 $USER 修改为当前用户的用户名 |