在 Mac 上使用 Docker Desktop:入门与技巧 – wiki基地

在 Mac 上使用 Docker Desktop:入门与技巧

Docker Desktop 是一个强大的工具,它将 Docker 容器化技术带到了 macOS 平台,让开发者能够在本地轻松构建、运行和共享容器化应用程序。本文将详细介绍如何在 Mac 上安装 Docker Desktop,进行基本操作,并分享一些实用的使用技巧。

一、 Docker Desktop 简介

Docker 是一种开源平台,用于自动化应用程序的部署、扩展和管理,通过将应用程序及其所有依赖项打包在一个称为“容器”的独立单元中。Docker Desktop for Mac 是一款易于安装的应用程序,它包含了运行 Docker 所需的所有组件,包括 Docker Engine、Docker CLI 客户端、Docker Compose、Kubernetes 以及一个直观的 GUI 界面。

为什么在 Mac 上使用 Docker Desktop?

  • 环境一致性: 确保开发、测试和生产环境的一致性,避免“在我的机器上可以运行”的问题。
  • 隔离性: 将应用程序及其依赖项与宿主机环境隔离开来,避免冲突。
  • 资源效率: 容器比虚拟机更轻量级,启动更快,占用的系统资源更少。
  • 简化开发: 快速搭建复杂的开发环境,便于团队协作和项目管理。

二、 安装 Docker Desktop

安装 Docker Desktop 非常简单,只需几个步骤:

  1. 下载安装包: 访问 Docker 官方网站 https://docs.docker.com/desktop/install/mac-install/。根据你的 Mac 芯片类型(Intel 或 Apple Silicon)下载对应的 .dmg 安装文件。
  2. 运行安装程序: 双击下载的 .dmg 文件,将 Docker 图标拖拽到“Applications”文件夹中。
  3. 启动 Docker Desktop: 从“Applications”文件夹或 Launchpad 启动 Docker Desktop。首次启动时,它会要求必要的权限并进行一些初始设置。你可能需要输入系统密码。
  4. 完成设置: 按照屏幕上的提示完成 Docker Desktop 的设置。它会在菜单栏显示一个 Docker 图标,表示 Docker Engine 正在运行。当图标稳定后,说明 Docker 已准备就绪。

三、 Docker Desktop 基本用法

现在 Docker Desktop 已经安装并运行,我们可以开始进行一些基本操作。

1. 验证安装

打开 macOS 的 Terminal(终端),运行以下命令来验证 Docker 是否正确安装并正在运行:

bash
docker --version
docker run hello-world

如果看到 Hello from Docker! 的信息,说明你的 Docker 环境已经搭建成功。

2. 管理 Docker Desktop

Docker Desktop 的菜单栏图标提供了一个方便的 GUI 界面来管理 Docker:

  • 启动/停止 Docker Engine: 从菜单栏图标中选择 “Quit Docker Desktop” 可以停止 Docker Engine,再次点击图标启动。
  • 设置: 进入 “Settings” (或 “Preferences”) 可以配置资源分配、代理、Kubernetes 等。
  • 故障排除: “Troubleshoot” 选项提供了重置、清理缓存和诊断等功能。

3. 运行你的第一个容器

让我们尝试运行一个 Nginx Web 服务器容器:

bash
docker run -d -p 80:80 --name my-nginx nginx:latest

  • -d: 后台运行容器。
  • -p 80:80: 将宿主机的 80 端口映射到容器的 80 端口。这样你就可以通过 http://localhost 访问 Nginx。
  • --name my-nginx: 给容器指定一个名字,方便后续管理。
  • nginx:latest: 使用最新版本的 Nginx 镜像。如果本地没有该镜像,Docker 会自动从 Docker Hub 拉取。

打开浏览器访问 http://localhost,你应该能看到 Nginx 的欢迎页面。

4. 管理容器和镜像

查看正在运行的容器:

bash
docker ps

查看所有容器(包括已停止的):

bash
docker ps -a

停止容器:

bash
docker stop my-nginx

启动容器:

bash
docker start my-nginx

删除容器:

bash
docker rm my-nginx

