When usion puppet docker_platform with vagrant virtualbox the docker container is not started and after restart the docker daemon is not started

101 views
Skip to first unread message

Torsten Kleiber

unread,
Apr 4, 2016, 3:56:37 PM4/4/16
to Puppet Users
Hi!

I try to create a virtualbox machine with vagrant and puppet provider.

According to the documentation
https://forge.puppetlabs.com/puppetlabs/docker_platform/readme#class-docker
I have create following manifest:

class { 'docker':
  service_enable => true,
  service_state  => 'running',
}
docker::image { 'jenkinsci/jenkins:2.0-beta-1': 
  require => Class['docker'],
}

docker::run { 'Jenkins2Beta1':
  image            => 'jenkinsci/jenkins:2.0-beta-1',
  detach           => true,
  ports            => '8080:8080',
  volumes          => '/virtual_storage/jenkins_home:/var/jenkins_home',
  running          => true,
  extra_parameters => ['--restart unless-stopped'],
  require          => Docker::Image['jenkinsci/jenkins:2.0-beta-1'],
}

With the bold configuration I would expect the my container 'Jenkins2Beta1' should be started after provisioning, which is not the case.
I have to determine the id of the container manual via "sudo docker ps -all" and start it then via "sudo docker start <id>".

Furthermore after restarting the virtualbox machine via "vagrant halt" and "vagrant up" the docker daemon has to be started manually via "sudo docker daemon".

What is wrong in my manifest?

Kind regards
Torsten

Gareth Rushgrove

unread,
Apr 5, 2016, 8:29:32 AM4/5/16
to puppet...@googlegroups.com
Hi Torsten

The bold values represent the defaults, so you shouldn't need to specify them.

You also have some other options set that I don't think are required.
Could you try with the following:

class { 'docker': }
docker::image { 'jenkinsci/jenkins:2.0-beta-1': }
docker::run { 'Jenkins2Beta1':
ports => '8080:8080',
volumes => '/virtual_storage/jenkins_home:/var/jenkins_home',
}

I think what is happening here is that by specifying detach you are
separating the docker container from the init script which is
generated by the module.

With regards to the docker daemon starting on boot, I think that's the
init scripts shipped with Docker. These vary depending on the OS
unfortunately. Puppet should be telling the service to be enabled:
https://github.com/garethr/garethr-docker/blob/master/manifests/service.pp#L198.

Let us know if that resolves your issue.

Gareth

On 4 April 2016 at 20:56, 'Torsten Kleiber' via Puppet Users
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to puppet-users...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/389a99f5-793d-4448-8ffd-cd8adb7f6236%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



--
Gareth Rushgrove
@garethr

devopsweekly.com
morethanseven.net
garethrushgrove.com

Torsten Kleiber

unread,
Apr 5, 2016, 9:47:20 AM4/5/16
to Puppet Users
Hi Gareth!

I had to add the bold line to start puppet successful:

class { 'docker': }
docker::image { 'jenkinsci/jenkins:2.0-beta-1': }
docker::run { 'Jenkins2Beta1':
  image            => 'jenkinsci/jenkins:2.0-beta-1',
  ports            => '8080:8080',
  volumes          => '/virtual_storage/jenkins_home:/var/jenkins_home',
}

But now I get following error:

==> default: Error: Could not start Service[docker]: Execution of '/bin/systemctl start docker' returned 1: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
==> default: Error: /Stage[main]/Docker::Service/Service[docker]/ensure: change from stopped to running failed: Could not start Service[docker]: Execution of '/bin/systemctl start docker' returned 1: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

[vagrant@oraclelinux7 ~]$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─service-overrides.conf
   Active: failed (Result: exit-code) since Tue 2016-04-05 23:23:37 AEST; 9min ago
  Process: 10148 ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=125)
 Main PID: 10148 (code=exited, status=125)

