Docker Desktop的安装

本文档详细介绍了如何在Ubuntu 22.04或21.10上安装DockerDesktop,包括设置Docker版本库、安装DockerEngine、配置用户组、启动和升级DockerDesktop,以及登录和使用Docker。安装过程中涉及的步骤包括安装前的系统要求检查、卸载预览版或Beta版Docker、下载DEB包、使用apt安装、启动和登录验证,以及使用和升级DockerDesktop。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果安装了 Docker Desktop,则已经安装了完整的 Docker,包括 Compose。

一、在 Ubuntu 上安装 Docker Desktop

DEB 包

先决条件

要成功安装 Docker Desktop,您必须:

  • 满足系统要求
  • 拥有 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10 的 64 位版本。x86_64(或amd64)架构支持 Docker Desktop 。
  • 对于非 Gnome 桌面环境,必须安装 gnome-terminal
 sudo apt install gnome-terminal
  • 卸载 Docker Desktop for Linux 的技术预览版或 beta 版。运行以下命令:
 sudo apt remove docker-desktop

要彻底清理,请删除位于 $HOME/.docker/desktop 的配置和数据文件​​​​​、位于 /usr/local/bin/com.docker.cli 的符号链接,并运行以下命令清除剩余的 systemd 服务文件:

 rm -r $HOME/.docker/desktop
 sudo rm /usr/local/bin/com.docker.cli
 sudo apt purge docker-desktop

注:如果您已安装 Docker Desktop for Linux 技术预览版或 beta 版,您需要删除由这些软件包生成的所有文件,例如

~/.config/systemd/user/docker-desktop.service
~/.local/share/systemd/user/docker-desktop.service

安装 Docker Desktop

在 Ubuntu 上安装 Docker Desktop 的推荐方法,分三步:

  1. 设置Docker 的包版本库

  2. 下载最新的DEB 包

  3. 使用 apt 安装软件包

使用版本库安装

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 版本库。之后,您可以从版本库安装和更新 Docker。

1、设置Docker 的包版本库

1)设置版本库

  1. 允许apt通过 HTTPS 使用存储库更新apt包索引并安装包:

    $ sudo apt-get update
    
    $ sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
  2. 添加 Docker 的官方 GPG 密钥:

    $ sudo mkdir -p /etc/apt/keyrings
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  3. 使用以下命令设置版本库:

    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2)安装 Docker Engine

  1. 更新apt包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose,或者进入下一步安装特定版本:

     $ sudo apt-get update
     $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    运行 apt-get update 时收到 GPG 错误?

    您的默认 umask 可能设置不正确,导致无法检测到 repo 的公钥文件。运行以下命令,然后再次尝试更新您的存储库:

    sudo chmod a+r /etc/apt/keyrings/docker.gpg
  2. 要安装特定版本的 Docker Engine,请在 repo 中列出可用版本,然后选择并安装:

    a. 列出您的版本库中可用的版本:

    $ apt-cache madison docker-ce
    
    docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
    docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
    docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
    docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
    

    b. 使用第二列中的版本字符串安装特定版本,例如 5:20.10.16~3-0~ubuntu-jammy 。

    $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
    
  3. 通过运行 hello-world 镜像来验证 Docker Engine是否已正确安装。

    $ sudo service docker start
    $ sudo docker run hello-world
    

    此命令下载测试镜像并在容器中运行它。当容器运行时,它会打印一条消息并退出。

Docker Engine已安装并正在运行。该docker组已创建,但未向其中添加任何用户。需要使用sudo来运行 Docker 命令。

3)添加用户组(以非root用户身份管理Docker)

Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归root用户所有,其他用户只能使用sudo。 Docker 守护程序始终以root用户身份运行。

如果您不想在docker命令前加上sudo,请创建一个名为 Unix 组docker并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供docker组成员访问的 Unix 套接字。

要创建docker组并添加您的用户:

  1. 创建docker组。

    $ sudo groupadd docker
  2. 将您的用户添加到docker组中。

    $ sudo usermod -aG docker $USER
  3. 注销并重新登录,以便重新评估您的组成员身份。

    如果在虚拟机上进行测试,可能需要重新启动虚拟机才能使更改生效。

    在桌面Linux环境(如X Windows)上,完全注销会话,然后重新登录

    在 Linux 上,您还可以运行以下命令来激活对组的更改:

    $ newgrp docker
  4. 验证您可以在没有sudo的情况下运行docker命令。

    $ docker run hello-world

    此命令下载测试镜像并在容器中运行它。当容器运行时,它会打印一条消息并退出。

    如果在将用户添加到Docker组之前使用sudo运行Docker CLI命令,您可能会看到以下错误,这表明您的~/.docker/目录是由于命令没有sudo权限导致的。

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

