前言
对于李珍老师sysver切片项目进行函数级别的复现
参考链接:
https://github.com/SySeVR/SySeVR/tree/master
为了方便使用,而省去复杂环境配置的步骤,我们使用docker对此论文进行复现。需要root权限
一、操作系统版本
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
二、docker安装
查看是否装有docker:
docker --version
有的话则是 Docker version 24.0.5, build ced0996
如果有就可以直接使用,没有的需要安装docker(一步一步执行):
sudo yum update
sudo yum install -y 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 start docker
sudo systemctl enable docker
docker --version
ubantu安装(不行的话,可以在网上找其他教程):
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [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
sudo apt install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
docker --version
三、docker build
3.1 下载文件到本地
找到一个文件夹下载:
git clone https://github.com/SySeVR/SySeVR.git
3.2 build images创建镜像
切换到SySeVR_docker\docker_build文件夹下(可以看到Dockerfile文件):
需要改动Dockerfile一些东西(直接将我改动的复制进去):
FROM tensorflow/tensorflow:1.6.0-devel-gpu-py3
COPY ./home/ /home/
RUN mkdir /usr/java \
&& cp -r /home/SySeVR/softdir/jdk1.8.0_161 /usr/java \
&& mkdir /usr/ant \
&& cp -r /home/SySeVR/softdir/apache-ant-1.9.14 /usr/ant \
&& rm -rf /etc/apt/sources.list \
&& cp -r /home/SySeVR/softdir/sources.list /etc/apt/ \
&& rm -rf /etc/apt/sources.list.d \
&& apt-get clean \
&& apt-get update \
&& rm -rf /etc/profile \
&& cp -r /home/SySeVR/softdir/profile /etc \
&& cd /home/SySeVR/softdir \
&& chmod +x env.sh \
&& ./env.sh \
&& apt-get install -y python-setuptools \
&& apt-get install -y python-dev \
&& apt-get install -y python-pip \
&& pip install --upgrade pip\
&& cd /home/SySeVR/softdir/py2neo-py2neo-2.0 \
&& python2 setup.py install \
&& cd /home/SySeVR/softdir/python-joern-0.3.1 \
&& python2 setup.py install \
&& apt-get install -y graphviz \
&& apt-get install -y libgraphviz-dev \
&& apt-get install -y pkg-config \
&& apt-get install -y python-igraph \
&& apt-get install -y python-virtualenv \
&& pip3 install xlrd \
&& pip3 install gensim==3.4 \
&& pip3 install pyyaml \
&& rm -rf /home/SySeVR/softdir
然后运行:
sudo docker build -t sysevr:v1.0 .
查看镜像是否创建成功
sudo docker images
![](https://img-blog.csdnimg.cn/a436450b92e34364ba98d2e984e05907.jpeg)
3.3 创建容器
docker run -itd --gpus all --name=sysevr \
-v /home/docker_mapping/Implementation:/home/SySeVR/Implementation \
-v /home/docker_mapping/data:/home/SySeVR/data \
-p 8080:80 \
sysevr:v1.0 /bin/bash
-v /home/docker_mapping/Implementation:/home/SySeVR/Implementation \
-v /home/docker_mapping/data:/home/SySeVR/data \
这是两个容器卷,映射本地和容器中的内存,可以自己设置
创建成功之后可以使用命令,查看正在运行的容器
sudo docker ps -a
3.4 进入容器
其中53badd100b0d为CONTAINER ID,容器id
sudo docker exec -it 53badd100b0d /bin/bash
至此,我们的docker容器创建成功。
四、docker容器使用
如果平时进入的话,首先确保docker在运行中,然后执行
sudo docker ps -a
查看容器的CONTAINER ID,然后执行下面进入容器
sudo docker exec -it 53badd100b0d /bin/bash
可以在
cd /home
下,看到我们需要的东西