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