跳转至

docker 安装

搭建 docker 环境

Docker Engine 的版本

对于 Docker Engine 来说,其主要分为两个系列

  • 社区版 ( CE, Community Edition )
  • 企业版 ( EE, Enterprise Edition )

从另外一个角度,Docker Engine 的迭代版本又会分为

  • 稳定版 ( Stable release )
  • 预览版 ( Edge release )。

不论是稳定版还是预览版,它们都会以发布时的年月来命名版本号,例如如 20 年 1 月的版本,版本号就是 20.01

  • Docker Engine 的稳定版固定为每三个月更新一次,而预览版则每月都会更新。在预览版中可以及时掌握到最新的功能特性,推荐安装更有保障的稳定版本。
  • 在主要版本之外,Docker 官方也以解决 Bug 为主要目的,不定期发布次要版本。次要版本的版本号由主要版本和发布序号组成,如:20.01.2就是对 20.01 版本的第二次修正。

Docker 的环境依赖

  • 由于 Docker 的容器隔离依赖于 Linux 内核中的相关支持,所以使用 Docker 首先需要确保安装机器的 Linux kernel 中包含 Docker 所需要使用的特性。以目前 Docker 官方主要维护的版本为例,我们需要使用基于 Linux kernel 3.10 以上版本的 Linux 系统来安装 Docker。
  • 下面的表格就直接展示了 Docker 对主流几款 Linux 系统版本的要求。
操作系统 支持的系统版本
CentOS CentOS 7
Debian Debian Wheezy 7.7 (LTS)
Debian Jessie 8 (LTS)
Debian Stretch 9
Debian Buster 10
Fedora Fedora 26Fedora 27
Ubuntu Ubuntu Trusty 14.04 (LTS)
Ubuntu Xenial 16.04 (LTS)
Ubuntu Artful 17.10...

在 Linux 系统中安装 Docker

包管理

因为 Docker 本身就基于 Linux 的核心能力,同时目前主流的 Linux 系统中所拥有的软件包管理程序,已经可以很轻松的帮助我们处理各种依赖问题

CentOS 安装
$ sudo yum install yum-utils device-mapper-persistent-data lvm2
$
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce
$
$ sudo systemctl enable docker
$ sudo systemctl start docker...
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-get update
$ sudo apt-get install docker-ce
$
$ sudo systemctl enable docker
$ sudo systemctl start docker
Debian 安装
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
$
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
$
$ sudo systemctl enable docker
$ sudo systemctl start docker...
Fedora 安装
$ sudo dnf -y install dnf-plugins-core
$
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
$ sudo dnf install docker-ce
$
$ sudo systemctl enable docker
$ sudo systemctl start docker...
docker 脚本包装
脚本会默认安装最新版 docker  docker compose 

