docker
1.介绍
虚拟化是一种资源管理技术,打破实体结构间的不可切割的障碍。
虚拟化技术:VMware,VirtualBox,阿里云服务器,docker 虚拟化技术
-kvm,VMware:kvm:Kernel-based Virtual Machine,linux上虚拟化的技术,把一台机器虚拟化成多台
-openstack:python写的,创建,管理,销毁 虚拟机的管理工具,web管理界面,点点点就能创建,删除虚拟机
-kvm+openstack的方案:公司多台服务器,openstack是管理虚拟机的工具
-docker:容器技术
-k8s:kubernetes,kubernetes是管理container(docker)的工具
-公司主流:k8s+docker
kvm+k8s+docker
功能上:kubernetes是管理container的工具,openstack是管理VM的工具。
业务上:openStack是定位于laaS平台的项目,Kubernetes是定位于PaaS平台的项目
时间上:云平台方案的第一阶段:虚拟机;云平台方案的第二阶段:容器技术
虚拟机需要虚拟化出操作系统【笨重,资源消耗大】
容器【轻量级,资源消耗小】
一 IaaS基础设施服务
IaaS: Infrastructure-as-a-Service(基础设施即服务)
第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来。
但是现在有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。
一些大的IaaS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.
二 paas平台即服务
不仅卖服务器,还卖软件
OSS对象存储,阿里云mysql服务,阿里云的redis
三 saas软件即服务
-多租户
-社保局:社保软件
四 FAAS:函数及服务
Serverless:无服务
2.docker组件
docker的基础是linux容器(LXC)等技术
LXC的基础上docker进行了进一步的封装,让用户不需要去关心容器的管理使得操作更为简单,用户操作dockr的容器就像操作一个快速轻量级的虚拟机一样简单
使用docker统一开发和部署环境
-只要部署项目运行起一个容器即可(python+django+drf+uwsgi+代码)
cs架构软件 -客户端cli
-服务端server
【images镜像,containers容器,networks网络,volumes数据卷/文件】
-远程仓库 registry
【镜像】
镜像就是从远程仓库拉取下来的文件
容器是镜像运行后得到的,【类似于运行的软件】,一个镜像可以运行多个容器
3.docker安装和启动
docker可以安装在各个操作系统之上【建议在虚拟机的centos上安装】
Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。
Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计
- 停止服务:systemctl stop docker
- 过滤:yum list installed | grep docker
- yum remove docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
- rm -rf /var/lib/docker
- 先安装依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 把yum源设置为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
sudo yum install docker-ce
- 查看docker的版本
docker -v
- 阿里云:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- mkdir /etc/docker
- vim /etc/docker/daemon.json
- 写入
{
"registry-mirrors": ["https://x1566319.mirror.aliyuncs.com"]
}
- 重启
sudo systemctl daemon-reload
sudo systemctl restart docker
docker命令
1.启动docker
systemctl start docker
2.停止docker
systemctl stop docker
3.重启docker
systemctl restart docker
4.查看docker状态
systemctl status docker
5.开机启动
systemctl enable docker
6.查看docker概要信息
docker info
4.docker镜像操作
1.搜索镜像
docker search 镜像名字
2.从远程仓库拉取文件
docker pull centos:centos7.9.2009
docker pull python:3.8-slim
docker pull redis
3.查看本地镜像
docker images
4.删除镜像
docker rmi 镜像id
一次性删除所有镜像
docker rmi `docker images -q`
一次性删除所有容器
docker rm `docker ps -aq`
-自己制作了一个镜像,想传到自己的仓库里
- 把本地的镜像打个标签
docker tag 镜像id liuqingzheng/xxxx
docker login
docker push liuqingzheng/xxxx
你的仓库你就能看到了
所有的docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容的时候,就会在当前镜像层之上创建新的镜像层。分层时有文件更新直接替换,基础镜像一样时直接拿过来复用
镜像分层的好处:资源共享,方便复杂迁移,容易实现资源复用
更轻量:所需空间更小,更有利于大规模部署
更高效,更敏捷,更灵活
- docker pull 拉取
- 压缩包还原
- 容器反打包成镜像
- dockerfile构建
docker容器操作
1.基于镜像运行成容器
docker run -it --name=centos centos:7
【-it和-id的区别:it是进入到容器内部,id以守护进程运行容器】
2.查看正在运行的容器
docker ps
3.查看所有容器
docker ps -a
4.在容器内部退出
exit 【只要退出容器,容器就不是运行状态】
5.在容器上执行命令
docker exec 容器id ls
eg:docker exec 12a6a0281168 ls
docker exec -it 12a6a0281168 /bin/bash
6.停止/运行容器
docker stop/start 容器id
7.删除容器
docker rm 容器id 【正在运行的容器不能删除】
8.文件拷贝
-把宿主机文件cp到容器内部
docker cp 宿主机文件 容器id:容器路径
-把容器内部文件cp到宿主机
docker cp 容器id:路径/文件 /root/ss.py
9.查看容器信息
docker inspect 容器id
docker inspect --format='{{.NetworkSettings.IPAddress}} 容器id # 查看ip地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!