Let's put it simply, it is due to the /usr/lib/systemd/system/docker.service shipped with newer version of Docker (most probably v1.7 and above).
The file looks like this now =>
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/docker daemon -H fd:// MountFlags=slave< LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
You can see clearly that it no longer contains any environment variable for you to customize stuff.
To fix that, we need to create a systemd drop-in file for docker.service.
(1) Create a directory "/etc/systemd/system/docker.service.d" on ALL servers.
mkdir /etc/systemd/system/docker.service.d
(2) In the directory, create a file - "local.conf" - using your favorite text editor with the following lines:
[Service]
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY
(3) Create or edit the /etc/sysconfig/docker or /etc/sysconfig/docker-storage or /etc/sysconfig/docker-network to specify your customized options.
Eg.
[/etc/sysconfig/docker]
OPTIONS="-H tcp://0.0.0.0:2375 --label nodename=node1.mytestmac.com"
(4) Reload systemd.
systemctl daemon-reload
(5) Verify that docker.service is now aware of its environment files.
systemctl show docker | grep -i env
Eg.
[root@hdp1 ~]# systemctl show docker | grep -i env
EnvironmentFile=/etc/sysconfig/docker (ignore_errors=yes)
EnvironmentFile=/etc/sysconfig/docker-storage (ignore_errors=yes)
EnvironmentFile=/etc/sysconfig/docker-network (ignore_errors=yes)
[root@hdp1 ~]#
(6) Restart docker.
systemctl restart docker
(7) Verify the changes.
ps -ef | grep docker
Hope that helps to resolve your headaches! :)
No comments:
Post a Comment