Apr 05 23:23:37 oraclelinux7.vagrant.vm systemd[1]: Starting Docker Application Container Engine...
Apr 05 23:23:37 oraclelinux7.vagrant.vm docker[10148]: flag provided but not defined: -d
Apr 05 23:23:37 oraclelinux7.vagrant.vm docker[10148]: See '/usr/bin/docker --help'.
Apr 05 23:23:37 oraclelinux7.vagrant.vm systemd[1]: docker.service: main process exited, code=exit...n/a
Apr 05 23:23:37 oraclelinux7.vagrant.vm systemd[1]: Failed to start Docker Application Container Engine.
Apr 05 23:23:37 oraclelinux7.vagrant.vm systemd[1]: Unit docker.service entered failed state.
Apr 05 23:23:37 oraclelinux7.vagrant.vm systemd[1]: docker.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

It seems, that -d is really not defined on Oracle Enterprise Linux, should this be -D instead?

[vagrant@oraclelinux7 ~]$ /usr/bin/docker --help
Usage: docker [OPTIONS] COMMAND [arg...]
       docker daemon [ --help | ... ]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

  --config=~/.docker              Location of client config files
  -D, --debug                     Enable debug mode
  -H, --host=[]                   Daemon socket(s) to connect to
  -h, --help                      Print usage
  -l, --log-level=info            Set the logging level
  --tls                           Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA
  --tlscert=~/.docker/cert.pem    Path to TLS certificate file
  --tlskey=~/.docker/key.pem      Path to TLS key file
  --tlsverify                     Use TLS and verify the remote
  -v, --version                   Print version information and quit

Commands:
    attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders between a container and the local filesystem
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container's filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive or STDIN
    login     Register or log in to a Docker registry
    logout    Log out from a Docker registry
    logs      Fetch the logs of a container
    network   Manage Docker networks
    pause     Pause all processes within a container
    port      List port mappings or a specific mapping for the CONTAINER
    ps        List containers
    pull      Pull an image or a repository from a registry
    push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image(s) to a tar archive
    search    Search the Docker Hub for images
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    update    Update resources of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

Run 'docker COMMAND --help' for more information on a command.

Gareth Rushgrove

unread,
Apr 6, 2016, 4:35:55 AM4/6/16
to puppet...@googlegroups.com
On 5 April 2016 at 14:47, 'Torsten Kleiber' via Puppet Users
Ah. Docker 1.10 removed the -d flag in favour of the daemon subcommand.

This is fixed in the upstream module (garethr/docker). We should have
a release of docker_platform out soon with those fixes in. For the
moment I would suggest trying this out with the garethr/docker module
and see if that works. Alternatively you can pin to docker version 1.9
and that should work too.

Thanks

Gareth
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to puppet-users...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/685674a9-e42a-4687-82ba-087eba6aed87%40googlegroups.com.

Torsten Kleiber

unread,
Apr 6, 2016, 4:29:21 PM4/6/16
to Puppet Users
Hi Gareth!

garethr/docker module does start the docker daemon after reboot via vagrant halt / up.
But unfortunately the container does only exist and start after initial provisioning, but is not there anymore (via "sudo docker ps -all") after same vagrant restart.

Kind regards
Torsten

Gareth Rushgrove

unread,
Apr 7, 2016, 5:53:38 AM4/7/16
to puppet...@googlegroups.com
On 6 April 2016 at 21:29, 'Torsten Kleiber' via Puppet Users
If you could open an issue at https://github.com/garethr/garethr-docker/issues

Please include as much information as possible and any output from
commands run. Which OS, version of Puppet, version of Docker and the
module, that sort of thing. In particular any boot errors from the
init scripts would likely be useful.

Gareth


> Kind regards
> Torsten
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to puppet-users...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/cf7b27ec-5fe2-48e4-a329-aa23227343dc%40googlegroups.com.

Torsten Kleiber

unread,
Apr 8, 2016, 5:44:43 PM4/8/16
to Puppet Users
Have changed now back to puppet-docker_platform a restrict to docker 1.9. Now all works fine.
Reply all
Reply to author
Forward
0 new messages