KLEE的Docker镜像使用
2016-01-26 本文已影响0人
owhereg
KLEE是使用符号执行技术生成测试样本的知名利器,有着崇高的江湖地位。在KLEE网站上发布了采用Docker打包的镜像。对于两者,我都很陌生,以下记录了在使用过程中,涉及的一些命令和概念。
1、Docker
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。docker有三种命令运行的方式:短暂方式、交互方式、daemon方式。
-
安装
目前只支持64位linux系统,以下命令的环境为Ubuntu,Linux 3.13.0-74-generic。Linux系统版本查询命令:
$ uname -r
3.13.0-74-generic- 更新系统(低版本Linux)
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r)
$ sudo apt-get install linux-image-generic-lts-trusty
$ sudo reboot - 安装Docker:
sudo apt-get install docker.io
- 更新系统(低版本Linux)
-
ps命令
- 列出当前所有正在运行的容器
sudo docker ps - 列出最近一次启动的,且正在运行的容器
sudo docker ps -l - 列出所有的容器
sudo docker ps -a
- 列出当前所有正在运行的容器
-
镜像操作
- 下载KlEE镜像(默认从官方仓库上下载,也可其它仓库下载)
$ docker pull klee/klee
$ sudo docker pull registry.hub.docker.com/ubuntu:12.04
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 - 运行KLEE镜像
$ docker run -ti --name=my_first_klee_container --ulimit='stack=-1:-1' klee/klee - 重启容器
$ docker start -ai my_first_klee_container - 删除容器
$ docker rm my_first_klee_container
- 下载KlEE镜像(默认从官方仓库上下载,也可其它仓库下载)
-
删除容器
- 删除所有容器
$ sudo docker rmsudo docker ps -a -q
- 删除具体某个容器
$ sudo docker rm $CONTAINER_ID
- 删除所有容器
-
命令快速参考
- 查看本地镜像
$ sudo docker images # - 启动一个已存在的docker实例
$ sudo docker attach $CONTAINER_ID - 停止docker实例
$ sudo docker stop $CONTAINER_ID - 查看docker实例运行日志,确保正常运行
$ sudo docker logs $CONTAINER_ID - 查看container的实例属性,比如ip等等
$ sudo docker inspect $CONTAINER_ID
- 查看本地镜像
2、KLEE
- KLEE版本
klee --version - 编译源码
clang -emit-llvm -g -c test.c -o test.bc - 运行klee
klee --libc=uclibc --posix-runtime test.bc