Docker configuration using the systemd configuration style Docker configuration using the systemd configuration style docker docker

Docker configuration using the systemd configuration style


Expanded on my comment for readability

Problem

Couldn't connect to a remote insecure repository. Unable to add "insecure_repository" to docker options on startup.

Using docker installed via package manager on Ubuntu 16.04 LTS

Solution

1. Verify docker under is control of systemd

$systemctl status docker should return details for running docker service. You can view the default setup it's using under Loaded:

2. Add insecure repository systemd conf file

This file will load the DOCKER_OPTS env variable.

Create file at /etc/systemd/system/docker.service.d/insecure_repository.conf

Add file contents:

[Service]Environment='DOCKER_OPTS=--insecure-registry="myregistryserver.mydomain.com:5000"'

3. Add docker systemd workaround conf file

This file will modify the ExecStart to use the DOCKER_OPTS environment variable.

Create file at /etc/systemd/system/docker.service.d/docker-systemd-workaround.conf

Add file contents:

[Service]ExecStart=ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS

4. Reload

$sudo systemctl daemon-reload

$sudo service docker restart

5. Verify

$docker info should contain myregistryserver.mydomain.com:5000 under Insecure Registries:

$systemctl status docker should have your systemd configs (aka drop-ins) under the Drop-In: header. You should also see your modified ExecStart under the CGroup: header.


I had a similar problem and struggled for ages until I found this blog.

Basically follow these steps :

sudo vi /etc/systemd/system/docker.service.d/docker.conf andadd the following :

[Service] #You need the below or you 'ExecStart=' or you will get and error 'Service has more than one ExecStart= setting, which is only allowed'ExecStart= ExecStart=/usr/bin/docker daemon -H fd://ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry youregistry.mydomain.com:5000

Then finally :

  • sudo systemctl daemon-reload
  • sudo systemctl restart docker