> curl -fsSL [https://get.docker.com](https://get.docker.com/) | bash -s docker --mirror Aliyun
docker 静态二进制安装
https://download.docker.com/linux/static/stable/
  • 在安装 Docker 完成之后,我们需要先启动 docker daemon 使其能够为我们提供 Docker 服务,这样我们才能正常使用 Docker
  • 在我们通过软件包的形式安装 Docker Engine 时,安装包已经为我们在 Linux 系统中注册了一个 Docker 服务,所以我们不需要直接启动 docker daemon 对应的 dockerd 这个程序,而是直接启动 Docker 服务即可。

查看 docker 相关信息

在 Docker服务启动之后,我们先来尝试一个最简单的查看 Docker 版本的命令:

docker version

image-20230505113002220

docker version 这个命令能够显示 Docker C/S 结构中的服务端 ( docker daemon ) 和客户端 ( docker CLI ) 相关的版本信息。在默认情况下,docker CLI 连接的是本机运行的 docker daemon ,由于 docker daemon 和 docker CLI 通过 RESTful 接口进行解耦,所以我们也能修改配置用于操作其他机器上运行的 docker daemon。

如果想要了解 Docker Engine 更多相关的信息,我们还可以通过 docker info 这个命令:

docker info

Docker 更换默认网段并换源

  1. Docker 默认网段是 172.X.X.X/24 ,网段冲突的情况下,可以更换默认网段为 10.X.X.X/24

    vim /etc/docker/daemon.json

{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "bip": "10.30.0.1/24",
    "default-address-pools": [
        {"base": "10.30.0.0/24", "size": 24},
        {"base": "10.30.1.0/24", "size": 24}
    ]
}
  • 重启docker服务(注意:必须重启,否则不生效)

systemctl daemon-reload && systemctl restart docker

- Docker 官方提供的国内镜像源:
{         
    "registry-mirrors":["https://registry.docker-cn.com"]
} 
- 阿里云的镜像地址:
{
    "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
- 中科院的镜像
{         
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
} 

docker 更换默认安装目录

执行以下命令,获得 默认安装目录

docker info |grep Dir

在 Docker 中更改默认安装目录有多种方法:

  1. 停止 Docker 服务。运行以下命令:

    sudo systemctl stop docker || sudo service docker stop

  2. 复制 Docker 的默认目录 /var/lib/docker 到新目录,例如 /new/docker。

    sudo cp -r /var/lib/docker /new/docker

  3. 编辑 Docker 服务的启动脚本,例如

    vim /lib/systemd/system/docker.service

  4. 找到 ExecStart 行,并在该行的末尾添加

    --data-root=/new/docker,指定新的 Docker 目录。

  5. 重新加载 Docker 服务的配置。可以使用以下命令重新加载配置。

    sudo systemctl daemon-reload

  6. 启动 Docker 服务。可以执行以下命令启动 Docker 服务:

    sudo systemctl start docker || sudo service docker start

注意

现在,Docker 将使用新目录 /new/docker 作为默认安装目录。请注意,在更改默认目录后,以前创建的容器和映像可能不再可用。

删除默认网卡

  1. 删除 docker 0 网卡

ip link set dev docker0 down && brctl delbr docker0

  1. 删除 br 网卡

ip link set dev br-d9764430d2f1 down && brctl delbr br-d9764430d2f1

  1. 重启 docker

service docker restart

在 Windows 和 Mac 中安装 Docker

Docker Desktop

对于 Windows 系统来说,安装 Docker for Windows 需要符合以下条件
  • 必须使用 Windows 10 Pro ( 专业版 )
  • 必须使用 64 bit 版本的 Windows
对于 macOS 系统来说,安装 Docker for Mac 需要符合以下条件
  • Mac硬件必须为 2010 年以后的型号

  • 必须使用 macOS El Capitan 10.11 及以后的版本

  • 虚拟机软件 VirtualBox 与 Docker Desktop 兼容性不佳,建议在安装 Docker for Windows和 Docker for Mac 之前先卸载 VirtualBox

在确认系统能够支持 Docker Desktop 之后,可从 Docker 官方网站下载这两个软件的安装程序,以下是 Docker Store 的官方链接。

Docker Desktop 为了在 Windows 和 macOS 中使用 Docker 提供了与 Linux 中几乎一致的方法,只需要打开 Windows 中的 PowerShell 或者 macOS 中的 Terminal,亦或者 Git Bash、Cmder、iTerm等控制台类软件,输入 docker 命令即可。

Docker Desktop 的实现原理

Docker 的核心功能,也就是容器实现,是基于 Linux内核中 Namespaces、CGroups 等功能的。Docker 是依赖于 Linux 而存在的。

Docker Desktop 是如何实现让我们在 Windows和 macOS 中如此顺畅的使用 Docker 的呢?
  • 既然 Windows 和 macOS 中没有 Docker能够利用的 Linux 环境,可以创造一个 Linux 环境!
  • Docker for Windows 和 Docker for Mac 就是这么实现的

  • 由于虚拟化在云计算时代的广泛使用,Windows 和 MacOS 也将虚拟化引入到了系统本身的实现中,这其中就包含了通过 Hypervisor实现虚拟化的功能。在 Windows 中,可以通过 Hyper-V 实现虚拟化,而在 macOS 中,可以通过 HyperKit 实现虚拟化

  • Docker for Windows 和 Docker for Mac 这里利用了这两个操作系统提供的功能来搭建一个虚拟 Linux 系统,并在其之上安装和运行 docker daemon。