当前位置: 首页 > news >正文

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

文章目录

    • 前言
      • 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 环境一键安装与配置,就是这么的丝滑
持续更新中…

相关文章:

  • Maven入门(够用)
  • windows10下搭建nfs服务器
  • Maven的使用
  • maven 1.0.0idea的使用说明
  • amd64 -- buildx linux 镜像 Docker docker
  • 0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
  • 大数据治理的常见方式
  • uniapp跳转到webview组件的时候,要注意:移除所有不可见字符(包括零宽空格)
  • Fetch API 使用详解:Bearer Token 与 localStorage 实践
  • spring中的@KafkaListener 注解详解
  • uni-app学习笔记二十三--交互反馈showToast用法
  • LeetCode - 560. 和为 K 的子数组
  • 【西门子杯工业嵌入式-5-串口实现数据收发】
  • java中static学习笔记
  • ubuntu下编译osg3.6.5源码
  • AT_abc409_e [ABC409E] Pair Annihilation
  • 【JAVA】javadoc —— 如何生成标准的 Java API 文档
  • 12.7Swing控件6 JList
  • SQL Server从入门到项目实践(超值版)读书笔记 16
  • 用 DeepSeek 高效完成数据分析与挖掘
  • 六安招聘网/seo案例分析及解析
  • 做网站需要字体切换/百度软件安装
  • 中山响应式网站建设/兰州seo推广
  • fw可以做网站/西安seo排名
  • wordpress 手机端打开速度慢/优化seo培训班
  • 做最漂亮的网站/网上在哪里打广告最有效