diff --git a/src/emuvim/api/util/__init__.py b/src/emuvim/api/util/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/emuvim/api/util/__init__.py
diff --git a/src/emuvim/api/util/docker_utils.py b/src/emuvim/api/util/docker_utils.py
new file mode 100644
index 0000000..39d8a2b
--- /dev/null
+++ b/src/emuvim/api/util/docker_utils.py
@@ -0,0 +1,40 @@
+import logging
+from io import BytesIO
+
+import docker
+
+from emuvim.api.util.path_utils import get_absolute_path
+
+
+def build_dockerfile_dir(folder, tag):
+    dcli = docker.from_env().api
+    folder = get_absolute_path(folder)
+    build_stream = dcli.build(folder, tag=tag)
+    logging.info('Docker build result:')
+    for line in build_stream:
+        logging.info(line)
+
+
+def suffix_tag_name(tag, suffix):
+    if ":" in tag:
+        return "%s_%s" % (tag, suffix)
+    return "%s:latest_%s" % (tag, suffix)
+
+
+def wrap_debian_like(image):
+    dcli = docker.from_env().api
+    dockerfile = '''
+    FROM %s
+    RUN apt update -y && apt install -y net-tools iputils-ping iproute
+    ''' % image
+    f = BytesIO(dockerfile.encode('utf-8'))
+    wrapper_name = suffix_tag_name(image, 'containernet_compatible')
+    logging.info('wrapping image: %s->%s' % (image, wrapper_name))
+    build_stream = dcli.build(fileobj=f, tag=wrapper_name)
+    build_result = [line for line in build_stream]
+    logging.debug('Docker build result:' + '\n'.join(build_result))
+    return wrapper_name
+
+
+# 172.17.0.1 is the ip of the docker0 interface on the host
+DOCKER_HOST_IP = '172.17.0.1'
diff --git a/src/emuvim/api/util/path_utils.py b/src/emuvim/api/util/path_utils.py
new file mode 100644
index 0000000..592492a
--- /dev/null
+++ b/src/emuvim/api/util/path_utils.py
@@ -0,0 +1,8 @@
+import os
+import sys
+
+
+def get_absolute_path(absolute_or_relative_to_main_path):
+    if os.path.isabs(absolute_or_relative_to_main_path):
+        return absolute_or_relative_to_main_path
+    return os.path.join(sys.path[0], absolute_or_relative_to_main_path)
diff --git a/src/emuvim/api/util/process_utils.py b/src/emuvim/api/util/process_utils.py
new file mode 100644
index 0000000..1f90716
--- /dev/null
+++ b/src/emuvim/api/util/process_utils.py
@@ -0,0 +1,9 @@
+import logging
+import subprocess
+import time
+
+
+def wait_until(cmd):
+    logging.debug('waiting for %s\n' % cmd)
+    while subprocess.call(cmd, shell=True) != 0:
+        time.sleep(1)
