github.com/circular-dark/docker@v1.7.0/docs/articles/systemd.md (about) 1 <!--[metadata]> 2 +++ 3 title = "Control and configure Docker with systemd" 4 description = "Controlling and configuring Docker using systemd" 5 keywords = ["docker, daemon, systemd, configuration"] 6 [menu.main] 7 parent = "smn_administrate" 8 weight = 7 9 +++ 10 <![end-metadata]--> 11 12 # Control and configure Docker with systemd 13 14 Many Linux distributions use systemd to start the Docker daemon. This document 15 shows a few examples of how to customise Docker's settings. 16 17 ## Starting the Docker daemon 18 19 Once Docker is installed, you will need to start the Docker daemon. 20 21 $ sudo systemctl start docker 22 # or on older distributions, you may need to use 23 $ sudo service docker start 24 25 If you want Docker to start at boot, you should also: 26 27 $ sudo systemctl enable docker 28 # or on older distributions, you may need to use 29 $ sudo chkconfig docker on 30 31 ## Custom Docker daemon options 32 33 There are a number of ways to configure the daemon flags and environment variables 34 for your Docker daemon. 35 36 If the `docker.service` file is set to use an `EnvironmentFile` 37 (often pointing to `/etc/sysconfig/docker`) then you can modify the 38 referenced file. 39 40 Check if the `docker.service` uses an `EnvironmentFile`: 41 42 $ sudo systemctl show docker | grep EnvironmentFile 43 EnvironmentFile=-/etc/sysconfig/docker (ignore_errors=yes) 44 45 Alternatively, find out where the service file is located, and look for the 46 property: 47 48 $ sudo systemctl status docker | grep Loaded 49 Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) 50 $ sudo grep EnvironmentFile /usr/lib/systemd/system/docker.service 51 EnvironmentFile=-/etc/sysconfig/docker 52 53 You can customize the Docker daemon options using override files as explained in the 54 [HTTP Proxy example](#http-proxy) below. The files located in `/usr/lib/systemd/system` 55 or `/lib/systemd/system` contain the default options and should not be edited. 56 57 ### Runtime directory and storage driver 58 59 You may want to control the disk space used for Docker images, containers 60 and volumes by moving it to a separate partition. 61 62 In this example, we'll assume that your `docker.service` file looks something like: 63 64 [Unit] 65 Description=Docker Application Container Engine 66 Documentation=https://docs.docker.com 67 After=network.target docker.socket 68 Requires=docker.socket 69 70 [Service] 71 Type=notify 72 EnvironmentFile=-/etc/sysconfig/docker 73 ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS 74 LimitNOFILE=1048576 75 LimitNPROC=1048576 76 77 [Install] 78 Also=docker.socket 79 80 This will allow us to add extra flags to the `/etc/sysconfig/docker` file by 81 setting `OPTIONS`: 82 83 OPTIONS="--graph /mnt/docker-data --storage-driver btrfs" 84 85 You can also set other environment variables in this file, for example, the 86 `HTTP_PROXY` environment variables described below. 87 88 ### HTTP proxy 89 90 This example overrides the default `docker.service` file. 91 92 If you are behind a HTTP proxy server, for example in corporate settings, 93 you will need to add this configuration in the Docker systemd service file. 94 95 First, create a systemd drop-in directory for the docker service: 96 97 mkdir /etc/systemd/system/docker.service.d 98 99 Now create a file called `/etc/systemd/system/docker.service.d/http-proxy.conf` 100 that adds the `HTTP_PROXY` environment variable: 101 102 [Service] 103 Environment="HTTP_PROXY=http://proxy.example.com:80/" 104 105 If you have internal Docker registries that you need to contact without 106 proxying you can specify them via the `NO_PROXY` environment variable: 107 108 Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com" 109 110 Flush changes: 111 112 $ sudo systemctl daemon-reload 113 114 Verify that the configuration has been loaded: 115 116 $ sudo systemctl show docker --property Environment 117 Environment=HTTP_PROXY=http://proxy.example.com:80/ 118 119 Restart Docker: 120 121 $ sudo systemctl restart docker 122 123 ## Manually creating the systemd unit files 124 125 When installing the binary without a package, you may want 126 to integrate Docker with systemd. For this, simply install the two unit files 127 (service and socket) from [the github 128 repository](https://github.com/docker/docker/tree/master/contrib/init/systemd) 129 to `/etc/systemd/system`. 130 131