How to start a VM in a Singularity container? - virtual-machine

So I want to spit up a Windows.iso I have on a cluster node using Singularity images. I tried VirtualBox yet got this exception:
ingularity virtualbox:~> virtualbox WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (4.17.3-200.fc28.x86_64) or it failed to load. Please recompile the kernel module and install it by
sudo /sbin/rcvboxdrv setup
You will not be able to start VMs until this problem is fixed.
Note that singularity image can not have sudo so all preparations are done in Docker image from which I create a singularity image

you need install the virtualbox's kernel module outside the container, on your host system, then load it before run container. depending the Distro that you have, it may be necessary to build it from source source.

Related

running the singularity image and finding the results

I am trying to make the image for the Singularity using the following file(which is Singularity.recepie):
Bootstrap: docker
From: ubuntu:18.04
%post
apt-get -y update
apt-get install -y python3-pip
%files
QC.py /
%runscript
python3 /QC.py
I build the image using the following command:
sudo singularity build ubuntu.simg Singularity.recepie
and run the image using this command:
./ubuntu.simg
when I run the image it works but I do not see the result files in the directory that I am working at. do you know how I can the results and copy them to my current directory?
By default, your current working directory is mounted into the image and used as the working directory. If no files are being created and they should be, then you need to look at where your script is trying to write to. Also check the singularity error/warnings output for additional info.
If you're using an older version of Singularity (implied by .simg instead of .sif extension), you may also be running on a kernel that does not support overlayfs, which can cause issues attempting to mount to a non-existing folder. If this is the case, singularity will give a warning but continue on and possibly fail in a hard to detect manner. More info on mounting with overlay here.

IOT Edge V2 - Deploying and Debugging Python on the Edge Device

I've been following the tutorial at https://learn.microsoft.com/en-us/azure/iot-edge/tutorial-python-module
On my development machine, the python lint in Visual Studio Code is reporting the error: E0401:Unable to import 'iothub_client' on main.py.
I wonder if I'm missing a pre-requisite step, or is this just an advisory that can be ignored on the development side of things and it should be ok once deployed - or do I need to fix this error on the development machine first?
I've successfully run the previous tutorial and have tempSensor running. filterSensor seems to terminate and go into a "backoff" state once deployed, with an error of 1. I don't know how I can find out on the Edge-side why it is failing - how do I go about debugging this? Can I see print statement output anywhere, for example?
I'm developing on Mac, and deploying to a Beaglebone running Ubuntu 16.04 LTS.
For the Python lint issue, yes you are right that this information is just advisory. The cause for it showing up is that you did not install Azure IoT Python SDK which is a pip package on your development machine. You can safely ignore it because the SDK will be installed when building the module image (there is a RUN pip install -r requirements.txt step in the Dockerfile).
If you want to resolve this lint information, you can install the SDK on your development machine manually by running pip install -r requirements.txt in the root folder of the module.

Create Docker image from existing Ubuntu + App

I installed Moodle (eLearning PHP based app, but it could be any app) locally on Ubuntu and would like to package it as Docker image/container. There were whole bunch of installations and configurations done. I'd like to package all that so that I can deploy to some Docker enabled hosting service, such as Digital Ocean or AWS.
How do I create Docker image?
Do I need to handle networking, ports and Apache configuration for production deployment?
There ara a lot of Moodle images in dockerhub. just use one of them
The process to create docker images is well documented on Docker's documentation site. See: Build your own images
The idea is simple: You inherit/extend an existing image and make additions to it. This is done in a provisioning file called Dockerfile
Dockerfile Example:
FROM debian:8.4
MAINTAINER John Doe (j.doe#example.com)
# update aptitude
RUN apt-get clean && apt-get update
# utilities
RUN apt-get -y install vim git php5.6 apache2
In the example above I extend a Debian image, update aptitude and install a series of packages.
A full list of commands available in Dockerfiles is available at https://docs.docker.com/engine/reference/builder/
Once your Dockerfile is ready you can build the image using the following command:
docker build -t debian/enhanced:8.4 /path/to/Dockerfile

start redis-server on debian/ubuntu boot

I am trying to create a docker container where redis starts at boot.
there will be other foreground services running on that other container which will connect to the redis db.
for some reason the service does not start when i run the container.
here my simplified Dockerfile
FROM debian
# this solves an issue described here:
# http://askubuntu.com/questions/365911/why-the-services-do-not-start-at-installation
RUN sed -i -e s/101/0/g /usr/sbin/policy-rc.d
# install redis-server
RUN apt-get update && apt-get install -y redis-server
# updates init script (redundant)
RUN update-rc.d redis-server defaults
# ping google to keep the container running in foreground
CMD ["ping", "google.com"]
can anybody explain me why this is not working and how this should be done right?
So a docker container is like a full OS but has some key differences. It's not going to run a full init system. It's designed and intended to run a single process tree. While you can run a supervisor such as runit et al within a container, you are really working against the grain of docker and all the tooling and documentation is going to lead you away from using containers like VMs and toward the harmony of 1 process/service per container.
So redis isn't starting because the ping command is literally the only process running in your container.
there will be other foreground services running on that other container which will connect to the redis db.
Don't do it this way. Really. Everything will be easier when you put 1 process in each container and connect them via network links.
Digging up an old question here, but I landed on it whilst trying to package a really simple Redis job queue into an existing docker image setup. I needed it to start up on image boot so the app could have access to it. Memory and performance are not a concern in this scenario or an external Redis server would absolutely be the right choice.
Here's what I did in my Dockerfile for a simple NodeJs app to make it work without editing any system files post-install:
RUN apt-get update && apt-get -y redis-server
CMD service redis-server start & node dist/src/main
Sort of crude using parallel command processes, but as the accepted answer points out this is not a real operating system so we really only care about Redis being online when the app is.

Boot2Docker start up fails in windows

I am trying to start docker from winodws7 enterprise edition.
boot2docker start
results
Waiting for VM and Docker daemon to start...
..........................................................................oooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Started.
Trying to get Docker socket one more time
Error requesting socket: exec: "ssh": executable file not found in %PATH%
Docker client does not run on Windows for now. Please use
"boot2docker" ssh
to SSH into the VM instead.
I tried this link. But All answers doesn't help me. I have re-installed the boot2docker and powered off boot2docker-vm in Virtual machine and restarted. Virtualisation is enabled in my bios. My Sys has better capabilities.
Using 1.4.1 version.
Please Some Suggestions?
As boot2docker complained, you don't have ssh in your path. Please add ssh.exe into Windows path (it might not be visible, but boot2docker installation includes msys-git installation which includes ssh.exe, so you need to add Git installation directory in path, e.g.
c:\Program Files (x86)\Git\bin