Mac版Docker桌面入门

预计阅读时间: 16分钟

欢迎使用Docker桌面!

Mac版Docker桌面部分包含有关Docker桌面社区稳定版的信息。有关Edge版本中可用功能的信息,请参阅Edge版本说明 。有关Docker Desktop Enterprise(DDE)版本的信息,请参阅Docker Desktop Enterprise

Docker是用于创建容器化应用程序的完整开发平台。Docker Desktop是在Mac上开始使用Docker的最佳方法。

请参阅安装Docker桌面以获取下载信息,系统要求和安装说明。

检查版本

确保您的版本的dockerdocker-compose ,和docker-machine是最新的更新和兼容Docker.app 。如果运行的是不同版本,则输出可能会有所不同。

$ docker --version
Docker version 19.03, build c97c6d6

探索应用程序

  1. 打开命令行终端,然后通过运行简单的Docker映像hello-world来测试安装是否正常:

    $ docker run hello-world
    
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    ca4f61b1923c: Pull complete
    Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ...
    
  2. 启动Dockerized Web服务器。就像上面的hello-world映像一样,如果在本地找不到该映像,则Docker将其从Docker Hub中拉出。

    $ docker run --detach --publish=80:80 --name=webserver nginx
    
  3. 在Web浏览器中,转到http://localhost/以查看nginx主页。由于我们指定了默认的HTTP端口,因此无需在URL末尾附加:80

    nginx主页

    早期的beta版本使用docker作为主机名来构建URL。现在,端口在VM的专用IP地址上公开,并转发给localhost (未设置其他主机名)。

  4. 在Web服务器运行时查看容器的详细信息(使用docker container lsdocker ps ):

    $ docker container ls
    CONTAINER ID   IMAGE   COMMAND                  CREATED              STATUS              PORTS                         NAMES
    56f433965490   nginx   "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   webserver
    
  5. 使用以下命令停止并删除容器和图像。使用“ all”标志( --all-a )查看已停止的容器。

    $ docker container ls
    $ docker container stop webserver
    $ docker container ls -a
    $ docker container rm webserver
    $ docker image ls
    $ docker image rm nginx
    

优先

选择Docker菜单鲸鱼菜单 >菜单栏中的首选项 ,并配置以下所述的运行时选项。

Docker上下文菜单

一般

优先

常规选项卡上,您可以配置何时启动和更新Docker:

  • 登录时启动Docker Desktop :打开会话时自动启动Docker Desktop。

  • 自动检查更新 :默认情况下,Docker Desktop自动检查更新并在更新可用时通知您。您可以随时通过从Docker主菜单中选择检查更新来手动检查更新。

  • 在Time Machine备份中包括VM :选择此选项以备份Docker Desktop虚拟机。默认情况下禁用此选项。

  • 将Docker登录名安全地存储在macOS钥匙串中 :默认情况下,Docker Desktop将您的Docker登录凭据存储在macOS钥匙串中。

  • 发送使用情况统计信息 :Docker Desktop发送诊断,崩溃报告和使用情况数据。此信息可帮助Docker改善应用程序并进行故障排除。清除复选框以退出。

资源资源

资源选项卡允许您配置CPU,内存,磁盘,代理,网络和其他资源。

高级

在“高级”选项卡上,您可以限制可用于Docker的资源。

高级首选项设置-高级

高级设置为:

CPU :默认情况下,Docker Desktop设置为使用主机上可用处理器数量的一半。要提高处理能力,请将其设置为更大的数字;减少,减少数字。

内存 :默认情况下,Docker Desktop设置为使用2 GB运行时内存,该内存是从Mac上的总可用内存分配的。要增加RAM,请将其设置为更大的数字。要减少它,请降低数字。

交换 :根据需要配置交换文件的大小。默认值为1 GB。

磁盘映像大小 :指定磁盘映像的大小

磁盘映像位置 :指定Linux卷的容器和映像的存储位置。

您也可以将磁盘映像移动到其他位置。如果尝试将磁盘映像移动到已有的映像,则会出现提示询问您是否要使用现有映像或替换现有映像。

文件共享

选择您要与容器共享的本地目录。如果项目位于/Users目录之外,则卷共享需要文件共享。在这种情况下,请共享Dockerfile和卷所在的驱动器。否则,您将file not foundcannot start service在运行时cannot start service错误。

文件共享

文件共享设置为:

  • 添加目录 :单击+并导航到要添加的目录。

  • Apply&Restart使用Docker的绑定安装( -v )功能使目录可用于容器。

    可以共享的目录有一些限制:

    • 不能共享作为已共享目录的子目录的目录。
    • 该目录不得在Docker内部存在。

有关更多信息,请参见:

代理人

Docker Desktop从macOS中检测HTTP / HTTPS代理设置,并将其自动传播到Docker和您的容器。例如,如果将代理设置设置为http://proxy.example.com ,则Docker在提取容器时将使用此代理。

代理设置

启动容器时,代理设置会传播到容器中。例如:

