docker 入门
虚拟化技术介绍
| |
| 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。 |
| |
| 在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用 |
| |
| 虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。 |
| |
| |
| 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:无服务 |
| |
| |
docker 组件介绍
| |
| -dotCloud go写的软件 |
| - Docker 的基础是 Linux 容器(LXC)等技术 |
| - LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单 |
| |
| |
| -举例说明: |
| -开发阶段:win上开发的,python3.8 ,第三方模块 |
| -上线阶段:linux python3.8 第三方模块 不同平台有差异 |
| -使用docker统一开发和部署环境 |
| -只要部署项目运行器一个容器即可(python+django+drf+uwsgi+代码) |
| -java容器:(jdk+tomcat+java代码) |
| |
| |
| -服务器端,客户端 |
| -客户端cli |
| -客户端和服务端交互使用resfulapi |
| -客户端:docker ps----》http请求,符合resful规范----》服务端 执行 |
| |
| |
| |
| - 客户端cli |
| -服务端 server |
| -Images:镜像 |
| -containers:容器 (想象成一个操作系统运行了一个软件) |
| -networks:网络 |
| -Volumes:数据卷,文件 |
| -Registry:远程仓库 |
| -镜像 |
| |
| |
| |
| -镜像是从远程拉去下来的文件 |
| -容器是镜像运行后得到的,一个镜像可以运行多个容器 |
| -面向对象中得 类:镜像 对象:容器 |
| -容器:把容器当做一个操作系统上运行了软件 |
| -运行了redis容器:一个操作系统运行了redis |
| |
| |
docker安装启动
| |
| -centos 7.5 |
| -win10 以上可以 |
| -mac |
| -最好,在虚拟机的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 |
| |
| |
| |
| |
| systemctl start docker |
| |
| systemctl stop docker |
| |
| systemctl restart docker |
| |
| systemctl status docker |
| |
| systemctl enable docker |
| |
| docker info |
docker镜像操作
| |
| docker search 镜像名字 |
| 直接取网站搜索 |
| |
| -docker pull centos:centos7.9.2009 |
| -docker pull python:3.8-slim |
| -docke pull redis |
| -docker pull mysql:5.7 |
| |
| docker images |
| |
| |
| 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 pull 拉取 |
| - 压缩包还原 |
| - 容器反打包成镜像 |
| - dockerfile构建 |
docker容器操作
| |
| -创建容器,运行容器 |
| |
| |
| |
| |
| |
| |
| -docker run -it --name=centos centos:7 |
| |
| |
| |
| docker ps |
| |
| docker ps -a |
| |
| |
| |
| docker exec 容器id ls |
| docker exec 12a6a0281168 ls |
| |
| docker exec -it 12a6a0281168 /bin/bash |
| |
| |
| |
| docker stop 容器id |
| |
| |
| docker start 容器id |
| |
| |
| docker rm 容器id |
| |
| |
| -把宿主机文件cp到容器内部 |
| docker cp 宿主机文件 容器id:容器路径 |
| -把容器内部文件cp到宿主机 |
| docker cp 容器id:路径/文件 /root/ss.py |
| |
| docker inspect 容器id |
| docker inspect --format='{{.NetworkSettings.IPAddress}} 容器id # 查看ip地址 |
| |
| # 你能不能基于centos镜像运行成容器---》在容器中安装python解释器 |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2022-08-01 选课系统前戏