【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示

文章目录

    • 前言
      • [1. Docker 是什么?](#1. Docker 是什么?)
      • [2. 为什么要使用 Docker?](#2. 为什么要使用 Docker?)
    • [安装 Docker](#安装 Docker)
      • [1. 安装 Docker Desktop](#1. 安装 Docker Desktop)
      • [2. 安装 OrbStack](#2. 安装 OrbStack)
      • [3. Docker Desktop VS OrbStack](#3. Docker Desktop VS OrbStack)
      • [5. 验证安装](#5. 验证安装)
    • [使用 Docker 运行项目](#使用 Docker 运行项目)
      • [1. 克隆项目到本地](#1. 克隆项目到本地)
      • [2. 进入项目目录](#2. 进入项目目录)
      • [3. 启动容器:](#3. 启动容器:)
    • 查看运行效果
      • [1. OrbStack 中查看运行中的容器](#1. OrbStack 中查看运行中的容器)
      • [2. 访问页面](#2. 访问页面)
    • [Docker 常用命令](#Docker 常用命令)
      • [1. 镜像操作](#1. 镜像操作)
      • [2. 容器操作](#2. 容器操作)
    • 最后
    • [Docker 学习资源](#Docker 学习资源)
    • 系列教程

Mac 从 0 到 1 保姆级配置教程目录,点击即可跳转对应文章:

【🚀🚀🚀 教程开源地址】:https://github.com/tonngw/macman
【Mac 从 0 到 1 保姆级配置教程 00】 - 教程说明
【Mac 从 0 到 1 保姆级配置教程 01】 - 安装无敌的 brew
【Mac 从 0 到 1 保姆级配置教程 02】 - 你真的会装软件吗?内含常用软件安装教程
【Mac 从 0 到 1 保姆级配置教程 03】 - 安装配置美化 iterm2 一气呵成,Mac 下经久不衰的终端
【Mac 从 0 到 1 保姆级配置教程 04】 - 手把手教你安装配置 zsh 和 oh my zsh,一看就会!
【Mac 从 0 到 1 保姆级配置教程 05】 - 全网最详细 20+ 张图逐帧安装 powerlevel10k zsh 主题(上)
【Mac 从 0 到 1 保姆级配置教程 05】 - 全网最详细 20+ 张图逐帧安装 powerlevel10k zsh 主题(下)
【Mac 从 0 到 1 保姆级配置教程 06】 - iterm2 常用快捷键和 zsh 别名配置
【Mac 从 0 到 1 保姆级配置教程 07】 - 配置 Git、GitHub、SSH 免密提交以及 Git 常用基础命令
【Mac 从 0 到 1 保姆级配置教程 08】 - 快速配置 Neovim、LazyVim 以及常用开发环境,如果之前有人这么写就好了
【Mac 从 0 到 1 保姆级配置教程 09】 - 快速配置终端复用工具 tmux 和 oh-my-tmux
【Mac 从 0 到 1 保姆级配置教程 10】 - sdkman 几分钟搞定 Java 开发环境,一定不要错过啊!
【Mac 从 0 到 1 保姆级配置教程 11】 - Mac 基础配置 Finder、触控板、常用快捷键等
【Mac 从 0 到 1 保姆级配置教程 12】- 安装配置万能的编辑器 VSCode 以及常用插件
【Mac 从 0 到 1 保姆级配置教程 13】- 详细介绍一款 Mac 下无敌好用的宝藏软件 RayCast
【Mac 从 0 到 1 保姆级配置教程 14】- 那些 Mac 非常常用的高效率工具,肯定有你不知道的
【Mac 从 0 到 1 保姆级配置教程 15】- Python 环境一键安装与配置,就是这么的丝滑

持续更新中...

前言

1. Docker 是什么?

Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个可移植的容器 (container) 中。这些容器可以在任何支持 Docker 的环境中运行,确保应用程序在不同环境中的一致性。

2. 为什么要使用 Docker?

回想一下我们学习编程的时候最折磨的就是环境问题,比如安装依赖、配置环境变量、兼容性等等。Docker 就是为了解决这个问题而生的,有了 Docker 之后我们就可以直接使用别人在 Dcoker Hub 仓库打包好的镜像 (image) 运行在我们的容器 (container) 中,大大地减轻了很多的人力和时间成本。

注:Dcoker Hub 仓库是 Docker 官方维护的镜像仓库,里面有很多开源软件的镜像,包括 MySQL、Redis、MongoDB、Nginx 等等。

安装 Docker

通常我们安装提供 Docker 管理工具的软件包会帮我们把 Docker 环境安装好,常用的工具有 Docker Desktop、OrbStack。

1. 安装 Docker Desktop

在官网找到对应 Mac 版本的安装包下载安装即可:https://www.docker.com/products/docker-desktop

2. 安装 OrbStack

通过 brew 安装 OrbStack 也很简单,只需要在终端输入以下命令即可:

bash 复制代码
brew install --cask orbstack

或者在官网下载安装包进行安装:https://www.orbital.io/download,我们发现 OrbStack 只有 Mac 版本,它是 Mac 下特有的一款软件。

3. Docker Desktop VS OrbStack

  1. Docker Desktop 是官方产品,功能完整,社区强大,但是内存磁盘资源占用大,启动慢。
  2. OrbStack 是第三方产品,基础功能完善,界面简洁,资源占用小,启动快,面向个人开发者免费。
  3. 个人使用可以尝试 OrbStack,生产环境推荐 Docker Desktop。

5. 验证安装

bash 复制代码
docker --version

如果安装成功,会输出 Docker 版本号。

我最近在使用 OrbStack,下面以 OrbStack 为例进行演示。

使用 Docker 运行项目

我们通过官方的一个样例项目来看一下如何在本地把它跑起来,https://github.com/dockersamples/example-voting-app#

1. 克隆项目到本地

bash 复制代码
git clone git@github.com:dockersamples/example-voting-app.git

2. 进入项目目录

bash 复制代码
cd example-voting-app

3. 启动容器:

bash 复制代码
docker-compose up -d

如果拉取镜像出现如下错误提示,大概率是网络原因

需要配置一下 Docker 镜像源,比如 OrbStack 在设置中进行配置,添加如下镜像源后点击 Apply,重启 OrbStack,重启才能生效:

以下镜像均已生效

json 复制代码
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}

找到一个有效的镜像源,且用且珍惜吧...

json 复制代码
{
  "registry-mirrors" : [
    "https://docker.xuanyuan.me"
  ]
}

重新执行命令,拉取的内容较多,需要耐心等待一会,执行成功后,我们可以看到如下输出:

如果这里提示端口 8081 被占用,查看一下占用端口的进程

复制代码
lsof -i tcp:8081

我的是被 OrbStack 占用了,没法杀掉进程,所以需要修改 docker-compose.yml 文件中的端口映射,比如把 8081 改成 8082

如果你的进程可以杀掉,直接 kill -9 进程号 即可。

注:这个过程还是需要我们能够定位问题解决问题,比如网络问题、端口占用等等。这个例子也是我们现实场景中的一个真实显照。

查看运行效果

1. OrbStack 中查看运行中的容器

这是样例工程的项目架构

包括 Postgres 数据库、Redis 缓存、NodeJS 后端服务、Python 前端服务、Worker 任务。

2. 访问页面

  1. 投票页面,访问 http://localhost:8080,可以选择选项进行投票,每个客户端只能投票一次。
  1. 统计页面,访问 http://localhost:8082,查看投票结果。

Docker 常用命令

以下是之前学习的部分笔记整理,如果是初学者建议根据文章最后提供的资源进行系统性学习。

1. 镜像操作

docker 仓库中的每个镜像都是由 name:tag - 应用名称:版本号 构成的。

可以在 Docker 中央仓库中查找想要的镜像 https://hub.docker.com/

  • docker pull ubuntu:20.04:拉取一个镜像
  • docker iamges:查看本地所有的镜像
  • docker rmi ubuntu:20.04 :删除指定镜像,rmi - remvoe image
  • docker save -o ubuntu_20_04.tar ubuntu:20.4:将镜像 ubuntu:20.4 导出到本地文件 ubuntu_20_04.tar
    默认导出后其他用户是没有可读权限的,需要给它加一个可读权限 chmod +r ubuntu_20_04.tar
  • docker load -i ubuntu_20_04.tar :将镜像 ubuntu:20.04 从本地文件 ubuntu_20_04.tar 中加载出来。
    docker savedocker load 配合可以实现 docker 镜像在不同服务器之间的迁移。

2. 容器操作

根据一个镜像可以创建多个容器。

说明:

  • [container] 表示可选,可以不写
  • CONTAINER:可以是容器 name 或者是容器 id

命令:

  • docker [container] create -it ubuntu:20.04:利用镜像 ubuntu:20.04 创建一个容器
  • docker ps -a:查看本地所有的容器
    • docker ps:只显示正在运行的容器
  • docker [container] start CONTAINER:启动容器
  • docker [container] stop CONTAINER:停止容器
  • docker [container] restart CONTAINER:重启容器
  • docker [container] run -itd ubuntu:20.04:创建并启动一个容器
    • docker [container] run -it ubuntu:20.04 创建并直接进入容器 ,少了参数 d
  • docker [container] attach CONTAINER:进入容器
    • 退出后不关闭容器(挂起容器): Ctrl + p + Ctrl + q推荐使用
    • 退出后关闭容器:Ctrl + d
  • docker [container] exec CONTAINER COMMAND:在容器中执行命令
    • 可以把 docker 容器看成一个全新的 Linux 服务器。 ls 查看根目录就是 linux 文件目录
  • docker [container] rm CONTAINER:删除容器
  • docker container prune:删除所有已停止的容器,prune - 删去
  • docker export -o xxx.tar CONTAINER:将容器 CONTAINER 导出到本地文件 xxx.tar
  • docker import xxx.tar image_name:tag:将本地文件 xxx.tar 导入成镜像,并将镜像重命名为 image_name:tag
  • docker exprot/importdocker save/load 的区别
    • export/impot 会丢失历史记录和元数据信息,仅保存容器当时的快照状态。
    • save/load 会保存完整记录,体积更大。
  • docker top CONTAINER:查看某个容器内的所有进程
  • docker stats:查看所有容器的统计信息,CPU、内存、存储、网络等信息。
    • Ctrl + c 结束查看
  • docker cp xxx CONTAINER:xxxdocker cp CONTAINER:xxx xxx:在本地和容器之间复制文件
  • docker rename CONTAINER1 CONTAINER2:重命名容器
  • docker update CONTAINER --memory 500M:修改容器大小限制

最后

如果感觉文章对你有所帮助,请三连支持一下博主哦,感谢大家~

最重要的是给博主留一个大大的关注,你的支持是我更新的最大动力!

这个系列会继续更新下去的!

Docker 学习资源

系列教程

【🚀🚀🚀 教程开源地址】:https://github.com/tonngw/macman
【Mac 从 0 到 1 保姆级配置教程 00】 - 教程说明
【Mac 从 0 到 1 保姆级配置教程 01】 - 安装无敌的 brew
【Mac 从 0 到 1 保姆级配置教程 02】 - 你真的会装软件吗?内含常用软件安装教程
【Mac 从 0 到 1 保姆级配置教程 03】 - 安装配置美化 iterm2 一气呵成,Mac 下经久不衰的终端
【Mac 从 0 到 1 保姆级配置教程 04】 - 手把手教你安装配置 zsh 和 oh my zsh,一看就会!
【Mac 从 0 到 1 保姆级配置教程 05】 - 全网最详细 20+ 张图逐帧安装 powerlevel10k zsh 主题(上)
【Mac 从 0 到 1 保姆级配置教程 05】 - 全网最详细 20+ 张图逐帧安装 powerlevel10k zsh 主题(下)
【Mac 从 0 到 1 保姆级配置教程 06】 - iterm2 常用快捷键和 zsh 别名配置
【Mac 从 0 到 1 保姆级配置教程 07】 - 配置 Git、GitHub、SSH 免密提交以及 Git 常用基础命令
【Mac 从 0 到 1 保姆级配置教程 08】 - 快速配置 Neovim、LazyVim 以及常用开发环境,如果之前有人这么写就好了
【Mac 从 0 到 1 保姆级配置教程 09】 - 快速配置终端复用工具 tmux 和 oh-my-tmux
【Mac 从 0 到 1 保姆级配置教程 10】 - sdkman 几分钟搞定 Java 开发环境,一定不要错过啊!
【Mac 从 0 到 1 保姆级配置教程 11】 - Mac 基础配置 Finder、触控板、常用快捷键等
【Mac 从 0 到 1 保姆级配置教程 12】- 安装配置万能的编辑器 VSCode 以及常用插件
【Mac 从 0 到 1 保姆级配置教程 13】- 详细介绍一款 Mac 下无敌好用的宝藏软件 RayCast
【Mac 从 0 到 1 保姆级配置教程 14】- 那些 Mac 非常常用的高效率工具,肯定有你不知道的
【Mac 从 0 到 1 保姆级配置教程 15】- Python 环境一键安装与配置,就是这么的丝滑

持续更新中...

相关推荐
安替-AnTi22 分钟前
AI急速搭建网站:Gemini、Bolt或Jules、GitHub、Cloudflare Pages实战全流程!
ai·github·cloudflare·bolt·gemini·快速搭建网站
yuxb732 小时前
Docker学习笔记(二):镜像与容器管理
笔记·学习·docker
Delphi菜鸟3 小时前
docker 部署RustDesk服务
运维·docker·容器
Sweety丶╮7943 小时前
【Kubernetes】知识点总结5
云原生·容器·kubernetes
love530love4 小时前
【保姆级教程】阿里 Wan2.1-T2V-14B 模型本地部署全流程:从环境配置到视频生成(附避坑指南)
人工智能·windows·python·开源·大模型·github·音视频
今晚务必早点睡4 小时前
从零到上线:Docker、Docker Compose 与 Runtime 安装部署全指南(含实战示例与应用场景)
运维·docker·容器
cxr8285 小时前
Claude Code PM 深度实战指南:AI驱动的GitHub项目管理与并行协作
人工智能·驱动开发·github
携欢6 小时前
CodeQL(Mac)安装与测试(Visual Studio)简明指南
ide·vscode·macos
zyplanke6 小时前
Kubernetes(四):Service
云原生·容器·kubernetes·k8s
HashData酷克数据6 小时前
官宣:Apache Cloudberry (Incubating) 2.0.0 发布!
数据库·开源·apache·cloudberry