1、Docker Desktop 介绍
Docker Desktop 是一种一键安装应用程序,适用于 Mac、Linux 或 Windows 环境,允许您构建、共享和运行容器化应用程序和微服务。
它提供了一个直观的 GUI ( 图形用户界面 ),允许您直接从您的机器管理容器、应用程序和映像。Docker Desktop 既可以单独使用,也可以作为 CLI 的补充工具。
2、Docker Engine 介绍
Docker Engine 是一种开源容器化技术,用于构建和容器化应用程序。Docker 引擎作为一个客户端-服务器应用程序:
- 具有长时间运行守护进程的服务器。
- 指定接口的 api,程序可以使用这些接口与 Docker 守护进程通信并向其发出指令。
- 命令行接口 ( CLI ) 客户端 docker。
CLI 使用 Docker api 通过脚本或直接的 CLI 命令来控制 Docker守护进程或与之交互。许多其他 Docker 应用程序使用底层 API 和 CLI。守护进程创建和管理 Docker 对象,如镜像、容器、网络和卷。
Docker Engine 可以通过 Docker Desktop 在各种 Linux 发行版、MacOS 和 Windows 上使用,也可以作为静态二进制安装。
3、Docker Desktop for Linux 和 Docker Engine 有什么区别?
Docker Desktop for Linux和Docker Engine可以并排安装在同一台机器上。Docker Desktop for Linux将容器和映像存储在虚拟机内的隔离存储位置,并提供限制其资源的控制。为Docker Desktop使用专用存储位置可以防止它干扰同一台机器上安装的Docker Engine。
虽然可以同时运行 Docker Desktop 和 Docker Engine,但在某些情况下,同时运行两者可能会导致问题。例如,当为容器映射网络端口 ( -p /——publish )时, Docker Desktop 和 Docker Engine 可能会尝试在您的机器上保留相同的端口,这可能导致冲突(“端口已经在使用”)。
我们通常建议在使用 Docker Desktop 时停止 Docker Engine,以防止 Docker Engine 消耗资源并防止如上所述的冲突。
使用如下命令停止 Docker Engine:
sudo systemctl stop docker docker.socket containerd
如果你设置了 Docker Engine 随系统自动重启,请使用如下命令:
sudo systemctl disable docker docker.socket containerd
4、如何在 Docker Desktop 和 Docker Engine 之间切换?
Docker CLI 可用于与多个 Docker Engine 交互。例如,您可以使用相同的 Docker CLI 来控制本地Docker Engine和远程运行在云中的 Docker Engine 实例。Docker 上下文允许你在Docker Engine实例之间切换。
在安装 Docker Desktop 时,会创建一个专用的 desktop-linux 上下文来与 Docker Desktop 交互。在启动 Docker Desktop 时,会自动设置自己的上下文作为当前上下文。这意味着后续的 Docker CLI 命令将以 Docker Desktop 为目标。在关机或 Docker Desktop 退出后,将当前上下文重置为 default 上下文。
使用docker context ls命令查看机器上可用的上下文。当前上下文用星号 ( * ) 标注;
docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ...
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock ...
desktop-linux unix:///home/<user>/.docker/desktop/docker.sock ...
如果您在同一台机器上安装了 Docker Desktop 和 Docker Engine,您可以运行Docker context use命令在 Docker Desktop 和 Docker Engine 上下文中进行切换。
使用default上下文与Docker Engine交互:
docker context use default
default
Current context is now "default"
使用desktop-linux上下文与Docker Desktop交互
docker context use desktop-linux
desktop-linux
Current context is now "desktop-linux"
关于 Docker 上下文更多详细,请参考:working-with-contexts