前言
这段时间,我开始接触并学习docker容器的相关知识,我分享一些我学习的经验,如有错误欢迎指正,网上那些docker的概念我看了很多,都比较笼统不好理解,给大家做个比喻。
你在自己的电脑上费了很大劲,装好了 Python、各种依赖库、数据库以及零零碎碎的配置,终于把编程作业跑通了。当你把代码发给同学时,他却怎么都运行不了,不是 Python 版本不一样,就是库没有装全,或者数据库路径跟你不同,明明同一份代码却在他那里一直报错,而你只能说一句“我这里能跑啊”。后来老师要批改作业,也必须重新搭一遍环境,可只要漏装一个库或者版本不对,程序就又跑不起来,老师也只能一遍遍试。这当然非常麻烦,突然你想到一个主意:“如果我能把我的整个运行环境——包括 Python、本地库、数据库、配置文件,甚至程序本身——全部塞进一个的 ‘U 盘’ 里,让别人插上就能直接运行,那就没人再折腾环境了” 这个想法就是 Docker 做的事情,Docker就相当于一个没有实体的U盘,别人只需要把这个U盘拿到手就能运行你写的所有东西,不需要重新搭环境,它把运行程序所需要的一切都装进一个“镜像盒子”里,别人拿到后直接运行同一个“盒子”,生成的容器无论在哪台电脑上都一模一样,从根本上杜绝了“在我电脑上能跑,你电脑跑不了”的问题。

一:Docker容器与虚拟机的区别
有的人可能会说:“我们有虚拟机啊,VMware好用的飞起,先搭好一套虚拟机环境然后给其他人用不就可以了吗?”
在没有容器技术之前,这确实是一个好办法,只不过这个办法还没有那么好。
先科普一下,现在云计算其底层的基石就是虚拟机技术,云计算厂商买回来一堆硬件搭建好数据中心后使用虚拟机技术就可以将硬件资源进行切分了,比如可以切分出100台虚拟机,这样就可以卖给很多用户了,即vps,大家平时购买的vps就是这些云计算厂商虚拟出来的虚拟机。
虚拟机的工作原理是通过 硬件虚拟化 来创建完全独立的操作系统,每个虚拟机都运行自己的操作系统,操作系统占用了大部分的系统资源,不同的项目需要部署一台不同的虚拟机,耗时耗力,而docker不一样,只要你是linux内核的操作系统,无论是centos,ubuntu都可以直接使用别人创建好的容器,非常的方便而且可以节省系统资源,在同一台物理服务器上,可以搭建更多的容器,极大提升了资源利用率。
二:安装部署docker
Docker支持在多种操作系统上安装,包括Linux、Windows和macOS。以在Ubuntu系统上安装为例,执行以下命令:
# 更新软件包索引
sudo apt update
# 安装必要的软件包,用于通过HTTPS来获取软件包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
# 添加Docker软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新软件包索引,并安装Docker CE
sudo apt update
sudo apt install docker-ce
安装完成后,可以通过运行 docker --version 命令检查Docker是否安装成功。
三:docker的三个基本知识
在使用 Docker 之前,了解几个基本概念非常重要:
镜像(Image):可以把镜像看作是一个模版,它包含了所有你需要的内容,比如程序、运行环境和必要的依赖库。镜像就像是做饭的食谱,告诉 Docker 如何做这个容器。你可以从 Docker Hub 下载现成的镜像,或者基于已有的镜像来制作自定义版本。
容器(Container):容器是镜像的运行实例,就像是你根据食谱做出来的菜。每个容器是独立的,有自己的文件、网络和进程,它们相互隔离。即使是同一个镜像,可以创建多个容器,每个容器都能独立运行和管理。
仓库(Repository):仓库就像是一个存放镜像的库房。Docker Hub 是最常用的公共仓库,开发者可以在这里找到、下载和共享镜像。公司也可以自己搭建私有仓库,用来存放和管理专门使用的镜像。
四:结语
以上就是我目前学到的关于docker的相关知识,加入了我个人的理解,希望大家能够理解指正!