Docker基础教程(二十六)二进制包安装之Mac OS X版:深度分析Docker之二进制包安装:Mac OS X极客攻略

想要在Mac上玩转Docker又不想被图形界面束缚?二进制包安装带你体验终极定制快感!

前言:为什么选择二进制安装?

对于Mac用户而言,Docker通常通过官方的Docker Desktop进行安装。但有些开发者希望更精细地控制组件版本,或者需要在不支持虚拟化的老版本Mac系统上运行Docker,这时候二进制包安装方式就有了用武之地。

二进制安装允许你直接获取Docker的可执行文件,手动配置每一个环节,就像组装一台高性能跑车而不是直接购买成品车——过程更复杂,但控制感十足

二进制安装 vs 官方安装包:有何不同?

在深入安装过程之前,我们先来了解一下二进制安装与标准安装的区别:

特性

官方Docker Desktop

二进制安装

安装难度

简单(图形化界面)

复杂(命令行操作)

控制粒度

自动配置

完全手动控制

系统要求

macOS 10.14或更新

更广泛的系统兼容性

更新管理

自动更新

手动更新

组件定制

固定组合

可自定义选择

学习价值

较低

深入了解Docker架构

准备工作与系统要求

在开始安装之前,请确保你的Mac满足以下要求:

操作系统:OS X 10.8 “Mountain Lion” 或更新版本硬件:至少4GB RAM(推荐8GB以上)磁盘空间:至少2GB可用空间命令行工具:需要安装Xcode Command Line Tools

打开终端安装命令行工具:


sudo xcode-select --install

下载Docker二进制包

Docker提供了官方二进制下载地址,你可以根据自己的系统架构选择合适的版本:

官方下载地址

https://download.docker.com/mac/static/stable/x86_64/

访问这个页面,你会看到各种Docker版本的列表。选择最新版本(如docker-20.10.9.tgz)下载:



# 使用curl下载二进制包
curl -OL https://download.docker.com/mac/static/stable/x86_64/docker-20.10.9.tgz
 
# 或者使用wget(如果已安装)
wget https://download.docker.com/mac/static/stable/x86_64/docker-20.10.9.tgz

注意:请根据你的Mac芯片架构(Intel或Apple Silicon)选择 appropriate 版本。虽然x86_64版本在Apple Silicon Mac上通过Rosetta 2也能运行,但性能可能不是最优的。

安装步骤详解

步骤一:解压二进制包

下载完成后,需要解压缩.tar文件:



# 解压下载的压缩包
tar xf docker-20.10.9.tgz
 
# 进入解压后的目录
cd docker

解压后会得到多个可执行文件,包括但不限于:


docker
:Docker客户端
dockerd
:Docker守护进程
docker-containerd
:容器运行时
docker-containerd-ctr
:containerd CLI
docker-containerd-shim
:容器进程管理工具
docker-init
:容器初始化系统
docker-proxy
:网络代理
docker-runc
:容器运行时

步骤二:复制二进制文件到系统路径

将二进制文件复制到系统的可执行路径下,以便全局访问:



