39

【新生指南-001】绕不开的docker

发表于:2024-10-13 00:51:38 Docker 9548
本帖最后由 madrays 于 2024-10-13 10:59 编辑
📢前言



  📟️接触Nas时间不长,感谢飞牛的出现带我走进了一个新的领域,对于我一个学土木干环保的人来说,这个世界太精彩了,相信有很多小伙伴们像我一样刚刚接触这个东西,看着大佬们这样那样的应用眼馋不已,确实这个东西对于我们门外汉来说还是有一些门槛的,接下来的日子里希望通过我不断踩坑的经历,为新来的小伙伴们指引一条“捷径”,目的是更快的上手飞牛,感受飞牛的魅力,说到这里,回到我的主题,关于docker,这是一个“玩”飞牛绕不开的东西。


🖥️关于docker
📋我们可能经常听到,也经常用到,网络上也有各种各样的热门项目的“一键”部署教程,之前玩云服务器的时候全靠一键教程来玩docker了,但是随着接触的更深一些,发现稍微深入一点了解docker,对所有docker项目来说,都是一通百通,所谓求人不如求己,了解docker的基础原理,在日后的项目部署过程中才会得心应手,不必处处求人。
  当然,我的水平相!当!有!限!故此系列教程仅针对0基础小白,帮助小伙伴们更快上手,讲的都是最基础的东西,如果错误,烦请各位大佬指出!

🧭什么是Docker?


📋比喻:乐高积木
  想象一下你在玩乐高积木,每个积木块都有特定的功能,并且可以组合在一起创建出复杂的结构。Docker就像是一套用于构建应用的乐高积木,它允许开发者将应用程序及其依赖打包成一个个标准化的“积木块”,也就是“容器”。

🏕️Docker的基本概念
  • ✨️镜像(Image):就像乐高的说明书,定义了如何组装一个积木块。Docker镜像是创建容器的基础模板,包含了运行应用程序所需的所有文件和配置。
  • ✨️容器(Container):实际运行的应用程序实例。就像是你按照说明书组装好的乐高模型,可以根据需要启动、停止或删除。
  • 🪄容器与主机的关系:
  隔离性:容器有自己的文件系统、网络空间等,与宿主机隔离,保证了应用的一致性和可移植性。
  轻量级:容器共享宿主机的操作系统内核,不需要额外的虚拟化层,因此启动速度快,资源消耗少。
  • ✨️端口映射

📋比喻:门牌号
   当你在容器里运行了一个Web服务器(比如Nginx),默认情况下这个服务只能在容器内部访问。如果想让外部可以直接访问这个服务,就需要告诉Docker如何把容器内的端口映射到宿主机上。这就像告诉快递员如何找到你的地址一样。
  1. docker run -p 8080:80 nginx
复制代码
  这里 -p 后面跟着两个端口号,前者是宿主机上的端口,后者是容器中的端口。这样当外部设备尝试连接宿主机的8080端口时,流量会被转发到容器内的80端口。
  • ✨️路径映射

📋比喻:行李箱
有时候你需要在容器中保存数据或者读取宿主机上的文件,这时就需要使用路径映射。可以把容器内的某个目录与宿主机的一个目录关联起来,就像把你的行李箱里的东西拿出来放在酒店的柜子里一样。
  1. docker run -v /vol1/1000/test:/config
复制代码
这里 -v 用来指定路径映射,前面的路径是宿主机上的,后面的路径是容器内的。
    重点解释一下路径映射,这是非常容易搞错的概念!!拿上面的映射举例子,左边是宿主机真实路径,也就是你在飞牛系统内可以复制的那个路径,而右边是容器内部路径,容器可以看做是一个飞牛里面的小飞牛系统,/config代表了根目录下的config文件夹,而小飞牛看到了这个config文件夹在真实飞牛系统中的真实路径就是左边的/vol1/1000/test文件夹,这个例子建议新同学反复观看,深刻理解,后续会少踩很多坑。


