Docker安装
下载地址
- 官网:http://www.docker.com
- 仓库:https://hub.docker.com/
安装前提
- 系统64位,linux系统内核版本为3.8以上
-
查看系统内核:uname -r #-r print the kernel release
cat /etc/redhat-release
Docker的基本组成
- 镜像
1 2 3 | Docker镜像image就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器 相当于一个root文件系统。比如官方镜像centos7就包含了一套centos7最小系统的root文件系统 相当于容器的源代码,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象 |
- 容器
1 2 3 4 5 | #从面向对象角度 容器是用镜像创建的运行实例,像Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。 每个容器都是相互隔离的、保证安全的平台 #从镜像角度 可把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间)和运行在其中的应用程序 |
- 仓库
1 2 | 是集中存放镜像文件的场所,可以把镜像发布到仓库中,也可以从仓库中下载过来。类似于Maven仓库,存放各种jar包 仓库分为公开仓库和私有仓库,最大的公开仓库是Docker Hub(https://hub.docker.com/),国内的公开仓库包括阿里云、网易云等 |
总结:Docker本身是一个容器运行载体或称之为管理引擎
Docker平台架构概述
- Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职
- 基本流程为
1 2 3 4 5 6 7 | 用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者 Docker Dameon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求 Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个job形式存在 Job在运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储 当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境 当需限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成 Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作 |
安装步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #安装gcc相关 yum -y install gcc yum -y install gcc -c++ #设置stable镜像仓库 yum-config-manager --add-repo http: //mirrors .aliyun.com /docker-ce/linux/centos/docker-ce .repo #推荐此种方式 官网方式会导致超时 #更新yum软件包索引 yum makecache fast #安装DOCKER CE yum -y install docker-ce docker-ce-cli containerd.io #启动docker systemctl start docker #测试 docker version docker run hello-world #卸载 systemctl stop docker yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd |
阿里云镜像加速
- 登陆阿里云开发者平台
- 点击控制台
-
选择容器镜像服务
-
获取加速器地址
-
粘贴脚本直接执行
- 重启服务
1 2 | systemctl daemon-reload systemctl restart docker |
RUN干了什么
为什么docker会比vm虚拟更快
- docker有着比虚拟机更少的抽象层
1 | 由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势 |
- docker利用的是宿主机的内核,而不需要加载操作系统OS内核
1 | 当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的,而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!