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> — refer to note 5 under each version. 126 </td> </tr> 127 <tr> <td class="tg-031">libgl1-mesa-glx-lts-trusty</td> </tr> </table> 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 348 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.