我如何知道 "init" 或 "systemd" 是否控制 docker?
How do I know whether "init" or "systemd" controls the docker?
我按照官方document在Ubuntu 16.04 LTS
上安装了Docker
。由于我的服务器在代理后面工作,所以我需要为 Docker 配置代理。我主机上的进程 运行 是这样的:
# 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
由于docker
的父进程是init
,我修改/etc/default/docker
文件:
# 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/"
......
但遗憾的是,此更改并未生效。我怀疑 Docker
是由 systemd
控制的,所以我检查了一下:
# 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
......
然后我按照这个post设置代理,现在可以了!
据我了解,由于此 docker
进程是由 init
生成的,因此应该由它控制。但实际上,它似乎是由 systemd
控制的。我如何知道 init
或 systemd
是否控制 docker
?
在 Ubuntu 16.04 上,/sbin/init
是 systemd。您可以确认二进制文件是由 systemd-sysv
包提供的:
dpkg -L systemd-sysv | grep /sbin/init
此外,'init' 只是 systemd 的符号链接:
$ ls -lthd /sbin/init
lrwxrwxrwx 1 root root 20 May 12 05:39 /sbin/init -> /lib/systemd/systemd
我按照官方document在Ubuntu 16.04 LTS
上安装了Docker
。由于我的服务器在代理后面工作,所以我需要为 Docker 配置代理。我主机上的进程 运行 是这样的:
# 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
由于docker
的父进程是init
,我修改/etc/default/docker
文件:
# 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/"
......
但遗憾的是,此更改并未生效。我怀疑 Docker
是由 systemd
控制的,所以我检查了一下:
# 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
......
然后我按照这个post设置代理,现在可以了!
据我了解,由于此 docker
进程是由 init
生成的,因此应该由它控制。但实际上,它似乎是由 systemd
控制的。我如何知道 init
或 systemd
是否控制 docker
?
在 Ubuntu 16.04 上,/sbin/init
是 systemd。您可以确认二进制文件是由 systemd-sysv
包提供的:
dpkg -L systemd-sysv | grep /sbin/init
此外,'init' 只是 systemd 的符号链接:
$ ls -lthd /sbin/init
lrwxrwxrwx 1 root root 20 May 12 05:39 /sbin/init -> /lib/systemd/systemd