$ docker run -it 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_PROXYhttp_proxyno_proxy环境变量。当您的代理配置发生更改时,Docker会自动重启以获取新设置。如果您有任何容器想要在重新启动之间继续运行,则应考虑使用重新启动策略

网络

您可以配置Docker桌面网络以在虚拟专用网络(VPN)上工作。指定网络地址转换(NAT)前缀和子网掩码以启用Internet连接。

网络设置

Docker引擎

Docker Engine页面允许您配置Docker守护程序以确定容器的运行方式。

守护进程

在框中输入JSON配置文件以配置守护程序设置。有关选项的完整列表,请参阅《 Docker Engine dockerd命令行参考》

点击Apply&Restart保存设置并重启Docker Desktop。

命令行

在“命令行”页面上,您可以指定是否启用实验功能。

命令行

实验功能提供了对未来产品功能的早期访问。这些功能仅用于测试和反馈,因为它们可能在版本之间更改而不会发出警告,或者可以从将来的版本中完全删除。实验功能不得在生产环境中使用。Docker不提供对实验功能的支持。有关更多信息,请参阅实验功能

要在Docker CLI中启用实验性功能,请编辑config.json文件,并将experimental设置为enabled。

要从Docker桌面菜单启用实验性功能,请单击设置 (macOS上的首选项 )> 守护程序 ,然后选择实验性功能复选框。

在Docker Desktop Edge和Stable版本上,您都可以打开和关闭实验功能。如果您关闭实验性功能,则Docker桌面将使用当前普遍可用的Docker Engine版本。

您可以在命令行上查看是否正在运行实验模式。如果Experimentaltrue ,那么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客户端命令kubectl已包括在内,并配置为连接到本地Kubernetes服务器。如果您已经安装了kubectl并指向其他环境,例如minikube或GKE集群,请确保更改上下文,以使kubectl指向kubectl docker-for-desktop

$ kubectl config get-contexts
$ kubectl config use-context docker-desktop

如果您通过Homebrew或通过其他方法安装了kubectl ,并且遇到冲突,请删除/usr/local/bin/kubectl

  • 要启用Kubernetes支持并安装作为Docker容器运行的Kubernetes独立实例,请选择Enable Kubernetes 。要将Kubernetes设置为默认协调器 ,请默认选择将Docker堆栈部署到Kubernetes

    单击“ 应用并重新启动”以保存设置。这将实例化将Kubernetes服务器作为容器运行所需的映像,并在Mac上安装/usr/local/bin/kubectl命令。

    启用Kubernetes

    启用并运行Kubernetes后,``Docker桌面首选项''对话框的右下角将显示一个附加状态栏项目。

    安装完成

    Kubernetes的状态显示在Docker菜单中,上下文指向docker docker-desktop

    带有Kubernetes的Docker菜单

  • 默认情况下,Kubernetes容器对于诸如docker docker service ls类的命令是隐藏的,因为不支持手动管理它们。要使其可见,请选择显示系统容器(高级) ,然后单击应用并重新启动 。大多数用户不需要此选项。

  • 要随时禁用Kubernetes支持,请清除“ 启用Kubernetes”复选框。Kubernetes容器将停止并删除,并且/usr/local/bin/kubectl命令也将删除。

    有关将Kubernetes与Docker Desktop集成使用的更多信息,请参阅在Kubernetes上部署

重启

重置和重启选项

在Docker Desktop Mac上, `` 疑难解答''菜单中提供了``重启Docker桌面''`` 重置为出厂默认值''以及其他重置选项。

有关重置选项的信息,请参阅日志和故障排除

添加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应用程序启动时,它将Mac上的~/.docker/certs.d文件夹复制到Moby(Docker Desktop xhyve虚拟机)上的/etc/docker/certs.d目录。

  • 您需要在对钥匙串或~/.docker/certs.d目录进行任何更改后重新启动Docker Desktop,以使更改生效。

  • 该注册表不能被列为不安全的注册表 (请参阅Docker Daemon )。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附带了用于启用dockerdocker-machinedocker-compose命令的脚本。完成脚本可以在Docker.app中的Contents/Resources/etc/目录中找到,并且可以安装在Bash和Zsh中。

重击

Bash 内置了对完成的支持要激活Docker命令的完成,需要将这些文件复制或bash_completion.d/链接到您的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-machine.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-machine
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命令的完成功能,需要将这些文件复制或符号链接到Zsh site-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-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

提供反馈并获得帮助

要获得社区的帮助,请查看当前用户主题,加入或开始讨论,然后登录到我们的Docker Desktop for Mac论坛

要报告错误或问题,请在GitHub上登录适用于Mac的 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启用两因素身份验证

启用两因素身份验证后:

  1. 转到Docker Desktop菜单,然后选择登录/创建Docker ID

  2. 输入您的Docker ID和密码,然后单击登录

  3. 成功登录后,Docker Desktop会提示您输入身份验证代码。输入手机的六位数代码,然后点击验证

Docker桌面2FA

成功通过身份验证后,您可以直接从Docker Desktop菜单访问组织和存储库。

接下来去哪里

macedge教程