要解决此问题,请删除~/.docker/目录(它会自动重新创建,但会丢失任何自定义设置),或使用以下命令更改其所有权和权限:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

4)将 Docker 配置为开机启动

大多数当前的 Linux 发行版(RHEL、CentOS、Fedora、Debian、Ubuntu 16.04 和更高版本)用于systemd管理系统启动时启动的服务。在 Debian 和 Ubuntu 上,Docker 服务默认配置为在启动时启动。要在启动时为 Docker 和 Containerd自动启动其他发行版,请使用以下命令:

$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

要禁用此行为,请改用disable

$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service

2、下载最新的DEB 包

3、使用 apt 安装软件包

$ sudo apt-get update
$ sudo apt-get install ./docker-desktop-<version>-<arch>.deb

注意:在安装过程结束时,由于 apt安装下载的包而显示错误。您可以忽略此错误消息。

N: Download is performed unsandboxed as root, as file '/home/user/Downloads/docker-desktop.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

通过deb包中所包含的安装脚本在安装后完成了几步配置:

安装脚本:

  • 设置 Docker Desktop 二进制文件的功能以映射特权端口并设置资源限制。
  • 将 Kubernetes 的 DNS 名称添加到 /etc/hosts.
  • 创建从 /usr/bin/docker 到 /usr/local/bin/com.docker.cli 的链接。

4、启动 Docker Desktop

要启动 Docker Desktop for Linux,请在 Applications菜单上搜索Docker Desktop并将其打开。这将启动鲸鱼菜单图标并打开 Docker Dashboard,报告 Docker Desktop 的状态。

或者,打开终端并运行:

$ systemctl --user start docker-desktop

当 Docker Desktop 启动时,它会创建一个Docker CLI 可以用作目标的专用上下文,并将其设置为当前使用的上下文。这是为了避免与可能在 Linux 主机上运行并使用默认上下文的本地 Docker 引擎发生冲突。关闭时,Docker Desktop 会将当前上下文重置为前一个上下文。

Docker Desktop 安装程序更新主机上的 Docker Compose 和 Docker CLI 二进制文件。它安装了 Docker Compose V2,并让用户可以选择从“设置”面板将其链接为 docker-compose。Docker Desktop安装了新的Docker CLI二进制文件,该文件在 /usr/local/bin 中包含云集成功能,并在 /usr/local/bin/com.docker.cli 中创建到旧Docker CLI的符号链接。

成功安装 Docker Desktop 后,您可以通过运行以下命令检查这些二进制文件的版本:

注意:如在当前终端执行以下命令没问题,而换一个新的终端执行docker version时发现有权限问题,重启系统即可。

$ docker compose version
Docker Compose version v2.12.0

$ docker --version
Docker version 20.10.20, build 9fdeb9c

$ docker version
Client: Docker Engine - Community
 Cloud integration: v1.0.29
 Version:           20.10.20
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        9fdeb9c
 Built:             Tue Oct 18 18:20:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.20
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       03df974
  Built:            Tue Oct 18 18:18:08 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0


要启用 Docker Desktop 在登录时启动,请从 Docker 菜单中选择 设置>常规>登录时启动 Docker Desktop

或者,打开终端并运行:

$ systemctl --user enable docker-desktop

要停止 Docker Desktop,请单击鲸鱼菜单托盘图标以打开 Docker 菜单并选择退出 Docker Desktop

或者,打开终端并运行:

$ systemctl --user stop docker-desktop

5、升级 Docker Desktop

发布 Docker Desktop 的新版本后,Docker UI 会显示通知。每次要升级并运行 Docker Desktop 时,都需要下载新包:

$ sudo apt-get install ./docker-desktop-<version>-<arch>.deb

 6、登录并开始

快速入门指南

安装Docker Desktop后,将启动快速入门指南。它包括一个简单的练习,构建一个示例Docker镜像,将其作为容器运行,将镜像推送到Docker Hub并保存。

要按需运行快速入门指南,请选择,然后选择快速入门指南。

 有关更详细的指南,请参阅 Get started.

登录 Docker 桌面

建议使用Docker Desktop 右上角的登录/创建 ID选项进行身份验证。

登录后,可以直接从 Docker Desktop 访问 Docker Hub 存储库。

与匿名用户相比,经过身份验证的用户获得更高的拉取率限制。例如,如果您通过了身份验证,则每 6 小时您会获得 200 次拉取,而匿名用户的每个 IP 地址每 6 小时会获得 100 次拉取。有关详细信息,请参阅下载速率限制

 两因素身份验证

Docker Desktop 使您能够使用双重身份验证登录 Docker Hub。双重身份验证在访问 Docker Hub 帐户时提供了额外的安全层。

