最近电脑上重新安装了Kali Linux,Kali基于Debian Testing分支进行开发,从2016年开始以滚动版形式发布新版本,版本均命名为Kali Rolling。最新发布的Kali 2018.1使用 Kernel 4.14.12和GNOME 3.26.2,经实验,可安装Debian 9 (stretch)支持的软件。

参考Docker官方在Debian上的安装教程和一些资料,下面给出在Kali 2018.1中安装Docker CE的方法。

卸载旧版本Docker

Docker 从 17.03版本之后分为社区版CE(Community Edition)和企业版EE(Enterprise Edition)。其中社区版为免费版本,包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP;企业版为付费版本,主要提供了安全性方面的增强。本文安装版本为Docker CE。

首先卸载旧版本Docker:

$ sudo apt-get remove docker docker-engine docker.io

安装Docker CE

Docker官方给出了三种方法:

  • 通过设置Docker的仓库(repositories)安装。这种方法使用的最多,且安装后便于升级,推荐使用该方法。
  • 通过下载DEB包手动安装。这种方法通常在离线环境下使用,通过该方法安装的软件在升级时也需要手动下载安装。
  • 使用脚本安装。这种方法通常用在测试和开发环境中。

其中第二种方法可在官方库 Debian stretch版本的pool/stable/路径下,选择对应系统的安装包,然后使用dpkg -i命令进行安装。

第三种方法中,脚本里通过查看/etc/os-release等文件内容,或使用lsb_release等命令获取发行版本进行安装,而Kali中获取的版本均为Kali Rolling,为Docker不支持的版本,需要对相关配置文件进行修改。

本文重点介绍使用第一种方式安装的方法,同样需要修改配置文件,理论上通过修改后,也可使用第三种方法提供的脚本进行安装。

修改配置文件

切换到root用户:

  1. 修改/etc/debian_version内容为
9.0
  1. 修改/etc/lsb-release内容为
DISTRIB_ID=Debian
DISTRIB_RELEASE=9
DISTRIB_CODENAME=stretch
DISTRIB_DESCRIPTION="Debian GNU/Linux 9 (stretch)"
  1. 修改/etc/os-release内容为
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
ID=debian
VERSION="9 (stretch)"
VERSION_ID="9"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

设置Repository

  1. 更新apt索引
$ sudo apt-get update
  1. 添加Docker官方GPG key
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  1. 添加stable版的repository(也可添加其他版本)
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

安装Docker CE

  1. 更新apt索引
$ sudo apt-get update
  1. 安装最新版本Docker CE
$ sudo apt-get install docker-ce
  1. 在生产系统中应安装指定版本Docker CE

首先获取可用的版本:

$ apt-cache madison docker-ce

然后根据获取的版本号安装:

$ sudo apt-get install docker-ce=<版本号>
  1. 验证

通过运行hello-world镜像验证是否成功安装。

$ sudo docker run hello-world

运行上述命令如果出现如下错误:

docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

如不是因为设置代理等造成的错误,可重新启动docker,再次尝试。

$ sudo systemctl daemon-reload 
$ sudo systemctl restart docker
$ sudo systemctl status docker
$ sudo docker pull hello-world
  1. 设置Docker开机自启动
$ sudo systemctl enable docker
  1. 使用非root用户运行docker
$ sudo groupadd docker
$ sudo usermod -aG docker $USER

命令执行后,需要注销当前用户,重新登录后即可使用。

  1. 使用阿里云容器加速器

首先注册阿里云帐号,然后在加速器页面https://cr.console.aliyun.com/#/accelerator 中获取加速器地址,并按照官方提示进行配置。CentOS和Ubuntu的配置方法如下:

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

更新Docker CE

首先运行命令更新apt索引:

$ sudo apt-get update

然后根据上文提到的方法安装新版本。