ubuntu20.04下使用docker安装fate联邦学习框架(代码片段)

Jude00000 Jude00000     2023-03-19     185

关键词:

Ubuntu20.04下使用docker安装FATE联邦学习框架

一、前提准备

1.1 安装jdk1.8+

打开命令行创建一个文件夹保存jdk
$ cd /usr
$ sudo mkdir java
在windows上下载jdk1.8+版本这是下载的是jdk-8u291-linux-x64.tar.gz,
移入Ubuntu,解压到刚刚创建的文件夹
$ sudo tar -xzvf jdk-8u291-linux-x64.tar.gz -C /usr/java
配置java环境变量
$ sudo vi /etc/profile
添加以下命令到配置文件最后然后保存,这里(jdk1.8.0_291)选择自己解压的版本
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=/usr/java/jdk1.8.0_291/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
添加完成后执行以下命令使配置生效
$ source /etc/profile
测试是否配置成功
$ java -version
成功会显示以下信息
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

1.2 安装python3-pip、virtualenv、virtualenvwrapper

  1. 安装python3-pip
Ubuntu下自带python3环境
$ python3 --version
自带版本3.8.5
Python 3.8.5
$ sudo apt-get install python3-pip
  1. 安装virtualenv
$ sudo apt install virtualenv
测试是否安装成功
创建一个虚拟环境名为env
$ virtualenv env
打印以下信息
created virtual environment CPython3.8.5.final.0-64 in 201ms
进入虚拟环境bin目录启动虚拟环境
$ cd env/bin
$ source activate
进入成功会在命令行最前面看到(env)
(env) jude@ubuntu:~/env/bin$
退出虚拟环境
$ deactivate
  1. 安装virtualenvwrapper
$ sudo apt install virtualenvwrapper
配置环境
$ sudo vi ~/.bashrc
在文本最后添加以下信息并保存,(找到virtualenvwrapper.sh的位置,我这里是/usr/share/virtualenvwrapper)
export WORKON_HOME=$HOME/.virtualenvs   
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
使用以下命令使环境生效
$ source ~/.bashrc
测试是否安装成功
创建一个虚拟环境名为vir_env
$ mkvirtualenv vir_env
打印以下信息
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/preactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/postactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/get_env_details
进入成功会在命令行最前面看到(vir_env)
(vir_env) jude@ubuntu
退出虚拟环境
$ deactivate
再次进入vir_env虚拟环境
$ workon vir_env

1.3 安装mysql5.6+

这里选择apt-get方式安装最新版mysql
$ sudo apt-get install mysql-server
显示以下信息
Setting up mysql-server (8.0.25-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3.4) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
使用以下命令初始化配置
$ sudo mysql_secure_installation
初始化过程中会出现选择y或者n,根据个人情况,这里是我的选择
Press y|Y for Yes, any other key for No: n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : n
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
配置mysql的一些基本信息,需要mysql可以进行远程访问,使用以下命令打开配置文件找到bind-address = 127.0.0.1改为bind-address = 0.0.0.0,退出保存
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
测试是否安装成功
$ sudo service mysql start
$ sudo mysql -uroot -p
然后输入密码进入mysql
$ mysql>
退出mysql
$ mysql>exit

1.3 如果尚未安装最新版本的Docker,请安装它

1.3.1 如果安装了docker旧版本,卸载旧版本docker(可选)
 $ sudo apt-get remove docker docker-engine docker.io containerd runc
1.3.2 更新apt软件包索引并安装软件包以允许apt通过HTTPS使用存储库
$ sudo apt-get update
$ sudo apt-get install \\
       apt-transport-https \\
       ca-certificates \\
       curl \\
       gnupg \\
       lsb-release
1.3.3 添加Docker的官方GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
1.3.4 设置稳定的存储库
$ echo \\
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \\
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.3.5 更新apt软件包索引,并安装最新版本的Docker Engine和容器化的容器
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
1.3.6 通过运行hello-world 映像来验证是否正确安装了Docker Engine
$ sudo docker run hello-world
此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
1.3.7 如果允许非特权用户运行Docker命令执行以下步骤(可选)
  1. 创建docker组
$ sudo groupadd docker
如果存在docker组,显示已存在docker组,执行下一步
  1. 将自己的用户添加到该docker组
$ sudo usermod -aG docker $USER
  1. 激活对组的更改
$ newgrp docker
  1. 验证是否可以运行docker不带命令sudo
$ docker run hello-world
此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
1.3.8 配置Docker以在启动时启动
> $ sudo systemctl enable docker.service
> $ sudo systemctl enable containerd.service
> 若要禁用此行为,enable改成disable
> $ sudo systemctl disable docker.service
> $ sudo systemctl disable containerd.service
1.3.9 测试docker的安装
$ docker version
打印以下信息:
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:47:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:45:28 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

1.4 安装Docker Compose

  1. 下载Docker Compose的当前稳定版本1.29.1
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的Compose,替换1.29.1为要使用的Compose版本
  1. 将可执行权限应用于二进制文件
