Docker 安装

Docker 安装

阿里云和中国版 Azure 的虚机上安装 Docker 有专属加速镜像,详细参考相关章节。Windows 10 和 macOS 10.10 之前版本缺少 Hyper-V 或 Hypervisor 框架支持,需要 Docker Toolbox 依赖 VirtualBox 提供虚拟化。

Windows

macOS

Linux

官方库自动安装

sudo curl -fsSL https://get.docker.com | bash -s docker

# 普通用户添加 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

Ubuntu

官方库手动安装

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

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 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 配置项目。

{
    "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"

Windows 平台可以独立安装客户端,下载、解压后,将 docker.exe 复制到 C:\Windows\system32 下即可使用 docker 命令。

Author: njun
njun's picture
Updated: 2019/12/12