github.com/ncdc/docker@v0.10.1-0.20160129113957-6c6729ef5b74/docs/installation/linux/ubuntulinux.md (about)

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