Bug 1414250

Summary: docker daemon command is broken
Product: Red Hat Enterprise Linux 7 Reporter: Praveen Kumar <prkumar>
Component: dockerAssignee: Lokesh Mandvekar <lsm5>
Status: CLOSED ERRATA QA Contact: atomic-bugs <atomic-bugs>
Severity: high Docs Contact:
Priority: unspecified    
Version: 7.3CC: amurdaca, dwalsh, lsm5, lsu, marco
Target Milestone: rcKeywords: Extras
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: docker-1.12.6-1.el7_3 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-03-02 19:08:32 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Praveen Kumar 2017-01-18 07:17:47 UTC
Description of problem:

If you try to start docker daemon using "docker daemon" command it's broken and throw "exec: "dockerd": executable file not found in $PATH" error.

Version-Release number of selected component (if applicable):
$ rpm -qa | grep docker
docker-common-1.12.5-14.el7.x86_64
docker-rhel-push-plugin-1.12.5-14.el7.x86_64
docker-1.12.5-14.el7.x86_64
docker-client-1.12.5-14.el7.x86_64


How reproducible:
Every time.

Steps to Reproduce:
1. Upgrade to latest docker from RHN
2. docker daemon -h 

Actual results:
exec: "dockerd": executable file not found in $PATH

Expected results:
This should show help section for docker daemon

Additional info:

Comment 2 Lokesh Mandvekar 2017-01-18 12:33:38 UTC
Can you check if 'systemctl start docker' works?

Since we have docker and docker-latest, the daemon binaries are packaged as '/usr/bin/dockerd-current' and '/usr/bin/dockerd-latest' respectively.

If using 'docker daemon' is a frequent use case, I can probably add another script to exec dockerd-current or -latest.

Comment 3 Daniel Walsh 2017-01-18 13:30:31 UTC
Lokesh, I think the standard dockerd should be installed in the standard path, so that this type of problem should not happen. similarly for docker-runc and docker-containerd.  We should just special case docker-latest.

Comment 5 Marco 2017-02-07 09:14:46 UTC
Do you use puppet to manage your setup?

Just a hint:
We ran in the same problem with the module "garethr/docker" from Puppet Forge.

This module creates the file "service-overrides.conf" with the following content:
[root@localhost ~]# cat /etc/systemd/system/docker.service.d/service-overrides.conf
[Service]
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=
ExecStart=/usr/bin/docker daemon $OPTIONS \
      $DOCKER_STORAGE_OPTIONS \
      $DOCKER_NETWORK_OPTIONS \
      $BLOCK_REGISTRY \
      $INSECURE_REGISTRY





The docker.service systemd unit file from docker 1.12.5-14.el7 seems to have the correct start command.

[root@localhost ~]# cat /usr/lib/systemd/system/docker.service 
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=rhel-push-plugin.socket

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --authorization-plugin=rhel-push-plugin \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target

Comment 6 Luwen Su 2017-02-16 09:04:38 UTC
In docker-1.12.6-5.el7.x86_64

# docker daemon -h
Usage: dockerd [OPTIONS]

A self-sufficient runtime for containers.

Options:

  --add-registry=[]                        Registry to query before a public one
  --add-runtime=[]                         Register an additional OCI compatible runtime
  --api-cors-header                        Set CORS headers in the remote API
  --authorization-plugin=[]                Authorization plugins to load
  -b, --bridge                             Attach containers to a network bridge
.......

Move to verified

Comment 8 errata-xmlrpc 2017-03-02 19:08:32 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2017-0406.html