目录
一.安装docker
二.安装docker engine
三. 安装docker-compose
四. 部署FATE
对于dockers安装有很多版吧,我是在虚拟机上Ubuntu18.0.1的版本上安装的。
首先卸载旧版本,包括docker、docker.io、docker.engine。
sudo apt-get remove docker docker-engine docker.io containerd runc
1准备工作
更新apt包源索引并安装。
sudo apt-get update
2允许apt使用HTTPS上的仓库。
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
3添加Docker官方GPG密钥。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
用指纹 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 验证是否已配置好密钥,搜索指纹的最后8个字符。
4下面配置稳定版本。要添加nightly或test版本,在命令中单词stable后面添加单词nightly或(和)test即可。
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
5更新apt包源索引。
sudo apt-get update
1首先检查可行版本。
apt-cache madison docker-ce
显示列表如下。FATE官方配置文档建议docker版本为选择一个合适的版本.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
2hello-world验证是否安装成功。
sudo docker run hello-world
出现下面字段则成功
Hello from Docker!
This message shows that your installation appears to be working correctly.
3可以查询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
1Docker-compose的安装就相对简单了,从github网站拉去对应的版本下载即可。FATE官方配置文档建议docker-compose版本为1.24.0,执行如下语句获取版本资源。
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2然后我们添加执行许可。
sudo chmod +x /usr/local/bin/docker-compose
检查版本以测试是否安装成功,同时版本号是否为1.24.0。
docker-compose --version
1查看内存,20G不够,扩展到40G左右。扩展的方法参考:
虚拟机ubantu如何扩展系统内存_zx超的博客-CSDN博客
检查端口占用情况获取FATE安装包之前,我们要先检查8080、9360和9380端口是否已被占用,一般是没有的,不过保险起见可以先查询一下。首先将权限切换至root根用户,再使用netstat命令查看所有的服务端口,显示pid号。
su root
netstat -ap
另外也可以使用grep指令直接查询对应端口,如:
netstat -ap | grep 8080
获取安装包上一步完成后,需要从root用户切换回普通用户,其中XXX为自己的用户名。
su $XXX
2从微众银行的对应网址下载docker_standalone-fate压缩包并解压。
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone-fate-1.5.0.tar.gz
tar -xzvf docker_standalone-fate-1.5.0.tar.gz
3执行部署将操作路径切换到fate文件夹下,bash指令进行部署。
cd docker_standalone-fate-1.5.0
bash install_standalone_docker.sh
4检测
这官方文档的指令是这样的。
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
可能是 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
5Toy测试
如果是完成单元测试后直接进行Toy测试,则已在容器中,不用再重新进入容器,所以直接执行如下命令。
python ./examples/toy_example/run_toy_example.py 10000 10000 0
如果返回结果有如下语句,则测试成功,部署完成
success to calculate secure_sum, it is 2000.0
————————————————
原文链接:虚拟机ubuntu18.04使用docker镜像单机部署standalone联邦学习开源项目FATE_weixin_45131630的博客-CSDN博客