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

news2025/6/9 21:26:13

文章目录

    • 前言
      • 1. Docker 是什么?
      • 2. 为什么要使用 Docker?
    • 安装 Docker
      • 1. 安装 Docker Desktop
      • 2. 安装 OrbStack
      • 3. Docker Desktop VS OrbStack
      • 5. 验证安装
    • 使用 Docker 运行项目
      • 1. 克隆项目到本地
      • 2. 进入项目目录
      • 3. 启动容器:
    • 查看运行效果
      • 1. OrbStack 中查看运行中的容器
      • 2. 访问页面
    • Docker 常用命令
      • 1. 镜像操作
      • 2. 容器操作
    • 最后
    • 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

Docker Desktop 安装

2. 安装 OrbStack

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

brew install --cask orbstack

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

OrbStack 安装

3. Docker Desktop VS OrbStack

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

5. 验证安装

docker --version

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

docker version

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

使用 Docker 运行项目

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

1. 克隆项目到本地

git clone git@github.com:dockersamples/example-voting-app.git

2. 进入项目目录

cd example-voting-app

3. 启动容器:

docker-compose up -d

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

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

以下镜像均已生效

{
    "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"
    ]
}

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

{
  "registry-mirrors" : [
    "https://docker.xuanyuan.me"
  ]
}

Docker 镜像源配置

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

Start success

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

lsof -i tcp:8081

8081 port

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

8081 port

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

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

查看运行效果

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

这是样例工程的项目架构

System Architecture

包括 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://docs.docker.com/
  • 3 小时速通 Docker 教程:https://www.bilibili.com/video/BV1Zn4y1X7AZ
  • https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

系列教程

【🚀🚀🚀 教程开源地址】: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 环境一键安装与配置,就是这么的丝滑
持续更新中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2025-05-01-决策树算法及应用

决策树算法及应用 参考资料 GitHub - zhaoyichanghong/machine_learing_algo_python: implement the machine learning algorithms by p(机器学习相关的 github 仓库)决策树实现与应用决策树 概述 机器学习算法分类 决策树算法 决策树是一种以树状结构对数据进行划分的分类…

Redis知识体系

1. 概述 本文总结了Redis基本的核心知识体系,在学习Redis的过程中,可以将其作为学习框架,以此更好的从整体的角度去理解和学习Redis的内容和设计思想。同时知识框架带来的好处是可以帮助我们更好的进行记忆,在大脑中形成相应的知识…

mysql-MySQL体系结构和存储引擎

1. MySQL体系结构和存储引擎 MySQL被设计成一个单进程多线程架构的数据库,MySQL数据库实例在系统上的表现就是一个进 程当启动实例时,读取配置文件,根据配置文件的参数来启动数据库实例;若没有,按编译时的默认 参数设…

黑马Javaweb Request和Response

一.介绍 在 Web 开发中,HttpServletRequest 和 HttpServletResponse 是两个非常重要的类,它们分别用于处理客户端的请求和服务器的响应。以下是它们的详细说明和使用方法: 1. HttpServletRequest HttpServletRequest 是一个接口&#xff0…

Gerrit+repo管理git仓库,如果本地有新分支不能执行repo sync来同步远程所有修改,会报错

问题:创建一个本地分支TEST 来关联远程已有分支origin/TEST,直接执行repo sync可能会出现问题:比如,本地分支TES会错乱关联到origin/master,或者拉不下最新代码等问题。 // git checkout -b 新分支名 远程分支名字 git…

豆瓣图书评论数据分析与可视化

【题目描述】豆瓣图书评论数据爬取。以《平凡的世界》、《都挺好》等为分析对象,编写程序爬取豆瓣读书上针对该图书的短评信息,要求: (1)对前3页短评信息进行跨页连续爬取; (2)爬取…

Vue ④-组件通信 || 进阶语法

组件三大部分 template:只有能一个根元素 style:全局样式(默认):影响所有组件。局部样式:scoped 下样式,只作用于当前组件 script:el 根实例独有,data 是一个函数,其他配置项一致…

从入门到实战:AI学习路线全解析——避坑指南

分享一下阿里的人工智能学习路线,为感兴趣系统学习的小伙伴们探路。 一、谁适合学这门AI课程?五类人群的精准定位 无论你是零基础小白还是职场转型者,这套系统化课程都能为你量身定制成长路径: 零基础爱好者(无编程/数学背景) 课程提供Python和数学前置学习建议,先补基…

