Docker 安装指南
阿里云和中国版 Azure 的虚机上安装 Docker 有专属加速镜像,详细参考相关章节。Windows 10 和 macOS 10.10 之前版本缺少 Hyper-V 或 Hypervisor 框架支持,需要 Docker Toolbox 依赖 VirtualBox 提供虚拟化。CentOS 8 及后续版本建议使用兼容的 podman 代替。
Windows
macOS
Linux
官方库自动安装
# 安装辅助脚本路径 https://github.com/docker/docker-install/blob/master/install.sh
sudo curl -fsSL https://get.docker.com | bash -s docker
# 使用 aliyun 镜像安装
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 普通用户添加 docker 组后可运行 docker 管理命令
sudo usermod -aG docker USERNAME
阿里云虚机
在阿里云虚机上可以使用以下命令安装 Docker 环境以启用阿里云 Docker 镜像:
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
Azure 中国版虚机
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud
CentOS 7
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
Ubuntu
Ubuntu 库安装
sudo apt install docker.io docker-compose
Docker 库安装
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt update && sudo apt install docker-ce python3-pip
sudo apt install docker-compose-plugin # 安装官方 docker-compose
sudo pip3 install docker-compose
# 非 root 用户管理 docker
sudo usermod -aG docker USER_NAME
sudo newgrp docker # 赋予当前用户 docker 组权限
sudo setfacl -m user:USER_NAME::rw /var/run/docker.sock
# 确定 Docker Compose 版本
docker compose version
Snap 安装
# 通过 Snap 安装
snap install docker
snap start docker --enable # 启动 docker,并添加随机启动
snap services docker # 确认服务状态
service snap.docker.dockerd status # 确认服务详情
snap refresh docker # 更新 Snap 安装的 docker 服务
# Snap 安装的 Docker 服务相关路径
/snap/docker/current # 安装目录
# 服务启动配置文件
/etc/systemd/system/snap.docker.dockerd.service
# 配套 AppArmor 配置文件
/var/lib/snapd/apparmor/profiles/snap.docker.docker
/var/lib/snapd/apparmor/profiles/snap.docker.dockerd
# 默认 Unix Socket 文件路径
unix:///var/snap/docker/current/run/docker/libcontainerd/docker-containerd.sock
Linux 上的 docker-composer 和 docker-machine 命令需要从 github 直接下载。
Docker Composer 下载页
Docker Machine 下载页
相关路径
常用设置
配置 docker 仓库镜像
国内用户使用 docker 之前需要配置国内的 Docker Hub 加速镜像服务,以下为国内常用镜像地址:
- 中科大 docker 仓库镜像:https://docker.mirrors.ustc.edu.cn
- 网易 docker 仓库镜像:http://hub-mirror.c.163.com
- 阿里云用户有专属镜像地址:https://yq.aliyun.com/articles/29941 容器服务控制台
Docker CE 桌面用户在 Preference 的 Daemon 标签下设置:
Linux 服务器用户参考以下方法:
# Ubuntu 16.04+
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json # 打开 Docker 配置文件
# 添加镜像相关配置
"registry-mirrors": ["https://<阿里云分配前缀>.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com"]
# 重新加载所有 Service 的配置文件后,重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
启用远程管理
docker 默认跑在 Unix Socket 上,只有本机 docker 命令行可以与之交互,需要重写原有启动命令,并打开端口侦听启用远程管理。编辑 /etc/docker/daemon.json 文件,加入 hosts 配置项目。
mkdir -p /etc/systemd/system/docker.service.d
code /etc/systemd/system/docker.service.d/override.conf
# Disable flags to dockerd, all settings are done in /etc/docker/daemon.json
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
systemctl daemon-reload
{
"hosts": ["fd://", "tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"],
"ip": "0.0.0.0",
"registry-mirrors": ["https://<阿里云分配前缀>.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com"]
}
Snap 方式安装的 Docker 服务,socket 路径稍有不同,参考以下例子设置 hosts 参数:
{
"hosts": ["unix:///var/snap/docker/current/run/docker/libcontainerd/docker-containerd.sock", "tcp://0.0.0.0:2375"],
}
重启 docker 服务后,用 netstat -ltpn
可以观察到 dockerd 进程开始侦听 2375 端口:
# netstat -ltpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1353/nginx -g daemo
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1353/nginx -g daemo
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1912/sshd
tcp6 0 0 :::443 :::* LISTEN 1353/nginx -g daemo
tcp6 0 0 :::2375 :::* LISTEN 27493/dockerd
tcp6 0 0 :::80 :::* LISTEN 1353/nginx -g daemo
管理远程 docker 服务
通过 SSH 隧道将 Linux 的 docker 运行端口映射到本地,设置如下环境变量后,即可在本机管理远程 docker 服务。
# Linux / Mac
export DOCKER_HOST="tcp://localhost:2375"
# Windows CMD
set DOCKER_HOST=tcp://localhost:2375
# Windows PowerShell
$env:DOCKER_HOST = "tcp://localhost:2375"
VS Code 配置
"docker.host": "tcp://localhost:2375",
Windows 平台可以独立安装客户端,下载、解压后,将 docker.exe 复制到 C:\Windows\system32 下即可使用 docker 命令。