github.com/endocode/docker@v1.4.2-0.20160113120958-46eb4700391e/docs/installation/ubuntulinux.md (about)

     1  <!--[metadata]>
     2  +++
     3  title = "Installation on Ubuntu "
     4  description = "Instructions for installing Docker on Ubuntu. "
     5  keywords = ["Docker, Docker documentation, requirements, apt, installation,  ubuntu"]
     6  [menu.main]
     7  parent = "smn_linux"
     8  weight = -6
     9  +++
    10  <![end-metadata]-->
    11  
    12  # Ubuntu
    13  
    14  Docker is supported on these Ubuntu operating systems:
    15  
    16  - Ubuntu Wily 15.10
    17  - Ubuntu Trusty 14.04 (LTS)
    18  - Ubuntu Precise 12.04 (LTS)
    19  
    20  This page instructs you to install using Docker-managed release packages and
    21  installation mechanisms. Using these packages ensures you get the latest release
    22  of Docker. If you wish to install using Ubuntu-managed packages, consult your
    23  Ubuntu documentation.
    24  
    25  >**Note**: Ubuntu Utopic 14.10 and 15.04 exist in Docker's `apt` repository but
    26  > are no longer officially supported.
    27  
    28  ## Prerequisites
    29  
    30  Docker requires a 64-bit installation regardless of your Ubuntu version.
    31  Additionally, your kernel must be 3.10 at minimum. The latest 3.10 minor version
    32  or a newer maintained version are also acceptable.
    33  
    34  Kernels older than 3.10 lack some of the features required to run Docker
    35  containers. These older versions are known to have bugs which cause data loss
    36  and frequently panic under certain conditions.
    37  
    38  To check your current kernel version, open a terminal and use `uname -r` to
    39  display your kernel version:
    40  
    41      $ uname -r
    42      3.11.0-15-generic
    43  
    44  >**Note**: If you previously installed Docker using `apt`, make sure you update
    45  your `apt` sources to the new Docker repository.
    46  
    47  ### Update your apt sources
    48  
    49  Docker's `apt` repository contains Docker 1.7.1 and higher. To set `apt` to use
    50  packages from the new repository:
    51  
    52  1. If you haven't already done so, log into your Ubuntu instance as a privileged user.
    53  
    54  2. Open a terminal window.
    55  
    56  3. Add the new `gpg` key.
    57  
    58          $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    59  
    60  4. Open the `/etc/apt/sources.list.d/docker.list` file in your favorite editor.
    61  
    62      If the file doesn't exist, create it.
    63  
    64  5. Remove any existing entries.
    65  
    66  6. Add an entry for your Ubuntu operating system.
    67  
    68      The possible entries are:
    69  
    70      - On Ubuntu Precise 12.04 (LTS)
    71  
    72              deb https://apt.dockerproject.org/repo ubuntu-precise main
    73  
    74      - On Ubuntu Trusty 14.04 (LTS)
    75  
    76              deb https://apt.dockerproject.org/repo ubuntu-trusty main
    77  
    78      - Ubuntu Wily 15.10
    79  
    80              deb https://apt.dockerproject.org/repo ubuntu-wily main
    81  
    82      > **Note**: Docker does not provide packages for all architectures. To install docker on
    83      > a multi-architecture system, add an `[arch=...]` clause to the entry. Refer to the
    84      > [Debian Multiarch wiki](https://wiki.debian.org/Multiarch/HOWTO#Setting_up_apt_sources)
    85      > for details.
    86  
    87  7. Save and close the `/etc/apt/sources.list.d/docker.list` file.
    88  
    89  8. Update the `apt` package index.
    90  
    91          $ apt-get update
    92  
    93  9. Purge the old repo if it exists.
    94  
    95          $ apt-get purge lxc-docker
    96  
    97  10. Verify that `apt` is pulling from the right repository.
    98  
    99          $ apt-cache policy docker-engine
   100  
   101      From now on when you run `apt-get upgrade`, `apt` pulls from the new repository.  
   102  
   103  ### Prerequisites by Ubuntu Version
   104  
   105  - Ubuntu Wily 15.10
   106  - Ubuntu Vivid 15.04
   107  - Ubuntu Trusty 14.04 (LTS)
   108  
   109  For Ubuntu Trusty, Vivid, and Wily, it's recommended to install the
   110  `linux-image-extra` kernel package. The `linux-image-extra` package
   111  allows you use the `aufs` storage driver.
   112  
   113  To install the `linux-image-extra` package for your kernel version:
   114  
   115  1. Open a terminal on your Ubuntu host.
   116  
   117  2. Update your package manager.
   118  
   119          $ sudo apt-get update
   120  
   121  3. Install the recommended package.
   122  
   123          $ sudo apt-get install linux-image-extra-$(uname -r)
   124  
   125  4. Go ahead and install Docker.
   126  
   127  If you are installing on Ubuntu 14.04 or 12.04, `apparmor` is required.  You can install it using: `apt-get install apparmor`
   128  
   129  #### Ubuntu Precise 12.04 (LTS)
   130  
   131  For Ubuntu Precise, Docker requires the 3.13 kernel version. If your kernel
   132  version is older than 3.13, you must upgrade it. Refer to this table to see
   133  which packages are required for your environment:
   134  
   135  <style type="text/css"> .tg  {border-collapse:collapse;border-spacing:0;} .tg
   136  td{font-size:14px;padding:10px
   137  5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
   138  .tg-031{width:275px;font-family:monospace} </style> <table class="tg"> <tr> <td
   139  class="tg-031">linux-image-generic-lts-trusty</td> <td class="tg-031e">Generic
   140  Linux kernel image. This kernel has AUFS built in. This is required to run
   141  Docker.</td> </tr> <tr> <td class="tg-031">linux-headers-generic-lts-trusty</td>
   142  <td class="tg-031e">Allows packages such as ZFS and VirtualBox guest additions
   143  which depend on them. If you didn't install the headers for your existing
   144  kernel, then you can skip these headers for the"trusty" kernel. If you're
   145  unsure, you should include this package for safety.</td> </tr> <tr> <td
   146  class="tg-031">xserver-xorg-lts-trusty</td> <td class="tg-031e"
   147  rowspan="2">Optional in non-graphical environments without Unity/Xorg.
   148  <b>Required</b> when running Docker on machine with a graphical environment.
   149  <br>
   150  <br>To learn more about the reasons for these packages, read the installation
   151  instructions for backported kernels, specifically the <a
   152  href="https://wiki.ubuntu.com/Kernel/LTSEnablementStack" target="_blank">LTS
   153  Enablement Stack</a> &mdash; refer to note 5 under each version.
   154  </td> </tr>
   155  <tr> <td class="tg-031">libgl1-mesa-glx-lts-trusty</td> </tr> </table> &nbsp;
   156  
   157  To upgrade your kernel and install the additional packages, do the following:
   158  
   159  1. Open a terminal on your Ubuntu host.
   160  
   161  2. Update your package manager.
   162  
   163          $ sudo apt-get update
   164  
   165  3. Install both the required and optional packages.
   166  
   167          $ sudo apt-get install linux-image-generic-lts-trusty
   168  
   169      Depending on your environment, you may install more as described in the preceding table.
   170  
   171  4. Reboot your host.
   172  
   173          $ sudo reboot
   174  
   175  5. After your system reboots, go ahead and install Docker.
   176  
   177  ## Install
   178  
   179  Make sure you have installed the prerequisites for your Ubuntu version.
   180  
   181  Then,
   182  install Docker using the following:
   183  
   184  1. Log into your Ubuntu installation as a user with `sudo` privileges.
   185  
   186  2. Update your `apt` package index.
   187  
   188          $ sudo apt-get update
   189  
   190  3. Install Docker.
   191  
   192          $ sudo apt-get install docker-engine
   193  
   194  4. Start the `docker` daemon.
   195  
   196          $ sudo service docker start
   197  
   198  5. Verify `docker` is installed correctly.
   199  
   200          $ sudo docker run hello-world
   201  
   202      This command downloads a test image and runs it in a container. When the
   203      container runs, it prints an informational message. Then, it exits.
   204  
   205  ## Optional configurations
   206  
   207  This section contains optional procedures for configuring your Ubuntu to work
   208  better with Docker.
   209  
   210  * [Create a docker group](#create-a-docker-group)
   211  * [Adjust memory and swap accounting](#adjust-memory-and-swap-accounting)
   212  * [Enable UFW forwarding](#enable-ufw-forwarding)
   213  * [Configure a DNS server for use by Docker](#configure-a-dns-server-for-use-by-docker)
   214  * [Configure Docker to start on boot](#configure-docker-to-start-on-boot)
   215  
   216  ### Create a Docker group		
   217  
   218  The `docker` daemon binds to a Unix socket instead of a TCP port. By default
   219  that Unix socket is owned by the user `root` and other users can access it with
   220  `sudo`. For this reason, `docker` daemon always runs as the `root` user.
   221  
   222  To avoid having to use `sudo` when you use the `docker` command, create a Unix
   223  group called `docker` and add users to it. When the `docker` daemon starts, it
   224  makes the ownership of the Unix socket read/writable by the `docker` group.
   225  
   226  >**Warning**: The `docker` group is equivalent to the `root` user; For details
   227  >on how this impacts security in your system, see [*Docker Daemon Attack
   228  >Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
   229  
   230  To create the `docker` group and add your user:
   231  
   232  1. Log into Ubuntu as a user with `sudo` privileges.
   233  
   234      This procedure assumes you log in as the `ubuntu` user.
   235  
   236  3. Create the `docker` group and add your user.
   237  
   238          $ sudo usermod -aG docker ubuntu
   239  
   240  3. Log out and log back in.
   241  
   242      This ensures your user is running with the correct permissions.
   243  
   244  4. Verify your work by running `docker` without `sudo`.
   245  
   246          $ docker run hello-world
   247  
   248  	If this fails with a message similar to this:
   249  
   250  		Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
   251  
   252  	Check that the `DOCKER_HOST` environment variable is not set for your shell.
   253  	If it is, unset it.
   254  
   255  ### Adjust memory and swap accounting
   256  
   257  When users run Docker, they may see these messages when working with an image:
   258  
   259      WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
   260      kernel does not support swap limit capabilities. Limitation discarded.
   261  
   262  To prevent these messages, enable memory and swap accounting on your
   263  system.  Enabling memory and swap accounting does induce both a memory
   264  overhead and a performance degradation even when Docker is not in
   265  use. The memory overhead is about 1% of the total available
   266  memory. The performance degradation is roughly 10%.
   267  
   268  To enable memory and swap on system using GNU GRUB (GNU GRand Unified
   269  Bootloader), do the following:
   270  
   271  1. Log into Ubuntu as a user with `sudo` privileges.
   272  
   273  2. Edit the `/etc/default/grub` file.
   274  
   275  3. Set the `GRUB_CMDLINE_LINUX` value as follows:
   276  
   277          GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
   278  
   279  4. Save and close the file.
   280  
   281  5. Update GRUB.
   282  
   283          $ sudo update-grub
   284  
   285  6. Reboot your system.
   286  
   287  
   288  ### Enable UFW forwarding
   289  
   290  If you use [UFW (Uncomplicated Firewall)](https://help.ubuntu.com/community/UFW)
   291  on the same host as you run Docker, you'll need to do additional configuration.
   292  Docker uses a bridge to manage container networking. By default, UFW drops all
   293  forwarding traffic. As a result, for Docker to run when UFW is
   294  enabled, you must set UFW's forwarding policy appropriately.
   295  
   296  Also, UFW's default set of rules denies all incoming traffic. If you want to
   297  reach your containers from another host allow incoming connections on the Docker
   298  port. The Docker port defaults to `2376` if TLS is enabled or `2375` when it is
   299  not. If TLS is not enabled, communication is unencrypted. By default, Docker
   300  runs without TLS enabled.
   301  
   302  To configure UFW and allow incoming connections on the Docker port:
   303  
   304  1. Log into Ubuntu as a user with `sudo` privileges.
   305  
   306  2. Verify that UFW is installed and enabled.
   307  
   308          $ sudo ufw status
   309  
   310  3. Open the `/etc/default/ufw` file for editing.
   311  
   312          $ sudo nano /etc/default/ufw
   313  
   314  4. Set the `DEFAULT_FORWARD_POLICY` policy to:
   315  
   316          DEFAULT_FORWARD_POLICY="ACCEPT"
   317  
   318  5. Save and close the file.
   319  
   320  6. Reload UFW to use the new setting.
   321  
   322          $ sudo ufw reload
   323  
   324  7. Allow incoming connections on the Docker port.
   325  
   326          $ sudo ufw allow 2375/tcp
   327  
   328  ### Configure a DNS server for use by Docker
   329  
   330  Systems that run Ubuntu or an Ubuntu derivative on the desktop typically use
   331  `127.0.0.1` as the default `nameserver` in `/etc/resolv.conf` file. The
   332  NetworkManager also sets up `dnsmasq` to use the real DNS servers of the
   333  connection and sets up `nameserver 127.0.0.1` in /`etc/resolv.conf`.
   334  
   335  When starting containers on desktop machines with these configurations, Docker
   336  users see this warning:
   337  
   338      WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
   339      can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
   340  
   341  The warning occurs because Docker containers can't use the local DNS nameserver.
   342  Instead, Docker defaults to using an external nameserver.
   343  
   344  To avoid this warning, you can specify a DNS server for use by Docker
   345  containers. Or, you can disable `dnsmasq` in NetworkManager. Though, disabling
   346  `dnsmasq` might make DNS resolution slower on some networks.
   347  
   348  The instructions below describe how to configure the Docker daemon
   349  running on Ubuntu 14.10 or below. Ubuntu 15.04 and above use `systemd`
   350  as the boot and service manager. Refer to [control and configure Docker
   351  with systemd](../articles/systemd.md#custom-docker-daemon-options) to
   352  configure a daemon controlled by `systemd`.
   353  
   354  To specify a DNS server for use by Docker:
   355  
   356  1. Log into Ubuntu as a user with `sudo` privileges.
   357  
   358  2. Open the `/etc/default/docker` file for editing.
   359  
   360          $ sudo nano /etc/default/docker
   361  
   362  3. Add a setting for Docker.
   363  
   364          DOCKER_OPTS="--dns 8.8.8.8"
   365  
   366      Replace `8.8.8.8` with a local DNS server such as `192.168.1.1`. You can also
   367      specify multiple DNS servers. Separated them with spaces, for example:
   368  
   369          --dns 8.8.8.8 --dns 192.168.1.1
   370  
   371      >**Warning**: If you're doing this on a laptop which connects to various
   372      >networks, make sure to choose a public DNS server.
   373  
   374  4. Save and close the file.
   375  
   376  5. Restart the Docker daemon.
   377  
   378          $ sudo restart docker
   379  
   380  
   381  &nbsp;
   382  &nbsp;
   383  
   384  **Or, as an alternative to the previous procedure,** disable `dnsmasq` in
   385  NetworkManager (this might slow your network).
   386  
   387  1. Open the `/etc/NetworkManager/NetworkManager.conf` file for editing.
   388  
   389          $ sudo nano /etc/NetworkManager/NetworkManager.conf
   390  
   391  2. Comment out the `dns=dsnmasq` line:
   392  
   393          dns=dnsmasq
   394  
   395  3. Save and close the file.
   396  
   397  4. Restart both the NetworkManager and Docker.
   398  
   399          $ sudo restart network-manager
   400          $ sudo restart docker
   401  
   402  ### Configure Docker to start on boot
   403  
   404  Ubuntu uses `systemd` as its boot and service manager `15.04` onwards and `upstart`
   405  for versions `14.10` and below.
   406  
   407  For `15.04` and up, to configure the `docker` daemon to start on boot, run
   408  
   409      $ sudo systemctl enable docker
   410  
   411  For `14.10` and below the above installation method automatically configures `upstart`
   412  to start the docker daemon on boot
   413  
   414  ## Upgrade Docker
   415  
   416  To install the latest version of Docker with `apt-get`:
   417  
   418      $ apt-get upgrade docker-engine
   419  
   420  ## Uninstallation
   421  
   422  To uninstall the Docker package:
   423  
   424      $ sudo apt-get purge docker-engine
   425  
   426  To uninstall the Docker package and dependencies that are no longer needed:
   427  
   428      $ sudo apt-get autoremove --purge docker-engine
   429  
   430  The above commands will not remove images, containers, volumes, or user created
   431  configuration files on your host. If you wish to delete all images, containers,
   432  and volumes run the following command:
   433  
   434      $ rm -rf /var/lib/docker
   435  
   436  You must delete the user created configuration files manually.