uniapp实现的简约美观的星级评分组件

采用 uniapp 实现的一款简约美观的星级评分模板,提供丝滑动画效果,用户可根据自身需求进行自定义修改、扩展,纯CSS、HTML实现,支持web、H5、微信小程序(其他小程序请自行测试) 可到插件市场下载尝试&#x…

AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)

目标 需要使用AWS Elastic Beanstalk 部署一个Python的Flask Web应用,并且使用CodePipeline作为CI/CD工作流。 eb部署图 前提 假设你已经有一个能够正常运行的Python的Flask Web应用项目代码,而且需要对已有Flask工程做一些调整。由于AWS Elastic Bea…

多线程语音识别工具

软件介绍 本文介绍一款支持大厂接口的语音转文字工具,具备免配置、免费使用的特点。 软件特性 该工具是一款完全免费的桌面端应用程序,部署于开源社区平台,其核心优势在于整合了多家技术供应商的接口资源。 操作方式 用户只需将音频…

DiMTAIC 2024 数字医学技术及应用创新大赛-甲状腺B超静态及动态影像算法赛-参赛项目

参赛成绩 项目介绍 去年参加完这个比赛之后,整理了项目文件和代码,虽然比赛没有获奖,但是参赛过程中自己也很有收获,自己一个人搭建了完整的pipeline并基于此提交了多次提高成绩,现在把这个项目梳理成博客&#xff0c…

window安装docker\docker-compose

安装前配置 打开控制面板,参照下图打开“启动或关闭windows功能”,Hyper-V 和容器需要启用 程序和功能 启动或关闭windows功能 勾选Hyper-V 安装路径配置 Docker在Windows上的默认安装路径为C:\Program Files\Docker。 以管理员身份运行CMD在D盘,dev文件夹下创建Docker文…

Jenkins的学习与使用(CI/CD)

文章目录 前言背景CI/CDJenkins简介Jenkins特性 安装Jenkins工作流程(仅供参考)安装maven和其他插件新建任务任务源码管理配置maven配置git(非必需) 尝试手动构建jar包可能遇到的错误 发布到远程服务器前置清理工作构建触发器git钩…

使用WPF的Microsoft.Xaml.Behaviors.Wpf中通用 UI 元素事件

Nuget下载之后记得要先引用下面的 xmlns:i"http://schemas.microsoft.com/xaml/behaviors" <!-- 鼠标事件 --> <i:EventTrigger EventName"MouseEnter"/> <!-- 鼠标进入 --> <i:EventTrigger EventName"MouseLeave"/&g…

Centos7.6图文安装mysql8.4详细步骤记录

1 前提条件 1.1 关闭数据库服务器的防火墙 # 关闭数据库服务器的防火墙 systemctl stop firewalld systemctl disable firewalld 1.2 关闭SELinux # 编辑 /etc/selinux/configvi /etc/selinux/config#内容更改为disabledSELINUXdisabled 1.3 卸载系统自身带的mysql&#…

AI短视频创富营

课程内容&#xff1a; 相关资料 【第一章】前期准备 001.【涨粉技巧】新账号如何快速涨粉?_ev(1).mp4 002.【带贷权限】如何开通账号带贷权限?(1).mp4 003.【费用缴纳】如何缴纳账号保证金?_ev(1).mp4 004.【账号检测】如何检测账号是否限流?(1).mp4 005.【风险规避…

spring中的@RabbitListener注解详解

基本用法主要属性1. queues / queueNames2. containerFactory3. id4. concurrency5. ackMode6. priority7. bindings 高级特性1. 消息转换器2. 手动确认3. 条件监听4. 错误处理 配置监听容器工厂注意事项完整示例循环依赖解决1. 使用 Setter 注入2. 使用 Lazy 注解3. 重构代码结…

MySQL-运维篇

运维篇 日志 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&am…

深度优先算法学习

1: 从 1点出发到 15点 #include <stdio.h>#define MAX_NODES 100typedef struct {int node_id;int *nextNodes;int nextNodesSize; } Node;// 假设我们有一个节点数组&#xff0c;全局保存了所有节点 Node nodes[MAX_NODES];void dfs(int node_id) {Node *node &n…