✨️Docker Compose
  Docker Compose 是一个工具,它允许你在一个 YAML 文件中定义和配置一个应用(可以有多个服务,这里不多说)。这个文件叫做 docker-compose.yml,它描述了你的应用的服务、网络、卷以及其他基础设施。

🎯为什么使用 Docker Compose?
  • 一致性:Compose 确保了从开发到测试再到生产的环境一致性,因为所有的服务配置都在同一个文件中定义,你可以很方便的修改。
  • 易于部署:使用 Compose 文件,可以方便地将应用部署到不同的环境中,只需一个命令即可启动。
🎮️Docker Compose 文件的基本结构
一个简单的 docker版transmission的docker-compose.yml 文件看起来像这样:
  1. version: "3"

  2. services:
  3. transmission:
  4. image: linuxserver/transmission:4.0.5 #tr4.0官方镜像地址
  5. container_name: transmission #设置自定义的项目名称
  6. environment:
  7. - PUID=1000
  8. - PGID=1001
  9. - TZ=Asia/Shanghai
  10. - USER=admin   #设置用户名
  11. - PASS=password   #设置密码
  12. - TRANSMISSION_WEB_HOME=/config/webui/trguing-zh #汉化web的映射路径
  13. volumes:
  14. - /vol1/@appshare/tr/config:/config #tr配置文件映射路径
  15. - /vol1/@appshare/tr/watch:/watch #tr监控种子文件映射路径
  16. - /vol1/1000/SSDPT/SSDPT:/vol1/1000/SSDPT/SSDPT #自定义的下载路径1
  17. - /vol2/1000/HDDPT/HDDPT:/vol2/1000/HDDPT/HDDPT #自定义的下载路径2
  18. - /vol2/1000/9KGPT/9KGPT:/vol2/1000/9KGPT/9KGPT #自定义的下载路径3
  19. ports:
  20. - 9091:9091
  21. - 51416:51416
  22. - 51416:51416/udp
  23. network_mode: host #设置网络模式,为保证种子链接顺畅,建议使用host网络模式
  24. restart: unless-stopped #设置重启模式
复制代码
🎰解释文件中的关键部分
  • version:指定了使用的 Compose 文件格式的版本。
  • services:定义了应用中包含的服务。
  • web:代表 Web 应用服务。
  • image:指定使用的 Docker 镜像。
  • ports:配置端口映射,使外部可以通过宿主机的端口访问容器内的服务。
  • volumes:配置路径映射,使得宿主机的文件可以被容器内的应用访问。
  • image:指定使用的数据库镜像。
  • environment:设置环境变量,如账号密码等。

🀄️使用 Docker Compose 的命令
  • 后台运行应用:
    1. docker-compose up -d
    复制代码



  🛸本期就讲到这里吧,后续我将持续分享我喜欢的各种docker项目。   
  🫧对于新同学来说,docker就是一个很方便我们新手的项目部署工具,大佬们的项目大多都可以通过这种方式部署到我们的本地飞牛上,希望大家能了解一些基础的docker知识,不要嫌麻烦,磨刀不误砍柴工,项目部署一次次失败的感觉是很难受的哈哈😆😆😆


收藏
送赞 39
分享

发表回复

评论列表(50)

强烈建议新牛牛看看这篇哈
2024-10-14 11:30:23 回复

回帖奖励 +1 飞牛币

不懂的人看了才有用
2024-10-14 13:20:54 回复

回帖奖励 +1 飞牛币

Docker Compose是真的好用
2024-10-14 15:22:17 回复

回帖奖励 +1 飞牛币

很详细的教程
2024-10-14 15:53:34 回复

回帖奖励 +1 飞牛币

强烈建议新牛牛看看这篇哈
2024-10-14 15:59:00 回复

回帖奖励 +1 飞牛币

看了确实有用
2024-10-14 16:00:01 回复

回帖奖励 +1 飞牛币


谢谢分享教程!
2024-10-14 16:01:59 回复

回帖奖励 +1 飞牛币

感谢分享,排版看着很舒服
2024-10-14 16:56:05 回复

回帖奖励 +1 飞牛币

飞牛的docker确实简化了不少,合适新手用
2024-10-14 17:48:54 回复