Get started with Docker for Windows
Welcome to Docker for Windows!
Docker is a full development platform for creating containerized apps, and Docker for Windows is the best way to get started with Docker on Windows systems.
Got Docker for Windows? If you have not yet installed Docker for Windows, please see Install Docker for Windowsfor an explanation of stable and edge channels, system requirements, and download/install information.
Looking for system requirements? Check out What to know before you install, which has moved to the new install topic.
Check versions of Docker Engine, Compose, and Machine
Start your favorite shell (cmd.exe
, PowerShell, or other) to check your versions of docker
and docker-compose
, and verify the installation.
PS C:\Users\Docker> docker --version
Docker version 17.03.0-ce, build 60ccb22
PS C:\Users\Docker> docker-compose --version
docker-compose version 1.11.2, build dfed245
PS C:\Users\Docker> docker-machine --version
docker-machine version 0.10.0, build 76ed2a6
Explore the application and run examples
The next few steps take you through some examples. These are just suggestions for ways to experiment with Docker on your system, check version information, and make sure docker
commands are working properly.
-
Open a shell (
cmd.exe
, PowerShell, or other). -
Run some Docker commands, such as
docker ps
,docker version
, anddocker info
.Here is the output of
docker ps
run in a powershell. (In this example, no containers are running yet.)PS C:\Users\jdoe> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Here is an example of command output for
docker version
.PS C:\Users\Docker> docker version Client: Version: 17.03.0-ce API version: 1.26 Go version: go1.7.5 Git commit: 60ccb22 Built: Thu Feb 23 10:40:59 2017 OS/Arch: windows/amd64 Server: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 07:52:04 2017 OS/Arch: linux/amd64 Experimental: true
Here is an example of command output for
docker info
.PS C:\Users\Docker> docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 17.03.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 977c511eda0925a723debdc94d09459af49d082a runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70 init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 4.9.12-moby Operating System: Alpine Linux v3.5 OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.934 GiB Name: moby ID: BM4O:645U:LUS6:OGMD:O6WH:JINS:K7VF:OVDZ:7NE4:ZVJT:PSMQ:5UA6 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 13 Goroutines: 21 System Time: 2017-03-02T16:59:13.417299Z EventsListeners: 0 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
Note: The outputs above are examples. Your output for commands like
docker version
anddocker info
will vary depending on your product versions (e.g., as you install newer versions). -
Run
docker run hello-world
to test pulling an image from Docker Hub and starting a container.PS C:\Users\jdoe> docker run hello-world Hello from Docker. This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
-
Try something more ambitious, and run an Ubuntu container with this command.
PS C:\Users\jdoe> docker run -it ubuntu bash
This will download the
ubuntu
container image and start it. Here is the output of running this command in a powershell.PS C:\Users\jdoe> docker run -it ubuntu bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 5a132a7e7af1: Pull complete fd2731e4c50c: Pull complete 28a2f68d1120: Pull complete a3ed95caeb02: Pull complete Digest: sha256:4e85ebe01d056b43955250bbac22bdb8734271122e3c78d21e55ee235fc6802d Status: Downloaded newer image for ubuntu:latest
Type
exit
to stop the container and close the powershell. -
Start a Dockerized webserver with this command:
PS C:\Users\jdoe> docker run -d -p 80:80 --name webserver nginx
This will download the
nginx
container image and start it. Here is the output of running this command in a powershell.PS C:\Users\jdoe> docker run -d -p 80:80 --name webserver nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx fdd5d7827f33: Pull complete a3ed95caeb02: Pull complete 716f7a5f3082: Pull complete 7b10f03a0309: Pull complete Digest: sha256:f6a001272d5d324c4c9f3f183e1b69e9e0ff12debeb7a092730d638c33e0de3e Status: Downloaded newer image for nginx:latest dfe13c68b3b86f01951af617df02be4897184cbf7a8b4d5caf1c3c5bd3fc267f
Point your web browser at http://localhost
to display the start page.
(Since you specified the default HTTP port, it isn’t necessary to append :80
at the end of the URL.)
-
Run
docker ps
while your webserver is running to see details on the container.PS C:\Users\jdoe> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfe13c68b3b8 nginx "nginx -g 'daemon off" 3 days ago Up 45 seconds 0.0.0.0:80->80/tcp, 443/tc p webserver
Stop or remove containers and images.
The nginx
webserver will continue to run in the container on that port until you stop and/or remove the container. If you want to stop the webserver, type: docker stop webserver
and start it again with docker start webserver
.
To stop and remove the running container with a single command, type: docker rm -f webserver
. This will remove the container, but not the nginx
image. You can list local images with docker images
. You might want to keep some images around so that you don’t have to pull them again from Docker Hub. To remove an image you no longer need, use docker rmi
followed by an image ID or image name. For example, docker rmi nginx
.