Browse Source

Update Configuring and running Docker article

Signed-off-by: Ankush Agarwal <ankushagarwal11@gmail.com>
Ankush Agarwal 10 years ago
parent
commit
9bfe6f0d24
1 changed files with 186 additions and 46 deletions
  1. 186 46
      docs/sources/articles/configuring.md

+ 186 - 46
docs/sources/articles/configuring.md

@@ -1,54 +1,74 @@
-page_title: Configuring Docker
-page_description: Configuring the Docker daemon on various distributions
-page_keywords: docker, daemon, configuration
+page_title: Configuring and running Docker
+page_description: Configuring and running the Docker daemon on various distributions
+page_keywords: docker, daemon, configuration, running, process managers
 
-# Configuring Docker on various distributions
+# Configuring and running Docker on various distributions
 
-After successfully installing Docker, the `docker` daemon runs with it's default
-configuration. You can configure the `docker` daemon by passing configuration
-flags to it directly when you start it.  
+After successfully installing Docker, the `docker` daemon runs with its default
+configuration.
 
 In a production environment, system administrators typically configure the
-`docker` daemon to start and stop according to an organization's requirements.  In most
+`docker` daemon to start and stop according to an organization's requirements. In most
 cases, the system administrator configures a process manager such as `SysVinit`, `Upstart`,
 or `systemd` to manage the `docker` daemon's start and stop.
 
