【云原生百日精进:从入门到实战的技术全景】第1天:Docker Runtime全解析 — 发展历程、应用优势与安装管理

本文带领读者深入了解云原生技术中的Docker,从Docker的历史、核心理念、与虚拟机的对比,到安装部署、管理工具Portainer的使用,全面解析Docker如何简化应用部署和提升资源利用效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

🌟 热烈欢迎踏上【云原生百日精进:从入门到实战的技术全景】学习之旅的每一位朋友!能在这里相遇,共同探讨云原生的奥秘,我感到无比激动和期待!🎉

🚀 云原生,作为云计算领域的新锐力量,正引领着技术革新的浪潮。在这个专栏里,我们将一起从零开始,逐步深入云原生的世界。无论你是初学者还是资深开发者,这里都将是你精进技艺、探索前沿的最佳舞台。

📚 我们将携手探索云原生的核心概念、关键技术和实战应用,共同开启云计算的新篇章。希望这段旅程不仅能让你收获满满的知识与技能,更能感受到学习的乐趣和成就。

💬 朋友们,让我们共同启程吧!在这个充满挑战与机遇的时代,相互学习、共同进步,一起书写属于我们的云原生精进传奇!期待与你共同成长,见证彼此的蜕变与飞跃!


一、🌟 温故知新导向标 🌟

1.1 🔍 前情提要与内容速览

内容速览
  本文介绍了Docker的发展史、应用史及其核心理念,阐述了Docker如何通过容器化技术为应用部署带来便捷性,解决了环境不一致性和部署复杂性等问题。同时,文章还对比了Docker与虚拟机的关系和异同点,突出了Docker在轻量级和资源效率上的优势。在Docker初体验部分,文章指导读者如何在不同网络环境下安装和部署Docker,包括公网和内网环境的初始化。最后,文章介绍了基于管理界面工具管理Docker的方法,重点比较了不同可视化管理工具的区别与优势,并详细说明了如何安装和使用Portainer这一强大的Docker管理工具。

1.2 🎯 今日学习航程指南

航程概览
  Docker简介与历程:了解Docker的起源、发展及其在现代应用开发中的重要性。
  核心理念掌握:深入探索Docker的核心理念与运作机制。
  便捷之处与应用问题解析:分析Docker如何解决传统应用部署的痛点与难点。
  Docker与虚拟机对比:揭示两者之间的关系,明确各自的优劣及应用场景。

关键站点
  安装与部署初探:学习Docker的安装方法,了解如何在公网和内网环境下进行初始化配置。
  容器与镜像理解:探索Docker容器与镜像的基本概念及相互关系。
  Docker命令实践:通过实际操作,熟悉Docker的基本命令与使用方法。
  可视化管理工具比较:对比分析不同Docker管理工具的特点与优势。
  Portainer安装与应用:掌握如何安装和使用Portainer来高效管理Docker环境。

二、📖 Docker简介

2.1 🌱 Docker发展史、应用史

  Docker的发展可以追溯到2008年,当时Solomon Hykes为了建立一个与编程语言无关的平台即服务(PaaS)产品,创立了dotCloud公司。然而,Docker的真正起源可以追溯到2010年,当时dotCloud获得了创业孵化器Y Combinator的支持,并开始吸引到一些真正的投资。在接下来的3年中,dotCloud内部孵化了一款名为Docker的产品。

关键时间节点
  2013年3月:Docker的创始人Solomon Hykes在PyCon大会上首次公开介绍了Docker这一产品。此后,Docker的创新式镜像格式以及容器运行时迅速成为社区、客户和更广泛行业的实际标准和基石。Docker将容器技术大众化,并解决了困扰数百万开发人员的“matrix from hell”问题,使容器技术成为主流。
  2013年3月20日:dotCloud发布了Docker的首个版本,并将Docker源码进行开源。随后,谷歌、亚马逊以及DigitalOcean也迅速的在其云服务平台提供了Docker的支持。
  2014年6月:Docker 1.0正式发布,标志着Docker从一个单纯的容器引擎开始转变为一个完整的平台。同时,Docker推出了一个名为Docker Hub的公共容器仓库。
  2014年12月:在DockerConEU上,Docker Swarm(容器集群管理工具)与Docker Machine(用于在多种平台上快速安装Docker的工具)同时面世。

