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