$ sudo chmod +x /usr/local/bin/docker-compose
  1. 测试Docker Compose的安装
$ docker-compose --version
打印以下信息:
docker-compose version 1.29.1, build c34c88b2

二、使用Docker安装FATE

2.1 下载fate源码

下载FATE安装包,这里选用的是1.6.0版本
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone_fate_1.6.0.tar.gz
使用以下命令解压
$ tar -xzvf docker_standalone_fate_1.6.0.tar.gz
进入解压好的目录
$ cd docker_standalone_fate_1.6.0
执行配置文件
$ bash install_standalone_docker.sh
打印以下信息,文件比较大,下载过程比较慢
c12c9eb9c6d7   fate:latest   "docker-entrypoint.s…"   22 seconds ago   Up Less than a second   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   fate
fefb55d33eaa   hello-world   "/hello"                 7 days ago       Exited (0) 7 days ago                                               busy_brown
5bf6463495d3   hello-world   "/hello"                 7 days ago       Exited (0) 7 days ago                                               heuristic_mahavira

2.2 测试

单元测试
$ CONTAINER_ID=`docker ps -aqf "name=fate"`
$ docker exec -t -i $CONTAINER_ID bash
$ bash ./python/federatedml/test/run_test.sh
测试成功显示以下信息,测试过程比较慢
there are 0 failed test
退出测试
$ exit
Toy_example测试
$ CONTAINER_ID=`docker ps -aqf "name=fate"`
$ docker exec -t -i $CONTAINER_ID bash
$ python ./examples/toy_example/run_toy_example.py 10000 10000 0
测试成功打印以下信息
[INFO] [2021-05-17 12:21:53,582] [1497:140667035699008] - secure_add_guest.py[line:99]: begin to init parameters of secure add example guest
[INFO] [2021-05-17 12:21:53,582] [1497:140667035699008] - secure_add_guest.py[line:102]: begin to make guest data
[INFO] [2021-05-17 12:21:53,704] [1497:140667035699008] - secure_add_guest.py[line:105]: split data into two random parts
[INFO] [2021-05-17 12:21:54,367] [1497:140667035699008] - secure_add_guest.py[line:108]: share one random part data to host
[INFO] [2021-05-17 12:21:54,476] [1497:140667035699008] - secure_add_guest.py[line:111]: get share of one random part data from host
[INFO] [2021-05-17 12:21:54,697] [1497:140667035699008] - secure_add_guest.py[line:114]: begin to get sum of guest and host
[INFO] [2021-05-17 12:21:54,939] [1497:140667035699008] - secure_add_guest.py[line:117]: receive host sum from guest
[INFO] [2021-05-17 12:21:54,944] [1497:140667035699008] - secure_add_guest.py[line:124]: success to calculate secure_sum, it is 2000.0

打开浏览器输入网址http://主机ip:8080到FATE板查看结果

退出测试
$ exit

2.3 安装FATE-Client和FATE-Tes​​t工具

安装之前先安装launchpadlib==1.10.13
$ pip install launchpadlib==1.10.13 -i https://pypi.douban.com/simple
使用以下命令安装FATE-Client,安装过程比较慢
$ pip install fate-client -i https://pypi.douban.com/simple
安装成功打印以下信息
Successfully installed fate-client-0.3.0.post1 loguru-0.5.3 tensorflow-2.5.0
使用以下命令安装FATE-Tes​​t
$ pip install fate-test -i https://pypi.douban.com/simple
安装成功打印以下信息
Successfully installed colorama-0.4.4 fate-test-0.3.0.post1 pandas-1.2.4 prettytable-1.0.1 sshtunnel-0.1.5 wcwidth-0.2.5

ubuntu20.04下使用docker安装fate联邦学习框架(代码片段)

Ubuntu20.04下使用docker安装FATE联邦学习框架一、前提准备1.1安装jdk1.8+打开命令行创建一个文件夹保存jdk$cd/usr$sudomkdirjava在windows上下载jdk1.8+版本这是下载的是jdk-8u291-linux-x64.tar.gz,移入Ubuntu,解压到刚刚创建的文件夹$... 查看详情

在 Ubuntu 20.04 LTS(Vmware)上安装 docker 失败

】在Ubuntu20.04LTS(Vmware)上安装docker失败【英文标题】:dockerinstallationfailedonUbuntu20.04LTS(Vmware)【发布时间】:2020-08-0715:05:00【问题描述】:我在VMware上的UbuntuVM中使用https://docs.docker.com/engine/install/ubuntu/在Ubuntu20.04上安装docker。但... 查看详情

在docker中使用tensorflow(gpu版+ubuntu20.04)(代码片段)

在此前的文章【1】中,我们已经介绍了如何在Ubuntu20.04中安装Docker。本文将介绍如何在其中使用TensorFlow(GPU)版。一、安装NVIDIA-Docker安装完成Docker并检查安装正确(能跑出来hello-world)后,如果需要Docker... 查看详情

ubuntu20.04下安装并使用mysql8.0

