How to use Docker with Synology
Synology DSM 6.0 or higher comes with the Docker Engine. You can find the Docker App in the package center by entering docker in the search field.
Docker is a lean virtualization application platform, thousands of containers created by developers from all over the world can be executed and are published on the well-known image repository, called Docker Hub. Container images can be find on Docker Hub will loaded and executed from Synology’s integrated Docker App.
If the Docker App does not appear in the Package Center, the Synology device is most likely not supported.
Due to the hardware requirements, Docker is only offered for models with virtualization technology (VT-x). The models used in this guide are RS820RP+ / RS4018xs+ / DS218+ for these the Docker ability is given.
How to use Docker
When you open the main menu icon from DSM, you will find the icon for the Docker Engine, which can now be started.
Docker opens in overview, the running containers are listed here, any applications including allocated memory and CPU resources, number of container has yet been started.
In addition, the Docker command line is explained below, this as a alternative hint for using Docker Console.
CLI Docker Command Running Container:
In the Registration section you can search for new images (like on the official website). New repositories (in addition to the official ones) can also be added under Settings.
CLI the original Docker Command is:
docker search ubuntu-sshd
After a suitable image has been found, in this case a small Ubuntu 18.04 Dockerized image contains SSH service, it is downloaded with a right click on the Synology NAS, ideally always choosing latest. All images are write-protected and can be used multiple times for other containers.
CLI Docker Command is:
docker pull rastasheep/ubuntu-sshd
The downloaded images that are available on the Synology NAS are located under Image. New containers can be started with the Docker wizard. Note
CLI Docker Command is:
docker images -a
Now go to Start will open the Assistent.
Next to complete the wizard and start the container with klick Apply.
CLI Docker Command is:
docker run -d -P --name ubuntu rastasheep/ubuntu-sshd
Running container can now be found in the Container section.
CLI Docker full output as follows:
~# docker pull rastasheep/ubuntu-sshd Using default tag: latest latest: Pulling from rastasheep/ubuntu-sshd a48c500ed24e: Pull complete Digest: sha256:1a4010f95f6b3292f95fb26e442f85885d523f9a0bb82027b718df62fdd0d9e9 Status: Downloaded newer image for rastasheep/ubuntu-sshd:latest ~# docker run -d -P --name ubuntu rastasheep/ubuntu-sshd 2f96bba413755a843c2758f818dbec56f0e163a232e1cb7c7c971034c62a8c98
Back to Docker overview, we can now see the resources of started containers.
CLI Docker Command is:
docker ps -a
Now we are trying to establish an SSH terminal to the container. To do this in the Container section, click on Details to see which port the SSH service is listening on.
In the overview under port settings we find the value we are looking for under local port, in this case it is port 32789, the port address is assigned automatically.
CLI Determine port address.
~# docker port ubuntu 22 0.0.0.0:32789
Now we open PuTTY or KiTTY and connect to IP of the Synology NAS with port 32789 to the container, for CLI Command as follows:
~# ssh -p 32789 firstname.lastname@example.org The authenticity of host '[10.127.52.77]:32789 ([10.127.52.77]:32789)' can't be established. ECDSA key fingerprint is SHA256:YtTfuoRRR4qStSVA5UuxnGamA/dvf+djbIT2Y48IYD0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[10.127.52.77]:32789' (ECDSA) to the list of known hosts. email@example.com's password: Last login: Thu Sep 19 15:00:25 2018 from 172.18.0.1 root@rastasheep-ubuntu-sshd1:~#
Logon as root with the password of root.
The Docker Engine can also be used from the console, provided the SSH terminal that has been activated under DSM Control Panel – SSH Service.
Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes Run 'docker COMMAND --help' for more information on a command.
The Docker application shown in this article is intended to show as a simple example how Docker can be used on a Synology NAS, of course there are more useful container applications, such as Websever for developing web applications to complete development environments, there are already countless Docker images on Docker Hub https://hub.docker.com, and other Docker registrars. It makes you wonder whether the effort to install your development environment such as Xamp or LAMP is still useful. At this point it should be mentioned that all data stored in the container must be saved on a persistent volume, because all work is lost when the container is closed.
There are also other articles about using Docker here in this blog, the best thing to do is to simply enter docker in the search field above.