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