Charlie,

You can use a systemd drop-in file to override the distro systemd unit file
in /usr/lib.

If you're working on a new provisioner, like the one for CoreOS, it looks
like you could use 'engineConfigTmpl' to manage the drop-in.  Those look
better formed, for one, and it would provide you more control over trying
to work around something that's stuffing new lines into ENV variables.

Cheers,
- Matt M

On Tue, Mar 15, 2016 at 12:20 PM, Charlie Drage <cdr...@redhat.com> wrote:

> (this is for Fedora 22 and above of Atomic Host and CentOS 7)
>
> Modifying params within /etc/sysconfig/docker to params with new lines
> cause the Docker daemon to break.
>
> For example:
>
> SystemD file:
>
> [Unit]
> Description=Docker Application Container Engine
> Documentation=http://docs.docker.com
> After=network.target
> Wants=docker-storage-setup.service
>
> [Service]
> Type=notify
> EnvironmentFile=-/etc/sysconfig/docker
> EnvironmentFile=-/etc/sysconfig/docker-storage
> EnvironmentFile=-/etc/sysconfig/docker-network
> Environment=GOTRACEBACK=crash
> ExecStart=/usr/bin/docker -d $DOCKER_OPTIONS
> LimitNOFILE=1048576
> LimitNPROC=1048576
> LimitCORE=infinity
> MountFlags=slave
>
> [Install]
> WantedBy=multi-user.target
>
> /etc/sysconfig/docker file:
> DOCKER_OPTIONS='-H tcp://0.0.0.0:2376
> -H unix:///var/run/docker.sock
> --storage-driver overlay
> --tlsverify
> --tlscacert /etc/docker/ca.pem
> --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem
> --label provider=generic'
>
>
> SystemD status:
> [centos@cloud ~]$ sudo systemctl status docker
> docker.service - Docker Application Container Engine
>    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
>   Drop-In: /usr/lib/systemd/system/docker.service.d
>            └─flannel.conf
>    Active: failed (Result: exit-code) since Tue 2016-03-15 16:05:16 UTC;
> 11s ago
>      Docs: http://docs.docker.com
>   Process: 4251 ExecStart=/usr/bin/docker -d $DOCKER_OPTIONS (code=exited,
> status=1/FAILURE)
>  Main PID: 4251 (code=exited, status=1/FAILURE)
>
> Mar 15 16:05:16 test systemd[1]: Starting Docker Application Container
> Engine...
> Mar 15 16:05:16 test docker[4251]: time="2016-03-15T16:05:16.467507082Z"
> level=info msg="Listening for HTTP on unix (....sock)"
> Mar 15 16:05:16 test docker[4251]: time="2016-03-15T16:05:16.502458296Z"
> level=error msg="WARNING: No --storage-opt d...on use"
> Mar 15 16:05:16 test docker[4251]: time="2016-03-15T16:05:16.607528181Z"
> level=fatal msg="Error starting daemon: erro...IVER>)"
> Mar 15 16:05:16 test systemd[1]: docker.service: main process exited,
> code=exited, status=1/FAILURE
> Mar 15 16:05:16 test systemd[1]: Failed to start Docker Application
> Container Engine.
> Mar 15 16:05:16 test systemd[1]: Unit docker.service entered failed state.
> Hint: Some lines were ellipsized, use -l to show in full.
>
>
> Now... Using:
>
> DOCKER_OPTIONS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
> --storage-driver overlay --tlsverify -tlscacert /etc/docker/ca.pem
> --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem
> --label provider=generic'
>
> Works perfectly fine.
>
> I want to bring this to atomic-devel's attention since I don't know if
> there is something that we can improve on our end (put env variables in
> curly braces when specifying them in systemd? ex. ${OPTIONS}). Since
> /usr/lib/ is managed by rpm-ostree.
>
> The reason for bringing this up is since I'm working on a generic driver
> for atomic hosts upstream on docker-machine. Seems that the generic driver
> they have for rhel-based OS' over there uses this type of param output :)
>
> Another thing to note is that docker-machine and docker's recommended env
> variable is DOCKER_OPTS rather than what we have (I think $OPTIONS within
> systemd for our first line?)
>
> --
>
> Charlie Drage
> Red Hat - OSAS Team / Project Atomic
> 4096R / 0x9B3B446C
> http://pgp.mit.edu/pks/lookup?op=get&search=0x622CDF119B3B446C
>
>

Reply via email to