技术更新与版本迭代
  Docker自首次发布以来,经历了多次重要的技术更新和版本迭代。这些更新包括改进容器运行时性能、增强安全性、优化镜像管理、引入新的编排工具(如Docker Compose和Docker Swarm)以及扩展多平台支持等。此外,Docker还与各大云服务提供商合作,提供了在云环境中部署和管理Docker容器的解决方案。

2.2 💡Docker理念

  Docker是一个开源的应用容器引擎,其核心理念可以总结为“Build, Ship, and Run Any App, Anywhere”,即“一次构建,到处运行”。这意味着Docker能够让开发者将他们的应用程序及其依赖项一起打包成一个可移植的容器,并可以在任何流行的Linux机器或Windows机器上运行,甚至实现虚拟化。Docker的使用实现了应用程序在不同环境中的无缝迁移,使得开发者无需担心因环境差异导致的运行问题。

  Docker的核心概念包括镜像、容器和仓库。镜像是Docker容器的基础,它是一个只读的模板,包含了应用程序和其依赖的所有文件、配置和运行时环境。可以将镜像看作是一个类似于操作系统的“快照”,它可以用来创建容器实例。容器是镜像的运行实例,它是一个独立、轻量级的运行时环境,用于运行应用程序和其依赖项。仓库是用于存储和分享镜像的地方,类似于代码仓库。

2.3 ✨ Docker给我们带来的便捷是什么,解决了哪些问题

1.🔄 一致性与可移植性 🌍
  Docker确保应用及其所有依赖项在任何环境中都以相同的方式运行。👨‍💻 开发者可以在本地机器上构建和测试应用,然后将其部署到任何运行Docker的环境中,无论是开发、测试、生产还是云环境,都能保证行为的一致性。🚀 这消除了“在我的机器上可以运行”这类常见问题。🔥
2.🔒 隔离性 🏁
  Docker提供了强大的隔离功能,允许在同一台机器上运行多个容器。📦 每个容器都有其自己的文件系统、网络栈和进程空间。这避免了不同应用之间的依赖冲突,提高了系统的稳定性和安全性。🛡️
3.⚡ 快速部署与扩展 📈
  Docker容器启动非常快,通常只需几秒到几十秒。⏱️ 这使得应用部署和扩展变得非常迅速和简单。🚀 与虚拟机相比,Docker容器不需要启动整个操作系统,因此更加轻量级和高效。💻
4.📜 版本控制与回滚 🔄
  Docker提供了对容器的版本控制功能。🔖 允许开发者轻松管理和跟踪容器的不同版本。如果新版本出现问题,可以迅速回滚到之前的稳定版本,减少了风险。🛡️
5.🔧 简化配置管理 📦
  Docker通过Dockerfile和Docker Compose简化了应用的配置管理。📝 开发者可以将所有依赖项、配置和代码打包到一个可移植的容器中,无需担心目标环境的配置差异。🌍
6.🌟 高效的资源利用 💻
  Docker容器共享主机操作系统的内核,因此与虚拟机相比,它们更加轻量且资源利用率更高。🚀 这降低了基础设施成本,并提高了应用的性能。💰💨
7.🌐 强大的社区和生态系统 🤝
  Docker拥有庞大的社区和丰富的生态系统。🌱 提供了许多现成的工具和解决方案,如Docker Hub、Docker Swarm、Kubernetes等。🛠️ 使得开发者能够更加专注于应用开发本身,而不是基础设施管理。🚀
