Skip to content

Instantly share code, notes, and snippets.

@mrmrcoleman
Created March 14, 2017 05:12
Show Gist options
  • Save mrmrcoleman/d1b350fd53e4a8a2353f27a82e071a73 to your computer and use it in GitHub Desktop.
Save mrmrcoleman/d1b350fd53e4a8a2353f27a82e071a73 to your computer and use it in GitHub Desktop.
title: "How To Run Docker in Hyper.sh"
date: 2017-03-13 18:00:00 +0800
author: hyper
preview: |
This blog shows you a few ways to setup a Docker daemon, and launch Docker containers inside of a Hyper container.
---
# How to run Docker in Hyper.sh
Lately we have received a lot of requests asking **how to run Docker in Hyper.sh**. This blog shows you a few ways to setup a Docker daemon, and launch Docker containers inside of a Hyper container.
---
### Ubuntu 16.04
``` bash
$ ID=`hyper run -d ubuntu:16.04` # launch an Ubuntu container
$ hyper exec -it ${ID} /bin/bash # get shell access
# apt-get update
# apt-get install docker.io cgroup-lite screen -y # install dependencies
# cgroups-mount # mount cgroup
# screen -dmS docker_daemon dockerd -D # Do NOT use `service docker start`
# docker info # if this works, you are all set
```
### CentOS 7.0
``` bash
$ ID=`hyper run -d centos:7`
$ hyper exec -it ${ID} /bin/bash
# yum install libcgroup e2fsprogs iptables screen docker -y
# mkdir -p /cgroup/memory && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,memory cgroup /cgroup/memory
# mkdir -p /cgroup/cpuset && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,cpuset cgroup /cgroup/cpuset
# mkdir -p /cgroup/cpu,cpuacct && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,cpu,cpuacct cgroup /cgroup/cpu,cpuacct
# mkdir -p /cgroup/net_cls,net_prio && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,net_cls,net_prio cgroup /cgroup/net_cls,net_prio
# mkdir -p /cgroup/blkio && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,blkio cgroup /cgroup/blkio
# mkdir -p /cgroup/freezer && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,freezer cgroup /cgroup/freezer
# mkdir -p /cgroup/perf_event && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,perf_event cgroup /cgroup/perf_event
# mkdir -p /cgroup/devices && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,devices cgroup /cgroup/devices
# mkdir -p /cgroup/pids && mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,pids cgroup /cgroup/pids
# screen -dmS docker_daemon /usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current
# docker info
```
### Prebaked Docker Images!
Prefer to use something prebaked? Check out our repository on Docker hub: [https://hub.docker.com/r/hyperhq/docker-in-hyper/](https://hub.docker.com/r/hyperhq/docker-in-hyper/)
You can use the following tags:
- hyperhq/docker-in-hyper:ubuntu-16.04
- hyperhq/docker-in-hyper:centos7 (`latest`)
#### Usage
``` bash
$ hyper run -d -P hyperhq/docker-in-hyper
8dcb2ab017eb4603ae1d9a92ffc68e5cf0edec63e780f9180228eabfce47e028
$ hyper ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PUBLIC IP
8dcb2ab017eb hyperhq/docker-in-hyper "/entrypoint.sh /bin/" 1 minutes ago Up 1 minutes 0.0.0.0:2375->2375/tcp clever-shirley
$ hyper exec -it 8dcb2ab01 /bin/bash
[root@8dcb2ab017eb /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```
### Questions?
Feel free to drop us an email [contact@hyper.sh](mailto:contact@hyper.sh), or use the Forum, the Twitter or the in console support window!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment