Docker 安装指南

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

命令 作用
yum list docker-ce --showduplicates | sort -r 检查可装版本
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

命令 作用
apt-cache madison docker-ce 检查可装版本

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 下载页

相关路径

路径 存放内容
/var/lib/docker 默认镜像位置

常用设置

配置 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 命令。

Author: njun
njun's picture
Updated: 2022/05/27