Docker is a “container” platform, which allows applications to be run in their own sandboxed world. These applications share resources, e.g. things like hard drive space or RAM, but otherwise can’t interfere with programs running on the host system. For corporate servers this means an attacker may not be able to use a compromised web server to get at the database holding customer data.
For the desktop user, it means the bleeding-edge app you’re trying out can’t accidentally delete all your cat’s selfies.
Pros and Cons of Using Docker
There are several good reasons to try out new programs via Docker, including the following:
- They are safely isolated from your system, without the means to do damage in most cases.
- Docker containers have a mechanism to keep them up-to-date, meaning it’s easy to make sure you have the latest and greatest versions.
- You’re not installing anything on your “real” system, so you won’t run into conflicts with your “regular” versions on the application. You could, for example, run LibreOffice on your host system, but run OpenOffice in a container (you know, in case you don’t believe the project is shutting down).
- Speaking of versions, you can even have multiple (but different) copies of the same version running on your machine at once. Try that with Word 2016!
- Some Docker apps run their own minimized version of Linux. This means even if the app isn’t normally compatible with Mac or Windows it may still work for you within a Docker container. Try them out before you switch to Linux full time.
- They’re easy to clean up. Don’t like the way things turned out? Just trash the container and create a new one.
On the other hand, there are some caveats to using applications this way:
- As they operate in their own little world, they don’t have access to your files unless you give it to them. That means if you want to try the brand new version of LibreOffice via Docker, you may need to do some additional work to make your files accessible.
- In general, Docker apps ship with everything they need to run, which often includes libraries that could be re-used with other programs. Some even ship with a full operating system behind them. So you may be doubling up on disk space usage.
- They don’t provide convenient icons and other desktop-centric niceties. While we’ll show you a GUI you can use to download and run these Docker containers, they won’t show up in your main application launcher unless you create an entry by hand.
- Like many things open source, it’s members of the community who have been creating these Docker applications from their upstream releases. This means your access to the latest version and/or any bugfixes is at the mercy of these peoples’ free time.
Installation and Usage
Getting things up and running involves three preliminary steps:
- First, get Docker installed and running on your system (including a graphical interface for it, if you want one).
- Next, find and download an image for the application you want to run. While you normally install an application, you get one (and only one) copy of it. Think of an image as a template for the application — you can create as many installs from this template as you like.
- Lastly, create one of those copies, called a container, and run it.
Let’s look at each of these in detail.
Most Linux distribution have Docker available in repositories for easy installation. In Ubuntu, the following command will get you what you need:
sudo apt-get install docker.io
ps ax | grep dockerd
The Docker daemon will start up with your system automatically by default, but you can set that differently if you know how to adjust your systemd settings.
Note: If you use Simple Docker UI, make sure you add yourself to the “docker” user group as described here. If you’re not part of this group, you won’t be able to use Docker commands from your normal (non-root) user account, the one with which you’ll be running Chrome and its apps, without using sudo all the time.
Finding and Installing Desktop Applications With Docker
Now that you’ve got a nice UI going, it’s time to find something to install. Your first stop should be the Hub, a repository of applications hosted by the docker project. Another straightforward way to find some interesting applications is to Google for them. In either case look for a “Launch Command” along the lines of the following:
docker run -it -v someoptions \ -e more options \ yet even more options...
Paste this into a terminal and it will download and launch the application for you.
You can also “pull” the application, then launch it yourself. If you’re using the Simple UI app, it can search Docker Hub automatically for your keyword.
Once you’ve found what you’re looking for, click its listing, then the Pull Image button in the pop-up dialog to download the image of the application.
Remember, an image is a “template” of sorts. Next you’ll need to create a container that uses your new image. Switch over to the Images tab. Clicking the Deploy Container button will create a new, runnable copy of your application.
Running Your New Docker Container
From the command line, you can view a list of all your docker containers with the command:
docker ps -a
This lists the containers with some of their stats — note the “NAMES” column to the far right. To restart one of your containers, pick the name of the container you want and issue the following:
docker start [containername]
Using the app, go the “Containers” screen, select the container you want, and click the “Start” button in the upper left of the screen. Your application will start in a new window on your desktop, just like a “normal” application.
Your application should open in a new window, just as if you had installed it normally. But remember, it exists in isolation from your other applications. This allows you to do some neat things, like run LibreOffice and OpenOffice in parallel (their dependencies usually conflict with one another):
Try Docker-ized Apps for Fun and Profit
Docker provides an easy way to get an app up and running so you can try it out, and an equally easy way to clean it from your system. Once you get through the initial set-up of Docker, a single run command is often all you need to download an image, create a container from it, and launch it on your desktop.
Have you found any cool Docker-ized apps? Let us know in the comments!