8.🔒 安全性 🛡️
  Docker提供了多种安全机制,如用户空间隔离、只读文件系统、网络隔离等。🔐 确保了容器的安全性。此外,Docker还支持与各种安全工具和策略(如SELinux、AppArmor等)的集成。🛡️ 进一步增强了系统的安全性。🔥

🆚2.4 Docker和虚拟机

2.4.1 🔗两者之间的关系

  说到docker,那就必须要和虚拟机做一下比较,其实docker是和虚拟机是类似的东西,我们应该知道虚拟机就是在我们的操作系统上虚拟出来一个电脑,然后里边可以安装、运行各种各样的软件,和我们真的电脑是差不多的,我们可以拿着这个虚拟好的电脑(其实是一个文件)在按了虚拟机的其他电脑上可以直接运行,里边的东西就不用我们来回安装和配置了,也是很方便的。
  docker其实提供的也是这么一种的技术,只不过它比虚拟机效率更加的高,启动快,占用资源小等一系列的优点,而且虚拟机比较笨重,这是因为虚拟机和docker来实现思想上有本质的区别,我们可以通过下边的图对比一下👇
在这里插入图片描述

2.4.2 🔍两者之间的异同点

相同点

  • Docker和虚拟机都是实现应用部署和运行环境隔离的技术,它们都可以消除不同环境之间的差异,提高应用的可移植性和可维护性。
  • 在某些场景下,Docker和虚拟机可以相互补充。例如,在需要运行多个不同操作系统的应用程序时,可以使用虚拟机来提供不同的操作系统环境;而在需要快速部署和扩展大量相同应用程序时,可以使用Docker来提高部署效率和资源利用率。

不同点

  • 实现方式:虚拟机是通过虚拟化技术模拟出完整的硬件系统,然后在该系统上运行一个完整的操作系统。而Docker则是利用Linux内核的命名空间(Namespace)和控制组(Cgroup)功能来实现进程级别的隔离和资源限制,无需模拟完整的硬件系统或运行完整的操作系统。
  • 资源占用:由于虚拟机需要模拟完整的硬件系统和运行完整的操作系统,因此其资源占用相对较高。而Docker仅需要运行应用程序及其依赖项,无需运行额外的操作系统或模拟硬件,因此其资源占用较低。
  • 启动速度:虚拟机的启动过程包括启动虚拟机管理器、加载操作系统等步骤,因此启动速度相对较慢。而Docker的启动过程仅包括启动容器引擎和加载应用程序,因此启动速度非常快,通常只需几秒到几十秒。

三、🚀 Docker初体验

3.1 🔧 Docker的安装部署方式

3.1.1 初始化环境(公网、内网都要初始化)

1、关闭防火墙和Selinux

systemctl stop firewalld && systemctl disable firewalld

sed -i 's/enforcing/disabled/g' /etc/selinux/config

setenforce 0

2、关闭Swap

swapoff -a

sed -i ‘s/.swap./#&/’ /etc/fstab

3、将桥接的ipv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

4、配置时间同步

yum install ntpdate -y

ntpdate time.windows.com

3.1.2 🌐 公网环境

1、配置阿里云的网络yum

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2、下载关于Docker的依赖环境

yum install -y device-mapper-persistent-data lvm2 libcgroup yum-utils 

3、配置下载Docker的镜像源(3个选一个配置即可,docker源是国外的,阿里和清华是国内的)

  • docker官方yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 清华大学源
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

4、安装最新版本的docker
// 卸载旧版本

yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

// 将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度

yum makecache fast

// 提高安装速度以后,安装docker相关的。(docker-ce 社区版 而ee是企业版)

yum install -y docker-ce docker-ce-cli containerd.io

5、如要安装特定版本的docker
// 列出可用的版本

yum list docker-ce --showduplicates | sort -r
yum list docker-ce-cli --showduplicates | sort -r
yum list containerd.io --showduplicates | sort -r

// 安装特定版本
  通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-20.10.12、docker20.10.12。

yum -y install docker-ce-20.10.12* docker-ce-cli-20.10.12*

