开始使用Docker for Windows
预计阅读时间: 19分钟欢迎使用Docker桌面!
Windows版Docker桌面部分包含有关Docker桌面社区稳定版的信息。有关Edge版本中可用功能的信息,请参阅Edge版本说明 。有关Docker Desktop Enterprise(DDE)版本的信息,请参阅Docker Desktop Enterprise 。
Docker是用于创建容器化应用程序的完整开发平台。Docker Desktop是在Windows上开始使用Docker的最佳方法。
请参阅安装Docker桌面以获取下载信息,系统要求和安装说明。
测试您的安装
-
打开一个终端窗口(命令提示符或PowerShell, 而不是 PowerShell ISE)。
-
运行
docker --version
以确保您具有受支持的Docker版本:> docker --version Docker version 19.03.1
-
从Docker Hub提取hello-world映像并运行容器:
> docker run hello-world docker : Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
-
列出从Docker Hub下载的
hello-world
映像 :> docker image ls
-
列出
hello-world
容器 (在显示“来自Docker的Hello!”后退出):> docker container ls --all
-
通过运行一些帮助命令来浏览Docker帮助页面:
> docker --help > docker container --help > docker container ls --help > docker run --help
探索应用程序
在本节中,我们通过运行更复杂的东西(例如OS和Web服务器)演示Dockerized应用程序的简便性和功能。
-
提取Ubuntu OS的映像,并在生成的容器内运行交互式终端:
> docker run --interactive --tty ubuntu bash docker : Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 22e816666fd6: Pull complete 079b6d2a1e53: Pull complete 11048ebae908: Pull complete c58094023a2e: Pull complete Digest: sha256:a7b8b7b33e44b123d7f997bd4d3d0a59fafc63e203d17efedf09ff3f6f516152 Status: Downloaded newer image for ubuntu:latest
不要使用PowerShell ISE
交互式终端无法在PowerShell ISE中运行(但可以在PowerShell中运行)。参见docker / for-win / issues / 223 。
-
您在容器中。在root
#
提示符下,检查容器的hostname
:root@8aea0acb7423:/# hostname 8aea0acb7423
请注意,主机名已分配为容器ID(在提示中也使用了主机名)。
-
使用
exit
命令退出外壳程序(这也会停止容器):root@8aea0acb7423:/# exit >
-
使用
--all
选项列出容器(因为没有容器在运行)。hello-world
容器(随机命名为relaxed_sammet
)在显示其消息后停止。退出容器时,ubuntu
容器(随机命名为laughing_kowalevski
)停止。> docker container ls --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8aea0acb7423 ubuntu "bash" 2 minutes ago Exited (0) 2 minutes ago laughing_kowalevski 45f77eb48e78 hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago relaxed_sammet
-
拉动和运行Dockerized nginx的 Web服务器,我们的名字,
webserver
:> docker run --detach --publish 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
-
将您的Web浏览器指向
http://localhost
以显示nginx起始页。(您无需附加:80
因为您在docker
命令中指定了默认的HTTP端口。) -
仅列出您正在运行的容器:
> docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e788d8e4dfd nginx "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp webserver
-
通过我们为其分配的名称
webserver
停止正在运行的nginx容器:> docker container stop webserver
-
删除所有三个容器的名称-后两个名称会有所不同:
> docker container rm webserver laughing_kowalevski relaxed_sammet
Docker设置对话框
Docker Desktop菜单可让您配置Docker设置,例如安装,更新,版本通道,Docker Hub登录等。
本节说明可从“ 设置”对话框访问的配置选项。
-
通过单击通知区域(或系统托盘)中的Docker图标,打开Docker桌面菜单:
-
选择设置以打开“设置”对话框:
一般
在“设置”对话框的“ 常规”选项卡上,您可以配置何时启动和更新Docker。
-
登录时启动Docker-Windows系统登录后自动启动Docker Desktop。
-
自动检查更新 -默认情况下,Docker Desktop自动检查更新并在更新可用时通知您。单击确定接受并安装更新(或取消以保留当前版本)。您可以通过从Docker主菜单中选择检查更新来手动更新。
-
发送使用情况统计信息 -默认情况下,Docker Desktop发送诊断,崩溃报告和使用情况数据。此信息可帮助Docker改善应用程序并进行故障排除。清除复选框以退出。Docker可能会定期提示您提供更多信息。
-
在不带TLS的tcp:// localhost:2375上公开守护程序 -单击此选项以启用旧版客户端连接到Docker守护程序。您必须谨慎使用此选项,因为在不使用TLS的情况下公开守护程序可能会导致远程执行代码攻击。
共享驱动器
与Docker Desktop共享您的本地驱动器(卷),以便Linux容器可以使用它们。
共享驱动器的权限与您在此处提供的凭据有关。如果以与此处配置的用户名不同的用户名运行docker
命令,则您的容器将无法访问已安装的卷。
要应用共享驱动器,系统会提示您输入Windows系统(域)用户名和密码。您可以选择一个选项来让Docker存储凭证,这样您就不必每次都输入它们。
共享驱动器,权限和卷装载的提示
仅在Linux容器中安装卷才需要共享驱动器,而Windows容器则不需要。对于Linux容器,您需要共享Dockerfile和卷所在的驱动器。如果遇到诸如
file not found
或cannot start service
错误,则可能需要启用共享驱动器。请参阅卷安装需要Linux容器使用共享驱动器 。)如果可能,请避免从Windows主机进行卷挂载,而应在Linux VM上挂载,或使用数据卷 (命名卷)或数据容器 。使用主机挂载的卷和数据库文件的网络路径存在许多问题。请参阅从主机路径进行卷装载使用nobrl选项覆盖数据库锁定 。
Docker Desktop为用户,组和其他0777或a + rwx设置了读取/写入/执行权限。这是不可配置的。请参阅共享卷的数据目录上的权限错误 。
确保域用户有权访问共享驱动器,如验证域用户具有共享驱动器的权限中所述 。
您可以与容器共享本地驱动器,但不能与Docker Machine节点共享。请参阅常见问题解答, 我可以与Docker Machine VM共享本地驱动器和文件系统吗? 。
共享驱动器的防火墙规则
共享驱动器需要在主机和运行Linux容器的虚拟机之间打开端口445。当您尝试添加共享驱动器时,Docker将检测端口445是否已关闭,并显示以下消息:
要共享驱动器,请允许Windows主机和Windows防火墙中的虚拟机或第三方防火墙软件之间的连接。您不需要在任何其他网络上打开端口445。
默认情况下,允许连接10.0.75.1
从端口445(Windows主机) 10.0.75.2
(虚拟机)。如果您的防火墙规则似乎正确,则可能需要在Hyper-V虚拟网卡上切换或重新安装文件和打印共享服务。
按需共享驱动器
您可以在首次请求特定安装时“按需”共享驱动器。
如果从具有卷挂载的外壳程序运行Docker命令(如下例所示)或启动包含卷挂载的Compose文件,则会弹出一个对话框,询问您是否要共享指定的驱动器。
您可以选择Share it ,在这种情况下,它将添加到您的Docker Desktop Shared Drives列表中,并且可用于容器。另外,您可以选择取消来选择不共享它。
高级
更改“高级”选项卡上的设置后,Linux VM将重新启动。这需要几秒钟。
-
CPU-更改分配给Linux VM的处理器数量。
-
内存 -更改Docker桌面Linux VM使用的内存量。
-
交换 -配置交换文件的大小。
网络
您可以配置Docker桌面网络以在虚拟专用网络(VPN)上工作。
-
内部虚拟交换机 -您可以指定网络地址转换(NAT)前缀和子网掩码以启用Internet连接。
-
DNS服务器 -您可以将DNS服务器配置为使用动态或静态IP寻址。
注意 :一些用户报告了在Docker Desktop Stable版本上连接到Docker Hub的问题。尝试运行从Docker Hub提取尚未下载的图像的
docker
命令时,例如第一次运行docker run hello-world
时,这将显示为错误。如果遇到这种情况,请重置DNS服务器以使用Google DNS固定地址:8.8.8.8
。有关更多信息,请参见疑难解答中的网络问题 。
更新这些设置需要重新配置并重新启动Linux VM。
代理人
Docker Desktop可让您配置HTTP / HTTPS代理设置,并将其自动传播到Docker和您的容器。例如,如果将代理设置设置为http://proxy.example.com
,则Docker在提取容器时将使用此代理。
启动容器时,代理设置会传播到容器中。例如:
> docker run alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128
http_proxy=http://proxy.example.com:3128
no_proxy=*.local, 169.254/16
在上面的输出中,设置了HTTP_PROXY
, http_proxy
和no_proxy
环境变量。当您的代理配置发生更改时,Docker会自动重启以获取新设置。如果您有希望在重启之间保持运行的容器,则应考虑使用重启策略 。
守护进程
您可以配置Docker守护程序以磨练容器的运行方式。 进阶模式可让您直接编辑JSON。基本模式使您可以使用交互设置配置公共守护程序选项。
实验功能
Docker Desktop Edge发行版默认启用了Docker Engine的实验版本,如GitHub上的Docker实验功能自述文件所述。
实验功能提供了对未来产品功能的早期访问。这些功能仅用于测试和反馈,因为它们可能在版本之间更改而不会发出警告,或者可以从将来的版本中完全删除。实验功能不得在生产环境中使用。Docker不提供对实验功能的支持。有关更多信息,请参阅实验功能 。
要在Docker CLI中启用实验性功能,请编辑
config.json
文件,并将experimental
设置为enabled。要从Docker桌面菜单启用实验性功能,请单击设置 (macOS上的首选项 )> 守护程序 ,然后选择实验性功能复选框。
在Edge和Stable版本上,您都可以打开和关闭“ 实验”功能 。如果将其关闭,则Docker Desktop将使用当前普遍可用的Docker Engine版本。
运行docker version
来查看您是否处于实验模式。实验模式列在Server
数据下。如果Experimental
为true
,则Docker将以实验模式运行,如下所示:
> docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:17:08 2019
OS/Arch: windows/amd64
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:17:52 2019
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: v1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
不安全的注册表
您可以在基本守护程序设置上设置自己的注册表 。
通常,您将公共或私有映像存储在Docker Hub和Docker Trusted Registry中 。在这里,您可以使用Docker设置自己的不安全注册表 。只需为不安全的注册表和注册表镜像添加URL,即可在其上托管映像。
有关更多信息,请参见如何添加自定义CA证书?以及如何添加客户端证书? 在常见问题解答中。
守护程序配置文件
Advanced守护程序设置提供了原始选项,可以直接编辑该守护程序的JSON配置文件。
更新这些设置需要重新配置并重新启动Linux VM。
有关Docker守护程序上选项的完整列表,请参阅daemon以及子主题:
Kubernetes
Docker Desktop包含一个在Windows主机上运行的独立Kubernetes服务器,因此您可以测试在Kubernetes上部署Docker工作负载的方式。
Kubernetes客户端命令kubectl
已包括在内,并配置为连接到本地Kubernetes服务器。如果您已经安装了kubectl
并指向其他环境,例如minikube
或GKE集群,请确保更改上下文,以使kubectl
指向kubectl
docker-for-desktop
:
> kubectl config get-contexts
> kubectl config use-context docker-for-desktop
您还可以通过Docker Desktop菜单更改它:
如果您通过其他方法安装了kubectl
,但遇到冲突,请将其删除。
-
要启用Kubernetes支持并安装以Docker容器运行的Kubernetes独立实例,请选择Enable Kubernetes并单击Apply按钮。这将实例化将Kubernetes服务器作为容器运行所需的映像,并将
kubectl.exe
命令安装在路径中。 -
默认情况下,Kubernetes容器对于诸如docker
docker service ls
类的命令是隐藏的,因为不支持手动管理它们。要使其可见,请选择显示系统容器(高级) ,然后单击应用 。大多数用户不需要此选项。 -
要随时禁用Kubernetes支持,请取消选择Enable Kubernetes 。Kubernetes容器将停止并删除,并且
/usr/local/bin/kubectl
命令也将删除。有关将Kubernetes集成与Docker Desktop结合使用的更多信息,请参阅部署在Kubernetes上 。
重启
重置和重启选项
在Edge版本上, `` 疑难解答''菜单上提供了`` 重启Docker桌面'' , ``重置Kubernetes集群''和`` 重置为出厂默认值''选项。
在稳定版本上,您可以重新启动Docker或使用“重置”选项卡重置其配置。
-
重新启动Docker桌面 -关闭并重新启动Docker应用程序。
-
重置Kubernetes集群 -删除所有堆栈和Kubernetes资源。
-
重置为出厂默认设置 -将Docker重置为出厂默认设置。这在Docker停止工作或无响应的情况下很有用。
疑难排解
有关更多详细信息,请访问我们的日志和故障排除指南。
登录到我们的Windows版Docker桌面论坛,以获取社区帮助,查看当前用户主题或加入讨论。
在GitHub上登录Windows版Docker Desktop,以报告错误或问题并查看社区报告的问题。
有关提供有关文档反馈或自行更新的信息,请参阅“ 贡献文档” 。
在Windows和Linux容器之间切换
从Docker桌面菜单中,您可以切换Docker CLI与之对话的守护进程(Linux或Windows)。选择“ 切换到Windows容器以使用Windows容器”,或选择“ 切换到Linux容器以使用Linux容器”(默认设置)。
有关Windows容器的更多信息,请参考以下文档:
-
Windows容器上的Microsoft文档。
-
构建并运行您的第一个Windows Server容器(博客文章)快速介绍了如何在Windows 10和Windows Server 2016评估版本上构建和运行本机Docker Windows容器。
-
Windows容器入门(实验)向您展示如何将MusicStore应用程序与Windows容器一起使用。MusicStore是一个标准的.NET应用程序, 在这里分叉使用容器 ,它是一个多容器应用程序的很好的例子。
-
若要了解如何从本地主机连接到Windows容器,请参阅Windows容器对
localhost
和已发布端口的限制
设置对话框随Windows容器而变化
当您切换到Windows容器时,“设置”对话框仅显示那些处于活动状态并应用于Windows容器的选项卡:
如果您在Windows容器模式下设置代理或守护程序配置,则它们仅适用于Windows容器。如果切换回Linux容器,则代理和守护程序配置将恢复为Linux容器设置的内容。您的Windows容器设置将保留,并在您切换回时再次可用。
Docker中心
从Docker桌面菜单中选择登录/创建Docker ID以访问您的Docker Hub帐户。登录后,您可以直接从Docker Desktop菜单访问Docker Hub存储库。
有关更多信息,请参考以下Docker Hub主题 :
两因素验证
Docker Desktop使您可以使用两因素身份验证登录Docker Hub。当您访问Docker Hub帐户时,两要素身份验证提供了额外的安全性。
您必须先在Docker Hub中启用双重身份验证,然后才能通过Docker Desktop登录到您的Docker Hub帐户。有关说明,请参阅为Docker Hub启用两因素身份验证 。
启用两因素身份验证后:
-
转到Docker Desktop菜单,然后选择登录/创建Docker ID 。
-
输入您的Docker ID和密码,然后单击登录 。
-
成功登录后,Docker Desktop会提示您输入身份验证代码。输入手机的六位数代码,然后点击验证 。
成功通过身份验证后,您可以直接从Docker Desktop菜单访问组织和存储库。
添加TLS证书
您可以将受信任的证书颁发机构(CA)添加到Docker守护程序中,以验证注册表服务器证书和客户端证书 ,以对注册表进行身份验证。有关更多信息,请参见如何添加自定义CA证书?以及如何添加客户端证书?在常见问题解答中。
接下来去哪里
-
在“入门”中尝试一下演练。
-
深入了解Docker Labs示例演练和源代码。
-
请参阅《 Docker CLI参考指南》 。