How to install and use Docker on Synology 20


1. Installation

Simply find and install a Docker application from the Synology Package Center.

Note: If you do not find the application in your Package Center, your Synology is most probably not supported yet:

Due to the hardware requirement, Docker will be only available on the following models:
18 series: DS3018xs, DS918+, DS718+, DS218+
17 series: FS3017, FS2017, RS18017xs+, RS4017xs+, RS3617xs+, RS3617xs, RS3617RPxs, DS3617xs, DS1817+, DS1517+
16 series: RS18016xs+, RS2416+, RS2416RP+, DS916+, DS716+II, DS716+, DS216+II, DS216+
15-series:     RC18015xs+, DS3615xs, DS2415+, DS1815+, DS1515+, RS815RP+, RS815+, DS415+
14-series:     RS3614xs+, RS3614xs, RS3614RPxs, RS2414RP+, RS2414+, RS814RP+, RS814+
13-series:     DS2413+, RS3413xs+, RS10613xs+, DS1813+, DS1513+, DS713+
12-series:     DS3612xs, RS3412xs, RS3412RPxs, RS2212RP+, RS2212+, DS1812+, DS1512+, RS812RP+, RS812+, DS412+, DS712+
11-series:     DS3611xs, DS2411+, RS3411xs, RS3411RPxs, RS2211RP+, RS2211+, DS1511+, DS411+II, DS411+
10-series:     DS1010+, RS810RP+, RS810+, DS710+(source, last updated 09-29-2017)

2. How to use it?

When you start a Docker application, you will see an application menu on the left side:

  • Overview
  • Registry
  • Image
  • Container
  • Log

Overview

Here you will see your running containers, i.e. your running applications including allocated memory and CPU resources.

Synology Docker Overview

The real command in Docker:

docker ps

Registry

On the registry page, you can search for new images (the same as on the official site). You can also add some new repositories (in addition to the official site) in Settings.

The real command in Docker:

docker search ubuntu

Synology Docker Images

After you found your image (e.g. ubuntu in our case), you should download it to your Synology. All Images are read-only and you can use them multiple times for more containers.

The real command in Docker:

docker pull ubuntu

Image

Here you will find images available on your Synology, ready to create new containers using a wizard or directly with a docker run command. You can usually find this command on the official page with an image.

The real command in Docker:

docker images

Synology Docker Image

We use a long running process for creating a new container from a docker run command:

docker run -d ubuntu /bin/sh "while true; do echo hello world; sleep 1; done"

creating docker container

The Synology wizard checks your command for compatibility, not all docker run parameters are available for use.

  • Docker run supports the below parameters:
    • "d", "detach"
    • "e", "env"
    • "link"
    • "m", "memory"
    • "name"
    • "P", "publish-all"
    • "p", "publish"
    • "privileged"
    • "v", "volume"
  • Docker run does not support the below parameters:
    • "a", "attach"
    • "add-host"
    • "c", "cpu-shares"
    • "cap-add"
    • "cap-drop"
    • "cidfile"
    • "cpuset"
    • "device"
    • "dns"
    • "dns-search"
    • "entrypoint"
    • "env-file"
    • "expose"
    • "h", "hostname"
    • "i", "interactive"
    • "lxc-conf"
    • "net"
    • "restart"
    • "rm"
    • "security-opt"
    • "sig-proxy"
    • "t", "tty"
    • "u", "user"
    • "w", "workdir"

Basically, your containers need to run as a daemon on your Synology (an opposite to run an interactive shell). It makes sense, you cannot run an interactive shell in your Synology Docker application in a web browser.

Back to our new ubuntu container (actually got name dummyUbuntu). The wizard offers to set more options, but we want to create a dummy container, so click Next, Next, Next.

Container

The dummyUbuntu container appears now on the Container page.

container

The real command in Docker (prints all containers including stopped):

docker ps -a

The last step is waiting for us: Run it.

When you double click on any container, a window with some more details about a running container appears.

container's detail

You see some information about our dummyUbuntu container and capability to Start, Stop, Restart it.

The real command in Docker:

docker start/stop/restart dummyUbuntu

You can see other information about a running container using the top menu.

container detail-process

The real command in Docker:

docker top dummyUbuntu

On the Log tab, you can see logs from your container (not automatically refreshed, maybe in the future with the parameter -f as available in the standard Docker client).

container detail-log