// 提高安装速度以后,安装docker相关的。(docker-ce 社区版 而ee是企业版)

yum install -y docker-ce docker-ce-cli containerd.io

6、启动docker

systemctl enable --now docker # 启动服务并设置开机自启动

systemctl status docker # 查看服务状态

3.1.3 🏢 内网环境

1、解压源码包docker

tar zxvf docker-20.10.12.tgz

2、拷贝到系统目录下

sudo cp docker/* /usr/bin/

3、创建docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[Install]
WantedBy=multi-user.target

4、启动docker

systemctl daemon-reload

systemctl enable --now docker # 启动服务并设置开机自启动

systemctl status docker # 查看服务状态

四、🖥️ 基于管理界面工具管理Docker

4.1 🆚 可视化管理工具的区别与各自的优势

Docker UI
  优势:Docker UI是一个轻量级且易于使用的Docker管理工具,适用于不熟悉Docker指令的用户。它基于Web界面操作,无需记住Docker指令,可以直接更新镜像版本。此外,Docker UI是完全开源和免费的,基于容器安装方法,方便高效部署。
  不足:相较于其他两款工具,Docker UI的功能相对较少,不支持多用户和RBAC(基于角色的访问控制)等高级功能。
Portainer
  优势:Portainer是一个功能丰富、易用性高、安全可靠的Docker管理工具。它提供了Web界面,让用户方便地管理Docker容器、镜像、数据卷和网络等。Portainer还支持多种Docker环境,可以轻松部署和管理不同的Docker集群。此外,Portainer是一款开源软件,用户可以自由地使用、修改和分发。
  不足:尽管Portainer提供了丰富的功能,但在某些方面,如多用户和RBAC等高级功能的支持上可能不如Shipyard强大。
Shipyard
  优势:Shipyard是一个功能强大的Docker Web端管理平台,支持多用户和RBAC等高级功能。它可以让用户方便地管理Docker容器、镜像、数据卷和网络等。Shipyard还支持节点动态集群,可扩展节点的规模(如swarm、etcd方案)。此外,Shipyard还提供了资源限制功能,包括CPU和内存,以及通过SSL证书与Docker后台进程安全通信的能力。
  不足:相对于Docker UI和Portainer,Shipyard的安装和配置可能更复杂一些。

4.2 💻 如何安装可视化工具portainer?

1、下载安装镜像

docker pull portainer/portainer:latest

2、启动运行

docker run -d -p 19000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer

3、访问登录
在这里插入图片描述

五、🎉 今日精粹与明日期待 🌠

5.1 🎯 今日内容重点回顾

  本文深入介绍了Docker的基本概念、发展历程及其核心理念,详细阐述了Docker如何为应用开发和部署带来便捷性,解决了环境不一致性和复杂性等问题。同时,通过与虚拟机的对比,我们明确了Docker在资源占用、启动速度及隔离性方面的优势,并探讨了两者之间的异同点及适用场景。在Docker初体验部分,我们学习了在不同网络环境下安装和部署Docker的方法,包括公网和内网环境的初始化配置。此外,文章还介绍了基于管理界面工具管理Docker的便利性,特别是可视化工具Portainer的安装和使用,为读者提供了更加直观、高效的Docker容器管理方式。通过今日的学习,我们对Docker有了更深入的了解,为后续的应用开发和部署打下了坚实基础。

5.2 🔮 明日精彩先知

  深入探索Docker世界!我们将从Docker容器基础出发,掌握其核心命令,再逐步进入Dockerfile的编写,解析常用参数并实战Java、Nginx等应用。不仅如此,还将分享镜像优化的秘诀,如使用Alpine作为基础镜像进行多阶段构建。最后,我们将一起领略docker-compose的魅力,从简介安装到文件结构,再到创建多个应用服务案例,一一剖析。明日,让我们共同开启Docker的高效之旅!🚀✨

相关资料下载地址📚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜提yBei冰美式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值