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 26 、Fedora 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
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 更换默认网段并换源 ¶
- 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 中更改默认安装目录有多种方法:
-
停止 Docker 服务。运行以下命令:
sudo systemctl stop docker || sudo service docker stop
-
复制 Docker 的默认目录 /var/lib/docker 到新目录,例如 /new/docker。
sudo cp -r /var/lib/docker /new/docker
-
编辑 Docker 服务的启动脚本,例如
vim /lib/systemd/system/docker.service
-
找到 ExecStart 行,并在该行的末尾添加
--data-root=/new/docker,指定新的 Docker 目录。
-
重新加载 Docker 服务的配置。可以使用以下命令重新加载配置。
sudo systemctl daemon-reload
-
启动 Docker 服务。可以执行以下命令启动 Docker 服务:
sudo systemctl start docker || sudo service docker start
注意
现在,Docker 将使用新目录 /new/docker 作为默认安装目录。请注意,在更改默认目录后,以前创建的容器和映像可能不再可用。
删除默认网卡 ¶
- 删除 docker 0 网卡
ip link set dev docker0 down && brctl delbr docker0
- 删除 br 网卡
ip link set dev br-d9764430d2f1 down && brctl delbr br-d9764430d2f1
- 重启 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。