安装sudoaptinstallmysql-server-8.0安装后需启用MySQLsudoservicemysqlstart配置Ubuntu下安装mysql8.0之后,默认root用户是没有密码的,可以使用如下命令直接进入MySQLsudomysql-uroot设置r 查看详情

ubuntu20.04安装docker(代码片段)

一、安装所需包终端输入命令:sudoapt-getinstallapt-transport-httpsca-certificatessoftware-properties-commoncurl二、添加Docker-ce软件源官方的软件源,输入命令:curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|s 查看详情

vscode搭建docker环境(代码片段)

...同步请点击阿里云开源镜像站前言本环境通过使用VMware在Ubuntu20.04下通过VScode搭建docker环境,可通过远程连接容器进行开发。(仅作参考)一、环境准备VMware15pro,Ubuntu20.04,VScode(Linux版本)虚拟机搭建过程略。二、搭建步骤1.... 查看详情

ubuntu20.04安装docker(代码片段)

...mmon2.3添加GPG密钥curl-fsSLhttps://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-2.4设置仓库sudoadd-apt-repository\\"deb[arch=amd64]https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/\\$(lsb_release-cs)\\sta 查看详情

如何在已经安装 Python 3.4 的 Docker 容器中升级到 Python 3.5? (我在 Ubuntu 20.04 上运行 Docker 容器)

...何在已经安装Python3.4的Docker容器中升级到Python3.5?(我在Ubuntu20.04上运行Docker容器)【英文标题】:HowtoupgradetoPython3.5inaDockercontainerthathasalreadyinstalledPython3.4?(I\'mrunningDockercontainersonUbuntu20.04)【发布时间】:2021-09-0510:09:51【问题描... 查看详情

ubuntu20.04如何安装nvidia-docker?(代码片段)

文章目录安装步骤导入NVIDIAGPG密钥添加NVIDIADocker存储库安装nvidia-container-toolkit检查nvidia-docker是否安装成功安装步骤导入NVIDIAGPG密钥curl-shttps://nvidia.github.io/nvidia-docker/gpgkey|sudoapt-keyadd-添加NVIDIADocker存储库distribution=$(./etc/os-releas... 查看详情

Docker - Ubuntu 20.04 升级后没有路由到主机

】Docker-Ubuntu20.04升级后没有路由到主机【英文标题】:Docker-noroutetohostafterUbuntu20.04upgrade【发布时间】:2021-04-0610:01:35【问题描述】:多年来,我一直在为一些应用程序使用docker-compose,最近,在将主机操作系统从Ubuntu18.04升级到U... 查看详情

docker常用命令(代码片段)

...):sudousermod-aGdocker$USER镜像(images)1.dockerpullubuntu:20.04:拉取一个镜像2.dockerimages:列出本地所有镜像3.dockerimagermubuntu:20.04或dockerrmiubuntu:20.04:删除镜像ubuntu:20.044.docker[container]commitCONTAINERIMAGE_NAME:TAG:创... 查看详情

ubuntu20.04+docker+jenkins+飞书实现自动化发布

一、从0-1一点一滴实现如何本地提交代码到gitlab然后实现前后端自动发布1.更新apt包索引sudoapt-getupdate2.安装必备的软件包以允许apt通过https使用存储库sudoapt-getinstallca-certificatescurlgnupglsb-release3.添加Docker官方版本的GPG密钥sudomkdir-p/... 查看详情

ubuntu18.04/20.04下安装搜狗输入法

https://pinyin.sogou.com/linux/guide 查看详情

ubuntu20.04通过docker启动mysql5.6(代码片段)

Ubuntu20.04通过Docker启动MySQL5.61.通过MobaXterm进行远程登录在window10系统下通过MobaXterm进行远程登录,具体可以参考Ubuntu开启SSH服务远程登录https://blog.csdn.net/weixin_45523107/article/details/119150921?spm=1001.2014.3001.5501在 查看详情

ubuntu20.04下安装nushell后出现登录界面用户无法显示解决办法(代码片段)

...使用,但是在使用过程中却出现了一点小问题。系统Ubuntu20.04桌面环境GNOME3.36.5Nushell版本Nushell0. 查看详情

ubuntu20.04下安装nushell后出现登录界面用户无法显示解决办法(代码片段)

...使用,但是在使用过程中却出现了一点小问题。系统Ubuntu20.04桌面环境GNOME3.36.5Nushell版本Nushell0. 查看详情

vscode搭建docker环境

...同步请点击阿里云开源镜像站前言本环境通过使用VMware在Ubuntu20.04下通过VScode搭建docker环境,可通过远程连接容器进行开发。(仅作参考)一、环境准备VMware15pro,Ubuntu20.04,VScode(Linux版本)虚拟机搭建 查看详情

ubuntu20.04下jupyternotebook配置

...度学习工作站配置指南2、配置与使用jupyternotebook,参考Ubuntu20.04安装Anaconda3+配置+使用jupyternotebook3、修改Jupyternotebook默认目录路径,参考Python:linuxUbuntu16.04下Jupyternotebook改变默认目录路径 查看详情