Mac版Docker桌面用户手册
预计阅读时间:15分钟
欢迎使用Docker桌面!适用于Mac的Docker桌面用户手册提供了有关如何配置和管理Docker桌面设置的信息。
有关Docker Desktop下载,系统要求和安装说明的信息,请参阅《安装Docker Desktop》。
首选项
Docker Preferences菜单允许您配置Docker设置,例如安装,更新,版本通道,Docker Hub登录等。
从菜单栏中选择Docker菜单> Preferences,然后配置下面描述的运行时选项。
一般的
在常规选项卡上,您可以配置何时启动和更新Docker:
-
自动检查更新:默认情况下,Docker Desktop配置为自动检查较新版本。如果您作为组织的一部分安装了Docker Desktop,则可能无法自己更新Docker Desktop。在这种情况下,请将您现有的组织升级到团队计划,然后清除此复选框以禁用自动检查更新。
-
登录时启动Docker Desktop:打开会话时自动启动Docker Desktop。
-
在Time Machine备份中包括VM:选择此选项以备份Docker Desktop虚拟机。默认情况下禁用此选项。
-
使用gRPC FUSE进行文件共享:清除此复选框可改用旧版osxfs文件共享。
-
发送使用情况统计信息:Docker Desktop发送诊断,崩溃报告和使用情况数据。此信息可帮助Docker改善应用程序并进行故障排除。清除复选框以退出。
-
显示每周提示:显示有关使用Docker的有用建议。
-
启动时打开Docker Desktop仪表板:启动Docker Desktop时自动打开仪表板。
资源
在资源选项卡允许您配置CPU,内存,磁盘,代理,网络和其他资源。
先进的
在“高级”选项卡上,您可以限制可用于Docker的资源。
高级设置为:
-
CPU:默认情况下,Docker Desktop设置为使用主机上可用处理器数量的一半。要提高处理能力,请将其设置为更高的数字;减少,减少数字。
-
内存:默认情况下,Docker Desktop设置为使用
2
GB运行时内存,该内存是从Mac上的总可用内存分配的。要增加RAM,请将其设置为更大的数字。要减少它,请降低数字。 -
交换:根据需要配置交换文件的大小。默认值为1 GB。
-
磁盘映像大小:指定磁盘映像的大小。
-
磁盘映像位置:指定Linux卷的容器和映像的存储位置。
您也可以将磁盘映像移动到其他位置。如果尝试将磁盘映像移动到已有的映像,则会出现提示询问您是否要使用现有映像或替换现有映像。
文件共享
使用文件共享可允许Mac上的本地目录与Linux容器共享。这对于在运行和测试容器中的代码时在主机上的IDE中编辑源代码特别有用。默认情况下/Users
,/Volume
,/private
,/tmp
和/var/folders
目录共享。如果您的项目不在此目录中,则必须将其添加到列表中。否则,你可能会得到Mounts denied
或cannot start service
在运行时错误。
文件共享设置为:
-
添加目录:单击
+
并导航到要添加的目录。 -
Apply&Restart通过Docker的bind mount(
-v
)功能使目录可用于容器。
共享文件夹,权限和卷装载的提示
与容器仅共享所需的目录。文件共享带来了开销,因为主机上文件的任何更改都需要通知Linux VM。共享太多文件会导致CPU负载过大和文件系统性能下降。
共享文件夹旨在允许在容器中执行应用程序代码时在主机上对其进行编辑。对于诸如缓存目录或数据库之类的非代码项目,如果使用数据卷 (命名卷)或数据容器将它们存储在Linux VM中,则性能会更好。
如果您将整个主目录共享到一个容器中,MacOS可能会提示您授予Docker访问主目录个人区域的权限,例如“提醒”或“下载”。
默认情况下,Mac文件系统不区分大小写,而Linux区分大小写。在Linux上,可以创建2个单独的文件:
test
和Test
,而在Mac上,这些文件名实际上将引用相同的基础文件。这可能会导致应用程序在Mac上正常工作(共享文件内容)但在Linux生产环境中运行(文件内容不同)时失败的问题。为避免这种情况,Docker Desktop坚持以原始情况访问所有共享文件。因此,如果创建了一个名为的文件test
,则必须将其打开为test
。尝试打开Test
将失败,并显示错误消息No such file or directory
。同样,一旦test
创建了名为的文件,则尝试创建另一个名为的文件。Test
将失败。有关更多信息,请参阅卷安装要求共享文件/Users
。
代理人
Docker Desktop从macOS中检测HTTP / HTTPS代理设置,并将其自动传播到Docker。例如,如果您将代理设置设置为http://proxy.example.com
,则Docker在提取容器时会使用此代理。
但是,您的代理设置不会传播到您启动的容器中。如果要为容器设置代理设置,则需要为其定义环境变量,就像在Linux上一样,例如:
$ docker run -e HTTP_PROXY=http://proxy.example.com:3128 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
有关设置运行容器的环境变量的更多信息,请参见设置环境变量。
网络
您可以配置Docker桌面网络以在虚拟专用网络(VPN)上工作。指定网络地址转换(NAT)前缀和子网掩码以启用Internet连接。
Docker引擎
Docker Engine页面允许您配置Docker守护程序以确定容器的运行方式。
在框中输入JSON配置文件以配置守护程序设置。有关选项的完整列表,请参阅《 Docker Engine dockerd命令行参考》。
单击“应用并重新启动”以保存您的设置并重新启动Docker Desktop。
命令行
在“命令行”页面上,您可以指定是否启用实验性功能。
实验性功能提供了对未来产品功能的早期访问。这些功能仅用于测试和反馈,因为它们可能在版本之间更改而不会发出警告,或者可以从将来的版本中完全删除。实验功能不得在生产环境中使用。Docker不提供对实验功能的支持。
有关Docker CLI中当前实验功能的列表,请参阅Docker CLI实验功能。
您可以在Docker Desktop中打开和关闭实验性功能。如果您关闭实验性功能,则Docker Desktop将使用Docker Engine的当前普遍可用版本。
您可以在命令行上查看是否正在运行实验模式。如果
Experimental
为true
,则Docker将以实验模式运行,如下所示。(如果false
,则实验模式为关闭。)
> 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:18:17 2019
OS/Arch: darwin/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
Kubernetes
Docker Desktop包含一个可在Mac上运行的独立Kubernetes服务器,因此您可以测试在Kubernetes上部署Docker工作负载。要启用Kubernetes支持并安装作为Docker容器运行的Kubernetes独立实例,请选择Enable Kubernetes。
有关将Kubernetes集成与Docker Desktop结合使用的更多信息,请参阅部署在Kubernetes上。
重启
重置和重启选项
在Docker Desktop Mac上,``疑难解答''菜单中提供了``重启Docker桌面'',``重置为出厂默认值''以及其他重置选项。
有关重置选项的信息,请参阅“日志和故障排除”。
仪表盘
Docker Desktop Dashboard使您可以与容器和应用程序进行交互,并直接从计算机管理应用程序的生命周期。仪表板UI会显示所有正在运行,已停止和已启动的容器及其状态。它提供了一个直观的界面,可以执行常见的操作来检查和管理容器以及现有的Docker Compose应用程序。有关更多信息,请参阅Docker Desktop Dashboard。
添加TLS证书
您可以将受信任的证书颁发机构(CA)(用于验证注册表服务器证书)和客户端证书(用于对注册表进行身份验证)添加到Docker守护程序。
添加自定义CA证书(服务器端)
支持所有受信任的CA(根或中间CA)。Docker Desktop根据Mac密钥链创建所有用户信任的CA的证书捆绑包,并将其附加到Moby信任的证书。因此,如果主机上的用户信任企业SSL证书,则Docker Desktop会信任它。
要手动添加自定义的自签名证书,请先将证书添加到macOS钥匙串中,然后由Docker Desktop获取。这是一个例子:
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt
或者,如果您只想将证书添加到自己的本地钥匙串中(而不是对所有用户),请运行以下命令:
$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt
另请参阅证书的目录结构。
注意:您需要在对钥匙串或
~/.docker/certs.d
目录进行任何更改后重新启动Docker Desktop ,以使更改生效。
有关如何执行此操作的完整说明,请参阅博客文章“将自签名注册表证书添加到Docker和Mac的Docker桌面”。
添加客户端证书
您可以将客户证书放在
~/.docker/certs.d/<MyRegistry>:<Port>/client.cert
和中
~/.docker/certs.d/<MyRegistry>:<Port>/client.key
。
Docker Desktop应用程序启动时,它将~/.docker/certs.d
Mac上的文件夹复制到/etc/docker/certs.d
Moby(Docker Desktopxhyve
虚拟机)上的目录。
您需要在对钥匙串或
~/.docker/certs.d
目录进行任何更改后重新启动Docker Desktop ,以使更改生效。注册表不能被列为不安全的注册表(请参阅Docker Engine。Docker Desktop会忽略不安全的注册表下列出的证书,并且不发送客户端证书。类似的
docker run
尝试从注册表中提取的命令会在命令行上生成错误消息,以及在注册表上。
证书的目录结构
如果具有此目录结构,则无需手动将CA证书添加到Mac OS系统登录名:
/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
├── ca.crt
├── client.cert
└── client.key
以下内容进一步说明和解释了使用自定义证书的配置:
/etc/docker/certs.d/ <-- Certificate directory
└── localhost:5000 <-- Hostname:port
├── client.cert <-- Client certificate
├── client.key <-- Client key
└── ca.crt <-- Certificate authority that signed
the registry certificate
只要CA证书也在钥匙串中,您也可以具有此目录结构。
/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
├── client.cert
└── client.key
要了解有关如何为注册表安装CA根证书以及如何设置客户端TLS证书进行验证的更多信息,请参阅 Docker Engine主题中的使用证书验证存储库客户端。
安装外壳完成
Docker Desktop随附脚本,用于启用docker
和docker-compose
命令的完成。补全脚本可以Docker.app
在Contents/Resources/etc/
目录中的内找到,并且可以安装在Bash和Zsh中。
重击
Bash内置了对完成的支持要激活Docker命令的完成,需要将这些文件复制或符号链接到您的bash_completion.d/
目录。例如,如果您通过Homebrew安装了bash :
etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.bash-completion $(brew --prefix)/etc/bash_completion.d/docker
ln -s $etc/docker-compose.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-compose
将以下内容添加到您的~/.bash_profile
:
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
或者
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
sh
在Zsh中,完成系统
负责处理事务。要激活Docker命令的完成功能,需要将这些文件复制或符号链接到您的Zshsite-functions/
目录。例如,如果您通过Homebrew安装了Zsh :
etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
鱼壳
鱼壳还支持制表符完成系统。要激活Docker命令的完成功能,需要将这些文件复制或符号链接到Fish-shellcompletions/
目录。
创建completions
目录:
mkdir -p ~/.config/fish/completions
现在从码头工人添加鱼的完成。
ln -shi /Applications/Docker.app/Contents/Resources/etc/docker.fish-completion ~/.config/fish/completions/docker.fish
ln -shi /Applications/Docker.app/Contents/Resources/etc/docker-compose.fish-completion ~/.config/fish/completions/docker-compose.fish
提供反馈并获得帮助
要获得社区的帮助,请查看当前用户主题,加入或开始讨论,然后登录到我们的Docker Desktop for Mac论坛。
要报告错误或问题,请在GitHub上登录Docker Desktop for Mac问题,您可以在其中查看社区报告的问题,并提出新的问题。有关更多详细信息,请参见 日志和故障排除。
有关提供有关文档反馈或自行更新的信息,请参阅“贡献文档”。
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菜单访问您的组织和存储库。
接下来要去哪里
-
在“入门”中尝试一下演练。
-
深入研究Docker Labs示例演练和源代码。
-
有关Docker命令行界面(CLI)命令的摘要,请参阅《 Docker CLI参考指南》。