在通过 Docker Desktop 登录 Docker Hub 帐户之前,您必须在 Docker Hub 中启用双重身份验证。有关说明,请参阅为 Docker Hub 启用双重身份验证

 启用双因素身份验证后:

  • 转到 Docker 桌面菜单,然后选择登录/创建 Docker ID

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

  • 成功登录后,Docker Desktop 会提示您输入验证码。输入手机中的六位数代码,然后单击验证

 Linux 用户的凭据管理

Docker Desktop 依赖于pass(通行证)将凭据存储在 gpg2 加密文件中。在从 Docker 仪表板或 Docker 菜单登录 Docker Hub 之前,您必须初始化pass。如果您尚未初始化pass Docker Desktop则会显示警告。 

您可以使用 gpg 密钥初始化传递。要生成 gpg 密钥,请运行:

$ gpg --generate-key
...
GnuPG needs to construct a user ID to identify your key.

Real name: Fbbqt
Email address: fbbqt@example.com
You selected this USER-ID:
    "Fbbqt <fbbqt@example.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
...
pub   rsa3072 2022-03-31 [SC] [expires: 2024-03-30]
      7865BA9185AFA2C26C5B505669FC4F36530097C2
uid                      Fbbqt <fbbqt@example.com>
sub   rsa3072 2022-10-21 [E] [expires: 2024-10-20]

要初始化pass,请运行:

fbbqt@ubuntu:~$ pass init 7865BA9185AFA2C26C5B505669FC4F36530097C2
mkdir: created directory '/home/fbbqt/.password-store/'
Password store initialized for 7865BA9185AFA2C26C5B505669FC4F36530097C2

初始化pass后,您可以登录Docker Dashboard 并拉取您的私有镜像。当 Docker CLI 或 Docker Desktop 使用凭据时,可能会弹出用户提示输入您在 gpg 密钥生成期间设置的密码。

$ docker pull fbbqt/privateimage
Using default tag: latest
latest: Pulling from fbbqt/privateimage
3b9cc81c3203: Pull complete 
Digest: sha256:3c6b73ce467f04d4897d7a7439782721fd28ec9bf62ea2ad9e81a5fb7fb3ff96
Status: Downloaded newer image for fbbqt/privateimage:latest
docker.io/fbbqt/privateimage:latest

  

### Docker Desktop on Linux Installation and Usage #### Prerequisites for Installing Docker Desktop on Linux To install Docker Desktop, the system must meet certain requirements. The operating system should be a recent version of one of these distributions: Ubuntu (18.04 LTS or later), Fedora (33 or later), Debian (10 or later). Additionally, ensure that virtualization is enabled in BIOS/UEFI settings because it's required by HyperKit which Docker Desktop uses to create VMs[^1]. #### Installation Steps Overview The process involves downloading Docker Desktop from the official website, installing dependencies like HyperKit, and then running an installer package specific to your distribution. For instance, on **Ubuntu**, after ensuring prerequisites are met: ```bash sudo apt-get update && sudo apt-get upgrade -y ``` Install necessary packages including `hyperkit`, `vfio-vsock` kernel module support via APT repository updates as per documentation guidelines provided at Docker’s site. Once all setup scripts complete successfully without errors, launch Docker Desktop through GUI application menus or command line using `com.docker.desktop`. #### Using Docker with Volumes and Containers After successful installation, interacting with containers becomes straightforward. For example, mounting local directories into container environments can be achieved using `-v` flag during runtime commands such as shown below where `${PWD}` represents current working directory path outside container while `/data` specifies internal mount point inside container filesystem structure[^3]: ```bash docker run -d --rm --name qtumd_node1 \ --network=qtum_network \ -v ${PWD}/node1_qtumd.conf:/home/qtum/qtum.conf:ro \ -v ${PWD}/node1_data:/data \ cryptominder/qtum:latest qtumd ``` This command starts a new detached (`-d`) session named `qtumd_node1` within network namespace `qtum_network`. It mounts two volumes read-only configuration file and writable data storage area respectively before executing entrypoint script defined under image tag `cryptominder/qtum:latest`. #### Accessing Running Containers Interacting directly with processes running inside active sessions requires attaching terminal interface linked against target environment. This action utilizes `exec` subcommand alongside specifying shell interpreter type intended for interactive use cases as demonstrated hereunder connecting bash instance attached to previously created service node[^2]: ```bash docker exec -it teamtalk /bin/bash ``` --related questions-- 1. What are common troubleshooting steps when facing issues launching Docker Desktop? 2. How does enabling virtualization improve performance for applications hosted within Docker containers? 3. Can you explain how networks function between host machines and their respective isolated guest instances managed by Docker? 4. In what scenarios would someone prefer utilizing bind mounts over anonymous volumes when configuring persistent storages across multiple services?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值