【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 环境一键安装与配置,就是这么的丝滑

持续更新中...

相关推荐
青阳流月1 小时前
1.vue权衡的艺术
前端·vue.js·开源
小小鱼儿小小林2 小时前
免费一键自动化申请、续期、部署、监控所有 SSL/TLS 证书,ALLinSSL开源免费的 SSL 证书自动化管理平台
开源·自动化·ssl
帅次2 小时前
Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
flutter·macos·ios·objective-c·iphone·swift·safari
三花AI3 小时前
阿里开源 OmniAvatar:音频驱动数字人模型
开源·资讯
说私域3 小时前
基于开源AI智能客服、AI智能名片与S2B2C商城小程序的微商服务质量提升路径研究
人工智能·小程序·开源
蚂蚁数据AntData3 小时前
从性能优化赛到社区Committer,走进赵宇捷在Apache Fory的成长之路
大数据·开源·apache·数据库架构
fengyun28913 小时前
Mac电脑 卸载工具 App Cleaner
macos
阿里云云原生4 小时前
Spring AI Alibaba 游乐场开放!一站式体验AI 应用开发全流程
开源
高山莫衣4 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维4 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德