The real command in Docker:

docker logs dummyUbuntu

The last tab Terminal shows output of a command used to run your container (in our case the dummy long running process: "while true; do echo hello world; sleep 1; done" )

container detail-terminal

The real command in Docker:

docker attach dummyUbuntu

Note: The docker attach command never starts a new instance of a shell, instead of that you will see an ongoing output of the first start command. For more alternatives, see the point 8 on page 10 Useful Docker Commands – Tips and Tricks.

Share this:
  • Pingback: How to install and use Docker on Synology | Doc...()

  • How to change DSM default networking for docker ? I want to use static bridged IP in one container, but can’t find the way. Thank you.

    • It is not so easy, maybe as you know, you would need to create your own bridge on your Synology (brctl addbr …command, see https://docs.docker.com/articles/networking/#bridge-building) and edit startup params of the docker server. All of them from the command line.

      actually there are several problems…,
      1) The bridge cannot be changed any more and is used by all containers, not only by specific one, what you need,

      2) Docker GUI app from Synology does not count with these changes (I tried to make some changes to docker from the command line as well and was finally happy, that I was able to go back… GUI was going crazy, some information disappeared etc…)

      3) Maybe you noticed that a firewall in your Synology is continuously updated with running applications inside your Docker (really useful and very easy to control a remote access to your Docker applications). So the Docker application is quite deeply integrated to your NAS and it is very dangerous to change some network interfaces etc.

  • Pingback: How to Run Application in Docker on Synology()

  • Pingback: [Sammelthread] XPEnology - Fragen & Antworten, Anleitungen, Diverses - Seite 77()

  • First, great posts on Synology + Docker here!

    Secondly where are you getting the list of supported params? Are you guessing based of the available GUI options? I have not found the official Synology docs helpful at all for their implementation of Docker. Also, it looks like they are missing some pretty key/fundamental elements like: docker compose (docker-compose), volume sharing among containers (–volume-from), and image generation (docker build).

    • Hi John,
      thanks, you’re absolutely right. Docker on Synology is missing some key features required by professional usage. It is only useful for running SOME standalone applications. Otherwise I really appreciate their effort to support this really cool technology and they are still evolving.
      PS: I had only guessed the mentioned real commands, but their usage is more or less probable.

  • Gus70

    Is it possible to use this Docker Ubuntu container and connect to the Ubuntu graphical user interface desktop?

    • Yes, it is, e.g.: docker run-d -p 6080:6080 dorowu/ubuntu-desktop-lxde-vnc . The desktop is accessible via VNC. I have already tried it and it is working properly on my Synoogy.

      • Gus70

        Awesome.! Thank you. This is starting to really look like it has potential.

        • It depends… The main Docker’s aim is to provide an application as a service, not a full platform.

          You may encounter some limitations. The base images (Ubuntu, Centos etc.) are not prepared to be used as a desktop to run multiple applications in it. I would prefer other virtualization technologies (virtutal box, vmware etc.) when you needed to run a full stack of a virtual machine.

          From my point of view, the really smart and cool usage is to run some desktop applications inside Docker (but not available on Synology), check this for more examples: https://blog.jessfraz.com/post/docker-containers-on-the-desktop/

          • Gus70

            I concur. That does put it in perspective.

  • Pingback: Dockers | Pearltrees()

  • Pingback: Love Quotes | Rick Quotes()

  • Pingback: Check New Lyrics Site()

  • Pingback: Happy Rose Day 2016 Wallpapers()

  • Pingback: backlink Site List 2016()

  • houman

    Sorry for my ignorance. After installing Ubuntu like this in a docker. How can I actually get SSH access to that instance in order to setup a webserver. And How can I expose that webserver to the outside world?

    • I don’t own a Synology NAS anymore so I can’t confirm that this will work. But if you do have SSH access to your NAS you can SSH into that and then execute `docker exec -ti theContainerName /bin/bash` and that will open up a shell environment on that container. `theContainerName` should be the name on your container and `/bin/bash` can also be changed to whatever you want to execute on your container.

      To expose ports you should do that when you start your container. E.g `docker run –name my_container_name -p 80:80 -d ubuntu`. `-p` is for publish ports, in my example you are publishing the docker port 80 as your lokal port 80.

  • Hi,

    Do you have a guide on setting up Buddy Enterprise (https://buddy.works/enterprise) on Synology NAS?