+### Running the docker daemon directly
+
+The `docker` daemon can be run directly using the `-d` option. By default it listens on
+the Unix socket `unix:///var/run/docker.sock`
+
+    $ docker -d
+
+    INFO[0000] +job init_networkdriver()
+    INFO[0000] +job serveapi(unix:///var/run/docker.sock)
+    INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
+    ...
+    ...
+
+### Configuring the docker daemon directly
+
+If you're running the `docker` daemon directly by running `docker -d` instead
+of using a process manager, you can append the configuration options to the `docker` run
+command directly. Just like the `-d` option, other options can be passed to the `docker`
+daemon to configure it.
+
 Some of the daemon's options are:
 
 | Flag                  | Description                                               |
 |-----------------------|-----------------------------------------------------------|
-| `-D`, `--debug=false` | Enable or disable debug mode.  By default, this is false. |
+| `-D`, `--debug=false` | Enable or disable debug mode. By default, this is false. |
 | `-H`,`--host=[]`      | Daemon socket(s) to connect to.                           |
 | `--tls=false`         | Enable or disable TLS. By default, this is false.         |
 
-The command line reference has the [complete list of daemon flags](/reference/commandline/cli/#daemon).
-
-## Direct Configuration
-
-If you're running the `docker` daemon directly by running `docker -d` instead of using a process manager,
-you can append the config options to the run command directly.
 
+Here is a an example of running the `docker` daemon with configuration options:
 
-Here is a an example of running the `docker` daemon with config options:
+    $ docker -d -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
 
-    docker -d -D --tls=false -H tcp://0.0.0.0:2375
+These options :
 
-These options : 
-
-- Enable `-D` (debug) mode 
-- Set `tls` to false
-- Listen for connections on `tcp://0.0.0.0:2375`
+- Enable `-D` (debug) mode
+- Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
+- Listen for connections on `tcp://192.168.59.3:2376`
 
+The command line reference has the [complete list of daemon flags](/reference/commandline/cli/#daemon)
+with explanations.
 
 ## Ubuntu
 
-After successfully [installing Docker for Ubuntu](/installation/ubuntulinux/), you can check the
-running status using Upstart in this way:
+As of `14.04`, Ubuntu uses Upstart as a process manager. By default, Upstart jobs
+are located in  `/etc/init` and the `docker` Upstart job can be found at `/etc/init/docker.conf`.
+
+After successfully [installing Docker for Ubuntu](/installation/ubuntulinux/),
+you can check the running status using Upstart in this way:
 
     $ sudo status docker
+
     docker start/running, process 989
 
-You can start/stop/restart `docker` using
+### Running Docker
+
+You can start/stop/restart the `docker` daemon using
 
     $ sudo start docker
 
@@ -60,39 +80,159 @@ You can start/stop/restart `docker` using
 ### Configuring Docker
 
 You configure the `docker` daemon in the `/etc/default/docker` file on your
-system.  You do this by specifying values in a `DOCKER_OPTS` variable. 
-To configure Docker options:
+system. You do this by specifying values in a `DOCKER_OPTS` variable.
 
-1. Log into your system as a user with `sudo` or `root` privileges.
+To configure Docker options:
 
-2. If you don't have one, create the `/etc/default/docker` file in your system. 
+1. Log into your host as a user with `sudo` or `root` privileges.
 
-	Depending on how you installed Docker, you may already have this file.
+2. If you don't have one, create the `/etc/default/docker` file on your host. Depending on how
+you installed Docker, you may already have this file.
 
 3. Open the file with your favorite editor.
 
-		$ sudo vi /etc/default/docker
-		
+    ```
+    $ sudo vi /etc/default/docker
+    ```
+
 4. Add a `DOCKER_OPTS` variable with the following options. These options are appended to the
 `docker` daemon's run command.
 
-	``` 
-	 DOCKER_OPTS=" --dns 8.8.8.8 --dns 8.8.4.4 -D --tls=false -H tcp://0.0.0.0:2375 "
-	```
-	
-These options : 
-
-- Set `dns` server for all containers
-- Enable `-D` (debug) mode 
-- Set `tls` to false
-- Listen for connections on `tcp://0.0.0.0:2375`
-  
+```
+    DOCKER_OPTS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
+```
+
+These options :
+
+- Enable `-D` (debug) mode
+- Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
+- Listen for connections on `tcp://192.168.59.3:2376`
+
+The command line reference has the [complete list of daemon flags](/reference/commandline/cli/#daemon)
+with explanations.
+
+
 5. Save and close the file.
 
 6. Restart the `docker` daemon.
 
- 		 $ sudo restart docker
+    ```
+    $ sudo restart docker
+    ```
+
+7. Verify that the `docker` daemon is running as specified with the `ps` command.
+
+    ```
+    $ ps aux | grep docker | grep -v grep
+    ```
+
+### Logs
+
+By default logs for Upstart jobs are located in `/var/log/upstart` and the logs for `docker` daemon
+can be located at `/var/log/upstart/docker.log`
+
+    $ tail -f /var/log/upstart/docker.log
+    INFO[0000] Loading containers: done.
+    INFO[0000] docker daemon: 1.6.0 4749651; execdriver: native-0.2; graphdriver: aufs
+    INFO[0000] +job acceptconnections()
+    INFO[0000] -job acceptconnections() = OK (0)
+    INFO[0000] Daemon has completed initialization
+
+
+## CentOS / Red Hat Enterprise Linux / Fedora
+
+As of `7.x`, CentOS and RHEL use `systemd` as the process manager. As of `21`, Fedora uses
+`systemd` as its process manager.
+
+After successfully installing Docker for [CentOS](/installation/centos/)/[Red Hat Enterprise Linux]
+(/installation/rhel/)/[Fedora](/installation/fedora), you can check the running status in this way:
+
+    $ sudo systemctl status docker
+
+### Running Docker
+
+You can start/stop/restart the `docker` daemon using
+
+    $ sudo systemctl start docker
+
+    $ sudo systemctl stop docker
+
+    $ sudo systemctl restart docker
+
+If you want Docker to start at boot, you should also:
+
+    $ sudo systemctl enable docker
+
+### Configuring Docker
+
+You configure the `docker` daemon in the `/etc/sysconfig/docker` file on your
+host. You do this by specifying values in a variable. For CentOS 7.x and RHEL 7.x, the name
+of the variable is `OPTIONS` and for CentOS 6.x and RHEL 6.x, the name of the variable is
+`other_args`. For this section, we will use CentOS 7.x as an example to configure the `docker`
+daemon.
+
+By default, systemd services are located either in `/etc/systemd/service`, `/lib/systemd/system`
+or `/usr/lib/systemd/system`. The `docker.service` file can be found in either of these three
+directories depending on your host.
+
+To configure Docker options:
+
+1. Log into your host as a user with `sudo` or `root` privileges.
+
+2. If you don't have one, create the `/etc/sysconfig/docker` file on your host. Depending on how
+you installed Docker, you may already have this file.
+
+3. Open the file with your favorite editor.
+
+    ```
+    $ sudo vi /etc/sysconfig/docker
+    ```
+
+4. Add a `OPTIONS` variable with the following options. These options are appended to the
+command that starts the `docker` daemon.
+
+```
+    OPTIONS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
+```
+
+These options :
+
+- Enable `-D` (debug) mode
+- Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
+- Listen for connections on `tcp://192.168.59.3:2376`
+
+The command line reference has the [complete list of daemon flags](/reference/commandline/cli/#daemon)
+with explanations.
+
+5. Save and close the file.
+
+6. Restart the `docker` daemon.
+
+    ```
+    $ sudo service docker restart
+    ```
+
+7. Verify that the `docker` daemon is running as specified with the `ps` command.
+
+    ```
+    $ ps aux | grep docker | grep -v grep
+    ```
+
+### Logs
+
+systemd has its own logging system called the journal. The logs for the `docker` daemon can
+be viewed using `journalctl -u docker`
 
-7. Verify that the `docker` daemon is running as specified wit the `ps` command.
+    $ sudo journalctl -u docker
+    May 06 00:22:05 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
+    May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
+    May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job init_networkdriver()"
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job init_networkdriver() = OK (0)"
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: start."
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: done."
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="docker daemon: 1.5.0-dev fc0329b/1.5.0; execdriver: native-0.2; graphdriver: devicemapper"
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job acceptconnections()"
+    May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job acceptconnections() = OK (0)"
 
-		$ ps aux | grep docker | grep -v grep
+_Note: Using and configuring journal is an advanced topic and is beyond the scope of this article._