github.com/hustcat/docker@v1.3.3-0.20160314103604-901c67a8eeab/docs/installation/windows.md (about)

     1  <!--[metadata]>
     2  +++
     3  title = "Installation on Windows"
     4  description = "Docker installation on Microsoft Windows"
     5  keywords = ["Docker, Docker documentation, Windows, requirements, virtualbox,  boot2docker"]
     6  [menu.main]
     7  parent = "engine_install"
     8  weight="-80"
     9  +++
    10  <![end-metadata]-->
    11  
    12  # Windows
    13  
    14  > **Note**: This release of Docker deprecates the Boot2Docker command line in
    15  > favor of Docker Machine.  Use the Docker Toolbox to install Docker Machine as
    16  > well as the other Docker tools.
    17  
    18  You install Docker using Docker Toolbox. Docker Toolbox includes the following Docker tools:
    19  
    20  * Docker Machine for running the `docker-machine` binary
    21  * Docker Engine for running the `docker` binary
    22  * Kitematic, the Docker GUI
    23  * a shell preconfigured for a Docker command-line environment
    24  * Oracle VM VirtualBox
    25  
    26  Because the Docker daemon uses Linux-specific kernel features, you can't run
    27  Docker natively in Windows. Instead, you must use `docker-machine` to create and attach to a Docker VM on your machine. This VM hosts Docker for you on your Windows system.
    28  
    29  The virtual machine runs a lightweight Linux distribution made specifically to
    30  run the Docker daemon. The VirtualBox VM runs completely from RAM, is a small
    31  ~24MB download, and boots in approximately 5s.
    32  
    33  ## Requirements
    34  
    35  To run Docker, your machine must have a 64-bit operating system running Windows 7 or higher. Additionally, you must make sure that virtualization is enabled on your machine.
    36  To verify your machine meets these requirements, do the following:
    37  
    38  1. Right click the Windows Start Menu and choose **System**.
    39  
    40      ![Which version](images/win_ver.png)
    41  
    42      If you are using an unsupported version of Windows, you should consider
    43      upgrading your operating system in order to try out Docker.
    44  
    45  2. Make sure your CPU supports [virtualization technology](https://en.wikipedia.org/wiki/X86_virtualization)
    46  and virtualization support is enabled in BIOS and recognized by Windows.
    47  
    48      #### For Windows 8, 8.1 or 10
    49  
    50  	  Choose **Start > Task Manager**. On Windows 10, click more details. Navigate to the **Performance** tab.
    51  	  Under **CPU** you should see the following:
    52  
    53        ![Release page](images/virtualization.png)
    54  
    55      If virtualization is not enabled on your system, follow the manufacturer's instructions for enabling it.
    56  
    57      #### For Windows 7
    58  
    59  	  Run the <a
    60  	  href="http://www.microsoft.com/en-us/download/details.aspx?id=592"
    61  	  target="_blank"> Microsoft® Hardware-Assisted Virtualization Detection
    62  	  Tool</a> and follow the on-screen instructions.
    63  
    64  3. Verify your Windows OS is 64-bit (x64)
    65  
    66     How you do this verification depends on your Windows version.  For details, see the Windows
    67      article [How to determine whether a computer is running a 32-bit version or 64-bit version
    68      of the Windows operating system](https://support.microsoft.com/en-us/kb/827218).
    69  
    70  > **Note**: If you have Docker hosts running and you don't wish to do a Docker Toolbox
    71  installation, you can install the `docker.exe` using the *unofficial* Windows package
    72  manager Chocolatey. For information on how to do this, see [Docker package on
    73  Chocolatey](http://chocolatey.org/packages/docker).
    74  
    75  ### Learn the key concepts before installing
    76  
    77  In a Docker installation on Linux, your machine is both the localhost and the
    78  Docker host. In networking, localhost means your computer. The Docker host is
    79  the machine on which the containers run.
    80  
    81  On a typical Linux installation, the Docker client, the Docker daemon, and any
    82  containers run directly on your localhost. This means you can address ports on a
    83  Docker container using standard localhost addressing such as `localhost:8000` or
    84  `0.0.0.0:8376`.
    85  
    86  ![Linux Architecture Diagram](images/linux_docker_host.svg)
    87  
    88  In an Windows installation, the `docker` daemon is running inside a Linux virtual
    89  machine. You use the Windows Docker client to talk to the Docker host VM. Your
    90  Docker containers run inside this host.
    91  
    92  ![Windows Architecture Diagram](images/win_docker_host.svg)
    93  
    94  In Windows, the Docker host address is the address of the Linux VM. When you
    95  start the VM with `docker-machine` it is assigned an IP address. When you start
    96  a container, the ports on a container map to ports on the VM. To see this in
    97  practice, work through the exercises on this page.
    98  
    99  
   100  ### Installation
   101  
   102  If you have VirtualBox running, you must shut it down before running the
   103  installer.
   104  
   105  1. Go to the [Docker Toolbox](https://www.docker.com/toolbox) page.
   106  
   107  2. Click the installer link to download.
   108  
   109  3. Install Docker Toolbox by double-clicking the installer.
   110  
   111      The installer launches the "Setup - Docker Toolbox" dialog.
   112  
   113      ![Install Docker Toolbox](images/win-welcome.png)
   114  
   115  4. Press "Next" to install the toolbox.
   116  
   117      The installer presents you with options to customize the standard
   118      installation. By default, the standard Docker Toolbox installation:
   119  
   120      * installs executables for the Docker tools in `C:\Program Files\Docker Toolbox`
   121      * install VirtualBox; or updates any existing installation
   122      * adds a Docker Inc. folder to your program shortcuts
   123      * updates your `PATH` environment variable
   124      * adds desktop icons for the Docker Quickstart Terminal and Kitematic
   125  
   126      This installation assumes the defaults are acceptable.
   127  
   128  5. Press "Next" until you reach the "Ready to Install" page.
   129  
   130       The system prompts you for your password.
   131  
   132       ![Install](images/win-page-6.png)
   133  
   134  6. Press "Install"  to continue with the installation.
   135  
   136       When it completes, the installer provides you with some information you can
   137       use to complete some common tasks.
   138  
   139       ![All finished](images/windows-finish.png)
   140  
   141  7. Press "Finish" to exit.
   142  
   143  ## Running a Docker Container
   144  
   145  To run a Docker container, you:
   146  
   147  * Create a new (or start an existing) Docker virtual machine
   148  * Switch your environment to your new VM
   149  * Use the `docker` client to create, load, and manage containers
   150  
   151  Once you create a machine, you can reuse it as often as you like. Like any
   152  VirtualBox VM, it maintains its configuration between uses.
   153  
   154  There are several ways to use the installed tools, from the Docker Quickstart Terminal or
   155  [from your shell](#from-your-shell).
   156  
   157  ### Using the Docker Quickstart Terminal
   158  
   159  1. Find the Docker Quickstart Terminal icon on your Desktop and double-click to launch it.
   160  
   161      The application:
   162  
   163      * Opens a terminal window
   164      * Creates a `default` VM if it doesn't exist, and starts the VM after
   165      * Points the terminal environment to this VM
   166  
   167      Once the launch completes, you can run `docker` commands.
   168  
   169  3. Verify your setup succeeded by running the `hello-world` container.
   170  
   171          $ docker run hello-world
   172          Unable to find image 'hello-world:latest' locally
   173          511136ea3c5a: Pull complete
   174          31cbccb51277: Pull complete
   175          e45a5af57b00: Pull complete
   176          hello-world:latest: The image you are pulling has been verified.
   177          Important: image verification is a tech preview feature and should not be
   178          relied on to provide security.
   179          Status: Downloaded newer image for hello-world:latest
   180          Hello from Docker.
   181          This message shows that your installation appears to be working correctly.
   182  
   183          To generate this message, Docker took the following steps:
   184          1. The Docker client contacted the Docker daemon.
   185          2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
   186             (Assuming it was not already locally available.)
   187          3. The Docker daemon created a new container from that image which runs the
   188             executable that produces the output you are currently reading.
   189          4. The Docker daemon streamed that output to the Docker client, which sent it
   190             to your terminal.
   191  
   192          To try something more ambitious, you can run an Ubuntu container with:
   193          $ docker run -it ubuntu bash
   194  
   195          For more examples and ideas, visit:
   196          http://docs.docker.com/userguide/
   197  
   198  
   199  ### Using Docker from Windows Command Prompt (cmd.exe)
   200  
   201  1. Launch a Windows Command Prompt (cmd.exe).
   202  
   203      The `docker-machine` command requires `ssh.exe` in your `PATH` environment
   204      variable. This `.exe` is in the MsysGit `bin` folder.
   205  
   206  2. Add this to the `%PATH%` environment variable by running:
   207  
   208          set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"
   209  
   210  3. Create a new Docker VM.
   211  
   212          docker-machine create --driver virtualbox my-default
   213          Creating VirtualBox VM...
   214          Creating SSH key...
   215          Starting VirtualBox VM...
   216          Starting VM...
   217          To see how to connect Docker to this machine, run: docker-machine env my-default
   218  
   219      The command also creates a machine configuration in the
   220      `C:\USERS\USERNAME\.docker\machine\machines` directory. You only need to run the `create`
   221      command once. Then, you can use `docker-machine` to start, stop, query, and
   222      otherwise manage the VM from the command line.
   223  
   224  4. List your available machines.
   225  
   226          C:\Users\mary> docker-machine ls
   227          NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
   228          my-default        *        virtualbox   Running   tcp://192.168.99.101:2376
   229  
   230      If you have previously installed the deprecated Boot2Docker application or
   231      run the Docker Quickstart Terminal, you may have a `dev` VM as well.
   232  
   233  5. Get the environment commands for your new VM.
   234  
   235          C:\Users\mary> docker-machine env --shell cmd my-default
   236  
   237  6. Connect your shell to the `my-default` machine.
   238  
   239          C:\Users\mary> eval "$(docker-machine env my-default)"
   240  
   241  7. Run the `hello-world` container to verify your setup.
   242  
   243          C:\Users\mary> docker run hello-world
   244  
   245  ### Using Docker from PowerShell
   246  
   247  1. Launch a Windows PowerShell window.
   248  
   249  2. Add `ssh.exe` to your PATH:
   250  
   251          PS C:\Users\mary> $Env:Path = "${Env:Path};c:\Program Files (x86)\Git\bin"
   252  
   253  3. Create a new Docker VM.
   254  
   255          PS C:\Users\mary> docker-machine create --driver virtualbox my-default
   256  
   257  4. List your available machines.
   258  
   259          C:\Users\mary> docker-machine ls
   260          NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
   261          my-default        *        virtualbox   Running   tcp://192.168.99.101:2376
   262  
   263  5. Get the environment commands for your new VM.
   264  
   265          C:\Users\mary> docker-machine env --shell powershell my-default
   266  
   267  6. Connect your shell to the `my-default` machine.
   268  
   269          C:\Users\mary> eval "$(docker-machine env my-default)"
   270  
   271  7. Run the `hello-world` container to verify your setup.
   272  
   273          C:\Users\mary> docker run hello-world
   274  
   275  
   276  ## Learn about your Toolbox installation
   277  
   278  Toolbox installs the Docker Engine binary in the `C:\Program Files\Docker
   279  Toolbox` directory. When you use the Docker Quickstart Terminal or create a
   280  `default` VM manually, Docker Machine updates the
   281  `C:\USERS\USERNAME\.docker\machine\machines\default` folder to your
   282  system. This folder contains the configuration for the VM.
   283  
   284  You can create multiple VMs on your system with Docker Machine. Therefore, you
   285  may end up with multiple VM folders if you have created more than one VM. To
   286  remove a VM, use the `docker-machine rm <machine-name>` command.
   287  
   288  ## Migrate from Boot2Docker
   289  
   290  If you were using Boot2Docker previously, you have a pre-existing Docker
   291  `boot2docker-vm` VM on your local system.  To allow Docker Machine to manage
   292  this older VM, you can migrate it.
   293  
   294  1. Open a terminal or the Docker CLI on your system.
   295  
   296  2. Type the following command.
   297  
   298          $ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
   299  
   300  3. Use the `docker-machine` command to interact with the migrated VM.
   301  
   302  The `docker-machine` subcommands are slightly different than the `boot2docker`
   303  subcommands. The table below lists the equivalent `docker-machine` subcommand
   304  and what it does:
   305  
   306  |  `boot2docker` | `docker-machine` | `docker-machine` description                             |
   307  |----------------|------------------|----------------------------------------------------------|
   308  | init           | create           | Creates a new docker host.                               |
   309  | up             | start            | Starts a stopped machine.                                |
   310  | ssh            | ssh              | Runs a command or interactive ssh session on the machine.|
   311  | save           | -                | Not applicable.                                          |
   312  | down           | stop             | Stops a running machine.                                 |
   313  | poweroff       | stop             | Stops a running machine.                                 |
   314  | reset          | restart          | Restarts a running machine.                              |
   315  | config         | inspect          | Prints machine configuration details.                    |
   316  | status         | ls               | Lists all machines and their status.                     |
   317  | info           | inspect          | Displays a machine's details.                            |
   318  | ip             | ip               | Displays the machine's ip address.                       |
   319  | shellinit      | env              | Displays shell commands needed to configure your shell to interact with a machine |
   320  | delete         | rm               | Removes a machine.                                       |
   321  | download       | -                | Not applicable.                                          |
   322  | upgrade        | upgrade          | Upgrades a machine's Docker client to the latest stable release. |
   323  
   324  
   325  ## Upgrade Docker Toolbox
   326  
   327  To upgrade Docker Toolbox, download and re-run [the Docker Toolbox
   328  installer](https://www.docker.com/toolbox).
   329  
   330  ## Container port redirection
   331  
   332  If you are curious, the username for the Docker default VM is `docker` and the
   333  password is `tcuser`. The latest version of `docker-machine` sets up a host only
   334  network adaptor which provides access to the container's ports.
   335  
   336  If you run a container with a published port:
   337  
   338      $ docker run --rm -i -t -p 80:80 nginx
   339  
   340  Then you should be able to access that nginx server using the IP address
   341  reported to you using:
   342  
   343      $ docker-machine ip
   344  
   345  Typically, the IP is 192.168.59.103, but it could get changed by VirtualBox's
   346  DHCP implementation.
   347  
   348  > **Note**: There is a [known
   349  > issue](https://docs.docker.com/machine/drivers/virtualbox/#known-issues) that
   350  > may cause files shared with your nginx container to not update correctly as you
   351  > modify them on your host.
   352  
   353  ## Login with PUTTY instead of using the CMD
   354  
   355  Docker Machine generates and uses the public/private key pair in your
   356  `%USERPROFILE%\.docker\machine\machines\<name_of_your_machine>` directory. To
   357  log in you need to use the private key from this same directory. The private key
   358  needs to be converted into the format PuTTY uses. You can do this with
   359  [puttygen](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html):
   360  
   361  1. Open `puttygen.exe` and load ("File"->"Load" menu) the private key from (you may need to change to the `All Files (*.*)` filter)
   362  
   363          %USERPROFILE%\.docker\machine\machines\<name_of_your_machine>\id_rsa
   364  
   365  2. Click "Save Private Key".
   366  
   367  3.  Use the saved file to login with PuTTY using `docker@127.0.0.1:2022`.
   368  
   369  ## Uninstallation
   370  
   371  You can uninstall Docker Toolbox using Window's standard process for removing
   372  programs. This process does not remove the `docker-install.exe` file. You must
   373  delete that file yourself.
   374  
   375  ## Learn more
   376  
   377  You can continue with the [Docker Engine User Guide](../userguide/index.md). If you are
   378  interested in using the Kitematic GUI, see the [Kitematic user
   379  guide](https://docs.docker.com/kitematic/userguide/).