We have been working on a new feature that allows creating containers off Docker repositories. If you are interested, join our beta program to test the feature's current capabilities and help us improve it by providing feedback.
If you want to join, please let the support team know.
- Docker environment flags: We've added ability to pass docker environment flags for docker containers. This introduces a
docker:env:userkey that can be used to pass arbitrary environment variables to docker-enabled folders. The key can be added via the API or the control panel, on the configuration page of the Folder imaged from Docker. Multiple keys can be added separated by whitespace.
Example: A container using the [Microsoft SQL Server](https://hub.docker.com/r/microsoft/mssql-server-linux/ Docker image requires the
SA_PASSWORD=yourStrong(!)Password environmental variables to start. Add them to the Folder created from the Docker image:
Fixed: Docker imaged container cannot shut down normally, only shuts down with hard power off. We now attempt to mimic the behaviour of
docker stopfor our docker-imaged containers and help them shut down.
Fixed: Docker imaged container exits almost instantly after start if on a private vlan.
Added uppercase to Docker tag regex. This enables using Docker images that use capitals in their tags.
Unofficial docker images: Support for docker images is now extended to non-official repositories on hub.docker.com.
About the feature
Docker is the sum of two parts:
- The Docker Engine is an open-source containerisation technology (not unlike Arachsys Containers which we use for our Linux Containers) combined with a workflow for building and containerizing applications.
- The Docker Hub is a SaaS service for sharing and managing application stacks as Docker containers.
Docker on ElasticHosts
We are developing a Docker implementation on ElasticHosts which enables creating permanent Linux Containers imaged from the Docker Hub using the ElasticHosts API or the ElasticHosts control panel.
The implementation supports both official and unofficial images from the Docker Hub. You can browse the available images here.
This means that you can use your own Docker images and deploy them on Linux containers on ElasticHosts.
This implementation doesn’t support Docker command line tools, however users can create Linux containers from Docker images and managing said containers is possible via our own RESTful API. See the details on our API page. (If you need more details, let us know in a support ticket or send us an email at firstname.lastname@example.org).
If you absolutely need access to the Docker command line tools, you can still create a VM on ElasticHosts where you can install the Docker engine.
Linux Containers from Docker images
We see two major benefits of our Docker implementation. Firstly, our users get access to thousands of system and application images. But be aware, OS repositories are usually very stripped down and not necessarily bootable.
Secondly, it makes single process containerisation on ElasticHosts a convenient alternative for our “normal” variable-cpu system in a container solution. Such a setup enables running applications (e.g. nginx) on their own, on ElasticHosts, without any overhead of cron/init/sshd, while still having ssh access for configuration via our 'ssh-to-a-folder' feature.
Example: Deploying nginx in a single-process containerisation setup. This setup requires 3 folders:
- the official 'nginx' docker image mounted at "/"
- website data mounted at "/var/www", and
- a config Folder mounted at "/etc".
The benefits of this setup:
- Whenever nginx has a new version, you can replace the 'nginx' folder by the latest image (pulled from Docker) and this will keep the application up to date rather than work with what the debian/ubuntu/centos/... package maintainers have opted to release.
- The config/website Folders could later be shared amongst a cluster of nginx servers, behind a load balancer, ensuring their configs do not get misaligned (although this isn't docker specific).
Deploy a Docker image on Control Panel
Log into your ElasticHosts account and open the Control Panel
Open the Add wizard.
Select Server or Folder under the Linux Containers category
Create the Server/Folder as you would normally do, but change the “Type” to Docker.
Two new fields will appear. Please enter the name of the image into the Repository field and the tag of the release into Tag from Docker Hub.
- Examples for repository: ubuntu, debian, nginx
- Examples for tags: latest, stable, 3.14
- Finish by clicking on the Add button.
Deploy a Docker image via the API
Please see the API page for the API intro and downloadable command line tools.
The API documentation lists every available call with its list of attributes. Click here for the Docker related section of the API documentation.
- Create a new Folder
$ elastichosts.sh folders create
- Add Docker attributes to the folder
$ elastichosts.sh -c folders FOLDER docker << EOF docker:repository NAME docker:tag TAG EOF
This will start syncing the image from the Docker library. Once the image is synced, you will be able to start the container as normal.
Join the beta
Join the program and get early access to our new feature. We only ask you to provide some feedback and ask our support team if you have any question.