github.com/wulonghui/docker@v1.8.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, virtualbox, installation,  ubuntu"]
     6  [menu.main]
     7  parent = "smn_linux"
     8  +++
     9  <![end-metadata]-->
    10  
    11  # Ubuntu
    12  
    13  Docker is supported on these Ubuntu operating systems:
    14  
    15  - Ubuntu Vivid 15.04 
    16  - Ubuntu Trusty 14.04 (LTS) 
    17  - Ubuntu Precise 12.04 (LTS) 
    18  - Ubuntu Saucy 13.10
    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  ## Prerequisites
    26  
    27  Docker requires a 64-bit installation regardless of your Ubuntu version.
    28  Additionally, your kernel must be 3.10 at minimum. The latest 3.10 minor version
    29  or a newer maintained version are also acceptable.
    30  
    31  Kernels older than 3.10 lack some of the features required to run Docker
    32  containers. These older versions are known to have bugs which cause data loss
    33  and frequently panic under certain conditions.
    34  
    35  To check your current kernel version, open a terminal and use `uname -r` to display
    36  your kernel version:
    37  
    38      $ uname -r 
    39      3.11.0-15-generic
    40  
    41  >**Caution** Some Ubuntu OS versions **require a version higher than 3.10** to
    42  >run Docker, see the prerequisites on this page that apply to your Ubuntu
    43  >version.
    44  
    45  
    46  ### For Vivid 15.04
    47  
    48  There are no prerequisites for this version.
    49  
    50  ### For Trusty 14.04
    51  
    52  There are no prerequisites for this version.
    53  
    54  ### For Precise 12.04 (LTS)
    55  
    56  For Ubuntu Precise, Docker requires the 3.13 kernel version. If your kernel
    57  version is older than 3.13, you must upgrade it. Refer to this table to see
    58  which packages are required for your environment:
    59  
    60  <style type="text/css"> .tg  {border-collapse:collapse;border-spacing:0;} .tg
    61  td{font-size:14px;padding:10px
    62  5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
    63  .tg-031{width:275px;font-family:monospace} </style> <table class="tg"> <tr> <td
    64  class="tg-031">linux-image-generic-lts-trusty</td> <td class="tg-031e">Generic
    65  Linux kernel image. This kernel has AUFS built in. This is required to run
    66  Docker.</td> </tr> <tr> <td class="tg-031">linux-headers-generic-lts-trusty</td>
    67  <td class="tg-031e">Allows packages such as ZFS and VirtualBox guest additions
    68  which depend on them. If you didn't install the headers for your existing
    69  kernel, then you can skip these headers for the"trusty" kernel. If you're
    70  unsure, you should include this package for safety.</td> </tr> <tr> <td
    71  class="tg-031">xserver-xorg-lts-trusty</td> <td class="tg-031e"
    72  rowspan="2">Optional in non-graphical environments without Unity/Xorg.
    73  <i>Required</i> when running Docker on machine with a graphical environment.
    74  
    75  <p>To learn more about the reasons for these packages, read the installation
    76  instructions for backported kernels, specifically the <a
    77  href="https://wiki.ubuntu.com/Kernel/LTSEnablementStack" target="_blank">LTS
    78  Enablement Stack</a> &mdash; refer to note 5 under each version.</p></td> </tr>
    79  <tr> <td class="tg-031">libgl1-mesa-glx-lts-trusty</td> </tr> </table> &nbsp;
    80  
    81  To upgrade your kernel and install the additional packages, do the following:
    82  
    83  1. Open a terminal on your Ubuntu host.
    84  
    85  2. Update your package manager.
    86  
    87          $ sudo apt-get update
    88  
    89  3. Install both the required and optional packages.
    90  
    91          $ sudo apt-get install linux-image-generic-lts-trusty
    92  
    93      Depending on your environment, you may install more as described in the preceding table.
    94  
    95  4. Reboot your host.
    96  
    97          $ sudo reboot
    98  
    99  5. After your system reboots, go ahead and [install Docker](#installing-docker-on-ubuntu).
   100  
   101  
   102  ### For Saucy 13.10 (64 bit)
   103  
   104  Docker uses AUFS as the default storage backend. If you don't have this
   105  prerequisite installed, Docker's installation process adds it.
   106  
   107  ## Installation
   108  
   109  Make sure you have installed the prerequisites for your Ubuntu version. Then,
   110  install Docker using the following:
   111  
   112  1. Log into your Ubuntu installation as a user with `sudo` privileges.
   113  
   114  2. Verify that you have `wget` installed.
   115  
   116          $ which wget
   117  
   118      If `wget` isn't installed, install it after updating your manager:
   119  
   120          $ sudo apt-get update
   121          $ sudo apt-get install wget
   122  
   123  3. Get the latest Docker package.
   124  
   125          $ wget -qO- https://get.docker.com/ | sh
   126  
   127      The system prompts you for your `sudo` password. Then, it downloads and
   128      installs Docker and its dependencies.
   129  
   130  >**Note**: If your company is behind a filtering proxy, you may find that the
   131  >`apt-key`
   132  >command fails for the Docker repo during installation. To work around this,
   133  >add the key directly using the following:
   134  >
   135  >       $ wget -qO- https://get.docker.com/gpg | sudo apt-key add -
   136  
   137  4. Verify `docker` is installed correctly.
   138  
   139          $ sudo docker run hello-world
   140  
   141      This command downloads a test image and runs it in a container.
   142  
   143  ## Optional configurations for Docker on Ubuntu 
   144  
   145  This section contains optional procedures for configuring your Ubuntu to work
   146  better with Docker.
   147  
   148  * [Create a docker group](#create-a-docker-group) 
   149  * [Adjust memory and swap accounting](#adjust-memory-and-swap-accounting) 
   150  * [Enable UFW forwarding](#enable-ufw-forwarding) 
   151  * [Configure a DNS server for use by Docker](#configure-a-dns-server-for-docker)
   152  * [Configure Docker to start on boot](#configure-docker-to-start-on-boot)
   153  
   154  ### Create a Docker group		
   155  
   156  The `docker` daemon binds to a Unix socket instead of a TCP port. By default
   157  that Unix socket is owned by the user `root` and other users can access it with
   158  `sudo`. For this reason, `docker` daemon always runs as the `root` user.
   159  
   160  To avoid having to use `sudo` when you use the `docker` command, create a Unix
   161  group called `docker` and add users to it. When the `docker` daemon starts, it
   162  makes the ownership of the Unix socket read/writable by the `docker` group.
   163  
   164  >**Warning**: The `docker` group is equivalent to the `root` user; For details
   165  >on how this impacts security in your system, see [*Docker Daemon Attack
   166  >Surface*](/articles/security/#docker-daemon-attack-surface) for details.
   167  
   168  To create the `docker` group and add your user:
   169  
   170  1. Log into Ubuntu as a user with `sudo` privileges.
   171  
   172      This procedure assumes you log in as the `ubuntu` user.
   173  
   174  3. Create the `docker` group and add your user.
   175  
   176          $ sudo usermod -aG docker ubuntu
   177  
   178  3. Log out and log back in.
   179  
   180      This ensures your user is running with the correct permissions.
   181  
   182  4. Verify your work by running `docker` without `sudo`.
   183  
   184          $ docker run hello-world
   185  
   186  	If this fails with a message similar to this:
   187  
   188  		Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
   189  
   190  	Check that the `DOCKER_HOST` environment variable is not set for your shell.
   191  	If it is, unset it.
   192  
   193  ### Adjust memory and swap accounting
   194  
   195  When users run Docker, they may see these messages when working with an image:
   196  
   197      WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
   198      kernel does not support swap limit capabilities. Limitation discarded.
   199  
   200  To prevent these messages, enable memory and swap accounting on your system. To
   201  enable these on system using GNU GRUB (GNU GRand Unified Bootloader), do the
   202  following.
   203  
   204  1. Log into Ubuntu as a user with `sudo` privileges.
   205  
   206  2. Edit the `/etc/default/grub` file.
   207  
   208  3. Set the `GRUB_CMDLINE_LINUX` value as follows:
   209  
   210          GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
   211  
   212  4. Save and close the file.
   213  
   214  5. Update GRUB.
   215  
   216          $ sudo update-grub
   217  
   218  6. Reboot your system.
   219  
   220  
   221  ### Enable UFW forwarding
   222  
   223  If you use [UFW (Uncomplicated Firewall)](https://help.ubuntu.com/community/UFW)
   224  on the same host as you run Docker, you'll need to do additional configuration.
   225  Docker uses a bridge to manage container networking. By default, UFW drops all
   226  forwarding traffic. As a result, for Docker to run when UFW is
   227  enabled, you must set UFW's forwarding policy appropriately.
   228  
   229  Also, UFW's default set of rules denies all incoming traffic. If you want to be able
   230  to reach your containers from another host then you should also allow incoming
   231  connections on the Docker port (default `2375`).
   232  
   233  To configure UFW and allow incoming connections on the Docker port:
   234  
   235  1. Log into Ubuntu as a user with `sudo` privileges.
   236  
   237  2. Verify that UFW is installed and enabled.
   238  
   239          $ sudo ufw status
   240  
   241  3. Open the `/etc/default/ufw` file for editing.
   242  
   243          $ sudo nano /etc/default/ufw
   244  
   245  4. Set the `DEFAULT_FORWARD_POLICY` policy to:
   246  
   247          DEFAULT_FORWARD_POLICY="ACCEPT"
   248  
   249  5. Save and close the file.
   250  
   251  6. Reload UFW to use the new setting.
   252  
   253          $ sudo ufw reload
   254  
   255  7. Allow incoming connections on the Docker port.
   256  
   257          $ sudo ufw allow 2375/tcp
   258  
   259  ### Configure a DNS server for use by Docker
   260  
   261  Systems that run Ubuntu or an Ubuntu derivative on the desktop typically use
   262  `127.0.0.1` as the default `nameserver` in `/etc/resolv.conf` file. The
   263  NetworkManager also sets up `dnsmasq` to use the real DNS servers of the
   264  connection and sets up `nameserver 127.0.0.1` in /`etc/resolv.conf`.
   265  
   266  When starting containers on desktop machines with these configurations, Docker
   267  users see this warning:
   268  
   269      WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
   270      can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
   271  
   272  The warning occurs because Docker containers can't use the local DNS nameserver.
   273  Instead, Docker defaults to using an external nameserver.
   274  
   275  To avoid this warning, you can specify a DNS server for use by Docker
   276  containers. Or, you can disable `dnsmasq` in NetworkManager. Though, disabling
   277  `dnsmasq` might make DNS resolution slower on some networks.
   278  
   279  To specify a DNS server for use by Docker:
   280  
   281  1. Log into Ubuntu as a user with `sudo` privileges.
   282  
   283  2. Open the `/etc/default/docker` file for editing.
   284  
   285          $ sudo nano /etc/default/docker
   286  
   287  3. Add a setting for Docker.
   288  
   289          DOCKER_OPTS="--dns 8.8.8.8"
   290  
   291      Replace `8.8.8.8` with a local DNS server such as `192.168.1.1`. You can also
   292      specify multiple DNS servers. Separated them with spaces, for example:
   293  
   294          --dns 8.8.8.8 --dns 192.168.1.1
   295  
   296      >**Warning**: If you're doing this on a laptop which connects to various
   297      >networks, make sure to choose a public DNS server.
   298  
   299  4. Save and close the file.
   300  
   301  5. Restart the Docker daemon.
   302  
   303          $ sudo restart docker
   304  
   305  
   306  &nbsp;
   307  &nbsp;
   308  
   309  **Or, as an alternative to the previous procedure,** disable `dnsmasq` in
   310  NetworkManager (this might slow your network).
   311  
   312  1. Open the `/etc/NetworkManager/NetworkManager.conf` file for editing.
   313  
   314          $ sudo nano /etc/NetworkManager/NetworkManager.conf
   315  
   316  2. Comment out the `dns=dsnmasq` line:
   317  
   318          dns=dnsmasq
   319  
   320  3. Save and close the file.
   321  
   322  4. Restart both the NetworkManager and Docker.
   323  
   324          $ sudo restart network-manager $ sudo restart docker
   325  
   326  ### Configure Docker to start on boot
   327  
   328  Ubuntu uses `systemd` as its boot and service manager `15.04` onwards and `upstart`
   329  for versions `14.10` and below.
   330  
   331  For `15.04` and up, to configure the `docker` daemon to start on boot, run
   332  
   333      $ sudo systemctl enable docker
   334  
   335  &nbsp;
   336  
   337  For `14.10` and below the above installation method automatically configures `upstart`
   338  to start the docker daemon on boot
   339  
   340  ## Upgrade Docker
   341  
   342  To install the latest version of Docker with `wget`:
   343  
   344      $ wget -qO- https://get.docker.com/ | sh
   345  
   346  ## Uninstallation
   347  
   348  To uninstall the Docker package:
   349  
   350      $ sudo apt-get purge docker-engine
   351  
   352  To uninstall the Docker package and dependencies that are no longer needed:
   353  
   354      $ sudo apt-get autoremove --purge docker-engine
   355  
   356  The above commands will not remove images, containers, volumes, or user created
   357  configuration files on your host. If you wish to delete all images, containers,
   358  and volumes run the following command:
   359  
   360      $ rm -rf /var/lib/docker
   361  
   362  You must delete the user created configuration files manually.