查看所有本地镜像:

bash
docker images

删除镜像:

bash
docker rmi nginx:latest

四、 Docker Desktop 实用技巧

1. 资源分配优化

通过 Docker Desktop 的 “Settings” -> “Resources” 可以配置分配给 Docker Engine 的 CPU、内存和磁盘空间。根据你的开发需求和 Mac 的硬件配置进行调整,可以显著提高容器的性能或避免系统卡顿。

  • CPU / Memory: 如果你的容器应用需要大量计算或内存,适当增加这些资源。反之,如果资源不足导致 Mac 运行缓慢,可以适当减少。
  • Disk Image: Docker 镜像和容器数据会存储在一个虚拟磁盘映像中。可以通过 “Disk Image Location” 更改存储位置,并通过 “Disk Image Size” 调整大小。

2. 卷(Volumes)挂载

卷挂载允许你将 Mac 上的目录直接映射到容器内部,实现数据持久化和方便的开发工作流。

示例:开发一个 Node.js 应用

假设你的 Node.js 项目在 ~/my-node-app 目录。

  1. 创建 Dockerfile (如果需要):
    dockerfile
    # Dockerfile
    FROM node:18-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["npm", "start"]

  2. 在项目根目录构建镜像:
    bash
    cd ~/my-node-app
    docker build -t my-node-app .

  3. 运行容器并挂载卷:
    bash
    docker run -p 3000:3000 -v ~/my-node-app:/app --name node-dev my-node-app

    -v ~/my-node-app:/app 将宿主机的 ~/my-node-app 目录挂载到容器内的 /app 目录。这样,你在 Mac 上修改代码时,容器内的代码也会同步更新(如果你的应用支持热重载),无需重新构建镜像。

3. Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 docker-compose.yml 文件,你可以配置应用服务、网络和卷。

示例 docker-compose.yml 文件:

“`yaml

docker-compose.yml

version: ‘3.8’
services:
web:
build: .
ports:
– “80:80”
volumes:
– .:/app # 挂载当前目录到容器的 /app
db:
image: postgres:13
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
– db-data:/var/lib/postgresql/data

volumes:
db-data:
“`

运行 Docker Compose:

docker-compose.yml 所在的目录运行:

bash
docker compose up -d

这将启动 webdb 两个服务。

4. Kubernetes 集成

Docker Desktop 内置了对 Kubernetes 的支持。在 “Settings” -> “Kubernetes” 中勾选 “Enable Kubernetes”,就可以在本地运行一个单节点 Kubernetes 集群,这对于开发和测试 Kubernetes 应用非常方便。

5. 清理不使用的资源

长时间使用 Docker,可能会积累大量的停止容器、未使用的镜像和卷,占用宝贵的磁盘空间。

清理所有未使用的 Docker 对象(慎用):

bash
docker system prune

这个命令会删除所有停止的容器、未使用的网络、悬空镜像和构建缓存。你可以添加 -a 标志来删除所有未被任何容器使用的镜像,即使它们不是“悬空”的。

清理悬空卷:

bash
docker volume prune

五、 常见问题与故障排除

  • Docker Desktop 无法启动或卡住:
    • 尝试从菜单栏图标中选择 “Troubleshoot” -> “Restart Docker Desktop”。
    • 如果不行,可以尝试 “Troubleshoot” -> “Reset to factory defaults” (会删除所有镜像和容器)。
  • 容器无法访问外部网络或宿主机:
    • 检查 Docker Desktop 的网络设置。
    • 确保没有防火墙阻止 Docker 的通信。
  • 资源占用过高:
    • 在 “Settings” -> “Resources” 中调整 CPU 和内存的分配。
    • 定期清理不使用的容器、镜像和卷。

总结

Docker Desktop 是 Mac 上容器化开发的利器。通过本文的介绍,你应该已经掌握了它的安装、基本用法和一些实用技巧。熟练运用 Docker Desktop 将极大地提高你的开发效率,让你的应用程序开发和部署变得更加顺畅。随着你对 Docker 的深入使用,你会发现更多强大的功能和工作流程。

滚动至顶部