admin管理员组

文章数量:1567243

文章目录

  • 使用docker镜像安装FATE
    • 安装docker
      • 准备工作
      • 安装docker engine
      • 将非root用户加入docker组
    • 安装docker-compose
    • 部署FATE
      • 检查端口占用情况
      • 获取安装包
      • 执行部署
    • 简单测试
      • 单元测试
      • Toy测试
  • 附录
    • docker其他命令
    • 终端用户切换
    • 参考资料

使用docker镜像安装FATE

建议使用docker镜像进行安装,这样可以大大降低遇到问题的可能性,这也是官方文档推荐的方式。

我的主机配置是win 7旗舰版,VMware虚拟机中安装了ubuntu18.04。

FATE依赖docker和docker-compose,接下来讲解如何正确安装配置。

安装docker

主机需要能够访问外部网络,从公共网络中拉取安装包和docker镜像。

首先卸载旧版本,包括docker、docker.io、docker.engine。

sudo apt-get remove docker docker-engine docker.io containerd runc

准备工作

更新apt包源索引并安装。

sudo apt-get update

允许apt使用HTTPS上的仓库。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加Docker官方GPG密钥。

curl -fsSL https://download.docker/linux/ubuntu/gpg | sudo apt-key add -

用指纹 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 验证是否已配置好密钥,搜索指纹的最后8个字符。

sudo apt-key fingerprint 0EBFCD88

下面配置稳定版本。要添加nightly或test版本,在命令中单词stable后面添加单词nightly或(和)test即可。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

更新apt包源索引。

sudo apt-get update

做好上面的一切工作后,就可以开始安装docker engine了。

安装docker engine

首先检查可行版本。

apt-cache madison docker-ce

显示列表如下。FATE官方配置文档建议docker版本为18.09,以下这些以5:18.09开头的版本都是我们可以选择的。

这里我选择图中红方框内的版本进行安装。docker-ce-cli是客户端版本,和docker-ce的版本保持一致即可,否则可能出现server和client端docker版本不一致的情况。

sudo apt-get install docker-ce=5:18.09.3~3-0~ubuntu-bionic docker-ce-cli=5:18.09.3~3-0~ubuntu-bionic containerd.io

hello-world验证是否安装成功。

sudo docker run hello-world

出现下面字段则成功

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

也可以查询docker的版本。

sudo docker version

结果如下图所示。

Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:53:11 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 05:59:55 2019
OS/Arch: linux/amd64
Experimental: false

将非root用户加入docker组

为了使非root用户也能使用docker,需要将其添加到docker组中,这一步可以方便后续的docker容器内操作,防止Got permission denied的情况出现。

sudo groupadd docker
sudo gpasswd -a $XXX docker
sudo gpasswd -a $USER docker
newgrp docker

完成以上步骤即完成添加。其中,XXX为你自己的用户名。然后我们可以重启docker,这里不重启也无大碍。

sudo systemctl restart docker

安装docker-compose

Docker-compose的安装就相对简单了,从github网站拉去对应的版本下载即可。FATE官方配置文档建议docker-compose版本为1.24.0,执行如下语句获取版本资源。

sudo curl -L "https://github/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

然后我们添加执行许可。

sudo chmod +x /usr/local/bin/docker-compose

然后检查版本以测试是否安装成功,同时版本号是否为1.24.0。

docker-compose --version

部署FATE

检查端口占用情况

获取FATE安装包之前,我们要先检查8080、9360和9380端口是否已被占用,一般是没有的,不过保险起见可以先查询一下。首先将权限切换至root根用户,再使用netstat命令查看所有的服务端口,显示pid号。

su root
netstat -ap

另外也可以使用grep指令直接查询对应端口,如:

netstat -ap | grep 8080

获取安装包

上一步完成后,需要从root用户切换回普通用户,其中XXX为自己的用户名。

su $XXX

从微众银行的对应网址下载docker_standalone-fate压缩包并解压。

wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud/docker_standalone-fate-1.5.0.tar.gz
tar -xzvf docker_standalone-fate-1.5.0.tar.gz

执行部署

将操作路径切换到fate文件夹下,bash指令进行部署。

这一步需要时间和内存,我之前分配的20G执行到一半提示内存不够了,扩展到40G即可。内存扩展必须要在关机情况下进行,如果内存不够上一步安装包获取完毕之后就可以关闭虚拟机扩展好内存后再打开终端执行下面指令。

cd docker_standalone-fate-1.5.0
bash install_standalone_docker.sh

简单测试

单元测试

这一步官方文档的指令是这样的。

CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./python/federatedml/test/run_test.sh

但是执行到第二步的时候就一直显示下面字段

Error: No such container: docker

导致我一开始认为是自己前面 docker 没有安装好,或者因为中途关机导致之前未结束的进程被强行关闭损坏了。后在网上查阅了很多资料,认为可能是 CONTAINER_ID 的设置出了问题,系统不能通过 fate_python 对应到正确的容器,我的解决办法是先查询 docker 里面正在运行的容器。

docker ps

使用这个命令才发现所谓的fate_python容器并未处于运行状态,所以之前第二步无法正常执行,也就是无法进入该容器。那么接下来我们需要启动该容器。

docker start fate_python

启动完成后再查询当前正在运行的容器就有fate_python了,还有对应的CONTAINER_ID。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ae7e57f09b4 docker_python “docker-entrypoint.sh” 2 days ago Up 5 hours 0.0.0.0:9360->9360/tcp, 0.0.0.0:9380->9380/tcp fate_python

接下来再运行exec命令进入容器即可。

docker exec -t -i fate_python bash

如果上一步未启动容器直接进入,系统会返回如下提示。其中的256位十六进制字符串为fate_python这个容器的hostname,前面查询得到的CONTAINER_ID就是hostname取前10个字符。在执行上一步exec命令时将fate_python容器名替换成CONTAINER_ID或者host那么均可。

Error response from daemon: Container 5ae7e57f09b4bee2af2e11be0798897ea72ed619f7d13477d1b4dcb9643b1e99 is not running

如果后面想要退出容器,直接命令行输入exit即可。

接下来bash指令进行测试。

bash ./python/federatedml/test/run_test.sh

在长篇大论的输出后,会有这样一行字,表示测试成功。

there are 0 failed test

Toy测试

如果是完成单元测试后直接进行Toy测试,则已在容器中,不用再重新进入容器,所以直接执行如下命令。

python ./examples/toy_example/run_toy_example.py 10000 10000 0

如果返回结果有如下语句,则测试成功,部署完成,撒花。

success to calculate secure_sum, it is 2000.0

附录

感谢看到这里的各位大佬们,我是刚入门的新手,写这篇博客记录体验,如果有错误欢迎指正,有问题欢迎一起交流。

docker其他命令

这一部分在参考资料[4]中讲了很多,有感兴趣的朋友可以去往对应博客进一步学习。

终端用户切换

终端默认非root用户,如果是首次切换到root用户,首先需要为root用户设置密码。

sudo passwd root

输入两次密码,系统显示密码更新成功。

接下来输入如下命令即可切换到root用户权限。

su root

如果想切换回非root用户,使用su指令即可。其中XXX为自己的用户名。

su XXX

参考资料

1 Github-FATE单机部署指南
2 Install Docker Engine on Ubuntu
3 Install Docker Compose
4 Docker相关命令

本文标签: 镜像开源联邦单机虚拟机