0

I follow the official document to install Docker on Ubuntu 16.04 LTS. Since my server works behind proxy, so I need to configure proxy for Docker. The processes running on my host like this:

# ps -aef | grep init
root         1     0  0 03:05 ?        00:00:01 /sbin/init
# ps -aef | grep docker
root      3223     1  0 04:04 ?        00:00:00 /usr/bin/docker daemon -H fd://
root      3230  3223  0 04:04 ?        00:00:00 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m

Since docker's father process is init, I modify the /etc/default/docker file:

# cat /etc/default/docker
# Docker Upstart and SysVinit configuration file

#
# THIS FILE DOES NOT APPLY TO SYSTEMD
#
#   Please see the documentation for "systemd drop-ins":
#   https://docs.docker.com/engine/articles/systemd/
#

# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

# If you need Docker to use an HTTP proxy, it can also be specified here.
export http_proxy="http://web-proxy.corp.xxxxxx.com:8080/"
export https_proxy="https://web-proxy.corp.xxxxxx.com:8080/"
......

But unfortunately, this change doesn't take effect. I doubt the Docker is controlled by systemd, so I check it:

# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-07-14 03:19:35 EDT; 2min 16s ago
     Docs: https://docs.docker.com
 Main PID: 3057 (docker)
    Tasks: 24
   Memory: 25.2M
      CPU: 531ms
   CGroup: /system.slice/docker.service
           ├─3057 /usr/bin/docker daemon -H fd://
           └─3064 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
......

Then I follow this post to set proxy, now it works!

Per my understanding, since this docker process is spawned by init, it should be controlled by it. But in reality, it seems controlled by systemd. How do I know whether init or systemd controls the docker?

Community
  • 1
  • 1
Nan Xiao
  • 16,671
  • 18
  • 103
  • 164
  • 1
    Future questions about systemd would be more appropriate on https://unix.stackexchange.com/ or https://askubuntu.com in this case. StackOverflow is focused on programming questions. – Mark Stosberg Jul 14 '16 at 12:58
  • @MarkStosberg: Got it, thx very much for this kind tip! – Nan Xiao Jul 14 '16 at 23:17

1 Answers1

1

On Ubuntu 16.04, /sbin/init is systemd. You can confirm that the binary is provided by the systemd-sysv package:

dpkg -L systemd-sysv | grep /sbin/init 

Further, 'init' is just a symlink to systemd:

$ ls -lthd /sbin/init
lrwxrwxrwx 1 root root 20 May 12 05:39 /sbin/init -> /lib/systemd/systemd   
Mark Stosberg
  • 12,961
  • 6
  • 44
  • 49