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