[klee-dev] Dockerizing Klee

Cristian Cadar c.cadar at imperial.ac.uk
Thu Feb 26 18:30:55 GMT 2015


Yes, there are several, e.g., it's more general than CDE, which makes no 
guarantees about the ability to exercise new behaviours of the software 
being packaged; it is actively maintained (also as open-source); and it 
hosts a public registry which makes distribution easier.

Of course, I'm happy to see the CDE packaged up-to-date, and I opened a 
pull request about this in 2013 
(https://github.com/klee/klee/issues/42), but nobody took up the job, 
and the discussion veered instead toward Docker.

Cristian

On 26/02/15 18:06, Pablo González de Aledo wrote:
> Is there any benefit on using Docker over CDE?. As far as I know CDE is
> open-source and was developed by a guy who worked in klee at some stages
> (less relevant, but nice to know :-P).
>
> Regards.
>
> 2015-02-26 18:58 GMT+01:00 Cristian Cadar <c.cadar at imperial.ac.uk
> <mailto:c.cadar at imperial.ac.uk>>:
>
>     Hi guys,
>
>     That's great, thanks for sharing this with the list.  I think Docker
>     is a nice medium for distributing KLEE, and in fact there were
>     several other people who have "dockerized" KLEE recently:
>     https://github.com/__riyadparvez/klee-docker
>     <https://github.com/riyadparvez/klee-docker>
>     https://registry.hub.docker.__com/u/petrhosek/klee/
>     <https://registry.hub.docker.com/u/petrhosek/klee/>
>     https://registry.hub.docker.__com/u/oscarsd/klee-release/
>     <https://registry.hub.docker.com/u/oscarsd/klee-release/>
>     https://registry.hub.docker.__com/u/kleeweb/klee/
>     <https://registry.hub.docker.com/u/kleeweb/klee/>
>     https://registry.hub.docker.__com/u/mbrt/klee/
>     <https://registry.hub.docker.com/u/mbrt/klee/>
>     etc.
>
>     I think it would be useful to have an official repository for the
>     dockerized KLEE, which we would recommend to new users on the KLEE
>     website, and which would be maintained as part of the KLEE project
>     on GitHub (https://github.com/klee).  Also, it would be useful to
>     automatically update an associated KLEE Docker image and upload it
>     to the Docker registry either after each KLEE commit, or at regular
>     time intervals.
>
>     These are just my initial thought though, and it would be useful to
>     get other opinions.
>
>     Best,
>     Cristian
>
>
>     On 26/02/15 16:14, Makula, Szymon wrote:
>
>         Hello All,
>
>         Docker is a relatively recent technology that developers and
>         sysadmins
>         use to build, ship, and run distributed applications. Compared to
>         virtual machines, docker is more lightweight and efficient, since it
>         provides an additional layer of abstraction of
>         operating-system-level
>         virtualization. You can read more about it at
>         https://www.docker.com/.
>
>         The use of docker makes Klee much easier to deploy and get
>         started with.
>         We have dockerized Klee and you can find the result of our labors at
>         https://github.com/szymoniks/__Klee-Docker
>         <https://github.com/szymoniks/Klee-Docker>.
>
>         To install docker, please follow the guide at
>         https://docs.docker.com/__installation/#installation
>         <https://docs.docker.com/installation/#installation>. After the
>         installation and cloning our project, you can simply execute the
>         following command from the project root directory to build Klee:
>
>         $sudo docker build -t [image_name] .
>
>         Where image_name can be any name for the final image one
>         fancies! :) By
>         default, the number of jobs for make commands is 5, which one
>         can change
>         it in Dockerfile to adjust for their machine’s specification. We
>         address
>         the security concerns of sudo-ing this script below.
>
>         This command builds Klee, following the instruction in the guide on
>         http://klee.github.io/getting-__started/as
>         <http://klee.github.io/getting-started/as> of 26/02/2015. The
>         image is
>         based on an official Ubuntu 14.04 docker image and will be
>         supplied with
>         LLVM-GCC 2.9, LLVM 2.9, STP r940 and uclibc (provided by Klee
>         community
>         at https://github.com/klee/klee-__uclibc.git
>         <https://github.com/klee/klee-uclibc.git>).
>
>         To work in the virtualized environment where Klee is installed,
>         type the
>         command:
>
>         $sudo docker run -t -i [image_name] /bin/bash
>
>         Again, we address the security concerns of sudo-ing this script
>         below.
>
>         We used the following options:
>
>         ·-i : keep STDIN open even if not attached
>
>         ·-t : allocate a pseudo-TTY
>
>         For more information, please read README or check
>         https://docs.docker.com/__reference/commandline/cli/
>         <https://docs.docker.com/reference/commandline/cli/>.
>
>         Please feel free to contact us with any questions.
>
>         Best regards,
>
>         Szymon Makula and Zheng Gao
>
>         University College London
>
>         *Security*
>
>         Docker has been used and trusted by different companies, such as
>         Gilt
>         Groupe Inc., Yelp, and Baidu Inc, so we believe it does not
>         contain any
>         trojans or malware.
>
>         We have used Docker version 1.2.0 and Klee is built on Ubuntu 14.04.
>
>         The docker daemon always runs as the root user, and since Docker
>         version
>         0.5.2, the docker daemon binds to a Unix socket instead of a TCP
>         port.
>         By default that Unix socket is owned by the user root, and so, by
>         default, you need to access it with sudo.
>
>         Starting in version 0.5.3, if you (or your Docker installer)
>         create a
>         Unix group called docker and add users to it, then the docker daemon
>         will make the ownership of the Unix socket read/writable by the
>         docker
>         group when the daemon starts. The docker daemon must always run
>         as the
>         root user, but if you run the docker client as a user in the docker
>         group then you don't need to add sudo to all the client
>         commands. As of
>         0.9.0, you can specify that a group other than docker should own the
>         Unix socket with the -G option. However, the docker group (or
>         the group
>         specified with -G) is root-equivalent.
>
>         You can verify that the script does nothing more by inspection. The
>         secure hash of the Dockerfile and two patches can be found in the
>         checksum file.
>
>
>
>         _________________________________________________
>         klee-dev mailing list
>         klee-dev at imperial.ac.uk <mailto:klee-dev at imperial.ac.uk>
>         https://mailman.ic.ac.uk/__mailman/listinfo/klee-dev
>         <https://mailman.ic.ac.uk/mailman/listinfo/klee-dev>
>
>
>     _________________________________________________
>     klee-dev mailing list
>     klee-dev at imperial.ac.uk <mailto:klee-dev at imperial.ac.uk>
>     https://mailman.ic.ac.uk/__mailman/listinfo/klee-dev
>     <https://mailman.ic.ac.uk/mailman/listinfo/klee-dev>
>
>
>
>
>
> _______________________________________________
> klee-dev mailing list
> klee-dev at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
>



More information about the klee-dev mailing list