# 复制所有docker组件到/usr/local/bin目录
sudo cp docker/* /usr/local/bin

步骤三:验证复制是否成功

检查文件是否已正确复制:



# 检查docker版本
docker --version
 
# 如果一切正常,应该输出类似以下内容
# Docker version 20.10.9, build build-9ccd9f

步骤四:配置环境变量

为了更方便地使用Docker命令,将Docker二进制文件路径添加到系统环境变量中。

编辑你的shell配置文件(如~/.zshrc或~/.bash_profile):



# 使用nano编辑配置文件(如果你使用bash)
nano ~/.bash_profile
 
# 或者如果你使用zsh(macOS Catalina及以后版本的默认shell)
nano ~/.zshrc

在文件末尾添加以下行:


export PATH=$PATH:/usr/local/bin

保存文件后,加载配置:



# 如果修改的是bash_profile
source ~/.bash_profile
 
# 如果修改的是zshrc
source ~/.zshrc

配置Docker守护进程

创建必要的配置文件

Docker需要一些配置文件才能正常运行。创建/etc/docker目录并添加daemon.json配置文件:



# 创建docker配置目录
sudo mkdir -p /etc/docker
 
# 创建daemon.json配置文件
sudo tee /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "data-root": "/var/lib/docker"
}
EOF

国内用户提示:registry-mirrors配置可以帮助你加速Docker镜像下载,使用的是中国科学技术大学和网易的镜像源。

创建Docker数据目录

Docker需要专用目录存储镜像和容器数据:



# 创建docker数据目录
sudo mkdir -p /var/lib/docker
 
# 设置目录权限
sudo chmod -R 755 /var/lib/docker

启动Docker守护进程

手动启动dockerd

最简单的方式是直接启动dockerd进程:



# 启动Docker守护进程
sudo dockerd &

这种简单方式启动,终端关闭后进程可能终止。建议使用进程管理工具保持Docker守护进程运行。

使用nohup保持进程运行



# 使用nohup保持docker守护进程运行
nohup sudo dockerd > /var/log/docker.log 2>&1 &

检查Docker是否正常运行



# 检查docker进程是否运行
ps aux | grep dockerd
 
# 应该能看到dockerd进程正在运行
 
# 检查docker信息
docker info

权限配置

创建docker用户组

默认情况下,Docker需要root权限才能运行。为了允许普通用户执行Docker命令,需要将用户添加到docker组:



# 创建docker用户组
sudo groupadd docker
 
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
 
# 应用组变更(需要重新登录或使用以下命令)
newgrp docker

验证非root用户权限

打开新的终端窗口,尝试运行Docker命令而不使用sudo:



# 运行hello-world容器验证安装
docker run hello-world

如果一切正常,你将看到D的欢迎信息:



Hello from Docker!
This message shows that your installation appears to be working correctly.
...

完整安装示例

下面是一个完整的安装示例脚本,你可以保存为install-docker.sh并执行:



#!/bin/bash
 
# Docker二进制安装脚本 for macOS
echo "开始安装Docker二进制版本..."
 
# 定义版本变量
DOCKER_VERSION="20.10.9"
DOWNLOAD_URL="https://download.docker.com/mac/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz"
 
# 下载Docker二进制包
echo "步骤1: 下载Docker二进制包..."
curl -OL ${DOWNLOAD_URL}
 
# 解压包
echo "步骤2: 解压包..."
tar xf docker-${DOCKER_VERSION}.tgz
 
# 复制二进制文件到系统路径
echo "步骤3: 复制二进制文件到/usr/local/bin..."
sudo cp docker/* /usr/local/bin
 
# 创建配置目录
echo "步骤4: 创建配置目录..."
sudo mkdir -p /etc/docker
 
# 创建daemon.json配置文件
echo "步骤5: 创建daemon.json配置文件..."
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "data-root": "/var/lib/docker"
}
EOF
 
# 创建数据目录
echo "步骤6: 创建数据目录..."
sudo mkdir -p /var/lib/docker
sudo chmod -R 755 /var/lib/docker
 
# 创建docker用户组
echo "步骤7: 创建docker用户组..."
sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker $USER
 
# 启动Docker守护进程
echo "步骤8: 启动Docker守护进程..."
nohup sudo dockerd > /var/log/docker.log 2>&1 &
 
echo "安装完成! 请在新终端中运行 'docker run hello-world' 验证安装。"

使用方式:



# 给脚本添加执行权限
chmod +x install-docker.sh
 
# 运行安装脚本
./install-docker.sh

常见问题与解决方案

1. 端口冲突问题

如果Docker守护进程启动失败,可能是由于端口冲突:



# 检查端口占用情况
netstat -an | grep 2375
netstat -an | grep 2376
 
# 如果端口被占用,可以在daemon.json中更改Docker监听端口

2. 权限问题

如果遇到权限错误,确保当前用户在docker组中:



# 检查用户所属组
groups
 
# 如果不在docker组中,重新添加
sudo usermod -aG docker $USER
newgrp docker

3. 存储驱动问题

某些Mac系统可能会遇到存储驱动兼容性问题:



# 可以在daemon.json中更改存储驱动
{
  "storage-driver": "overlay2"
}

4. 无法下载镜像

由于网络原因,可能无法从Docker Hub直接拉取镜像:



# 使用国内镜像源
docker pull registry.cn-hangzhou.aliyuncs.com/library/hello-world

性能优化与进阶配置

配置镜像加速器

鉴于国内网络问题,后续拉取Docker镜像可能十分缓慢,可以配置加速器来解决。除了前面提到的配置方法外,还可以在拉取镜像时直接指定镜像源:



# 使用阿里云镜像加速器
docker pull registry.cn-hangzhou.aliyuncs.com/library/ubuntu:latest

调整Docker资源限制

对于二进制安装的Docker,可以通过修改配置调整资源使用:



# 在daemon.json中添加资源限制
{
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65536,
      "Soft": 65536
    }
  },
  "max-concurrent-downloads": 6,
  "max-concurrent-uploads": 4
}

二进制安装的优缺点

优点

灵活性高:可以更好地定制和控制安装过程适应性强:适用于不支持包管理系统的环境无依赖性:不需要依赖操作系统的包管理器版本控制:可以精确控制安装的Docker版本学习价值:通过手动安装,深入了解Docker架构和运行机制

缺点

复杂度高:安装过程相对复杂,需要手动配置环境变量和启动服务维护难度大:需要手动更新和管理二进制文件,增加了维护成本缺乏自动更新:需要手动检查和应用更新兼容性问题:可能需要自行解决依赖和兼容性问题

总结与建议

通过二进制包在Mac OS X上安装Docker虽然过程较为复杂,但提供了更高的灵活性和控制权,适合想要深入了解Docker工作原理的高级用户和开发者。

对于大多数普通用户,我们仍然推荐使用官方的Docker Desktop for Mac,它提供了图形化界面和自动更新功能,更容易使用和维护。

但对于以下场景,二进制安装可能是更好的选择:

需要在老版本Mac OS X上运行Docker需要精确控制Docker版本和组件希望深入学习Docker内部机制在受限环境中部署Docker需要自定义编译的Docker版本

无论选择哪种安装方式,Docker都为应用开发、测试和部署提供了强大的容器化解决方案,是现代软件开发流程中不可或缺的工具。

附加资源

官方Docker文档:https://docs.docker.com/Docker Hub:https://hub.docker.com/Docker GitHub仓库:https://github.com/docker国内镜像加速器

阿里云镜像加速器网易云镜像加速器:http://hub-mirror.c.163.com中科大镜像源:https://docker.mirrors.ustc.edu.cn

© 版权声明

相关文章

暂无评论

none
暂无评论...