1 docker介绍

1.1 什么是虚拟化

 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储


在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件  对资源充分利用

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。


# 虚拟化技术名词
# kvm,vmware :软件--》虚拟化软件---》操作系统上装了这个软件后---》虚拟化出一台台机器
# openstack :web管理页面---》对虚拟化的机器进行管理---》创建,销毁,增加 机器


# 阿里飞天 :阿里自研的类似于 openstack的东西
# docker :接下来要学习,容器技术
# k8s :容器管理,容器编排


公司购买了很多台实体服务器---——》 装k8s  装docker

1.2 什么是Docker

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 加了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在上进行维护。

docker 容器管理 
	-docker swarm
	-k8s

Docker 的基础是 Linux 容器(LXC)等技术


1.3 docker 和传统虚拟机比较

# docker 不需要虚拟化出 操作系统这一层---》更轻量级--占空间更新---》还能实现隔离

# 虚拟机技术的缺点:
    1.资源占用太多
    2.冗余步骤多
    3.启动很

# 容器化技术
1.服务器资源利用率高
2.比较轻量化
3.打包镜像测试,一键运行



比较Docker和虚拟机技术不同:
​ 1.传统虚拟机,虚出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
​ 2.容器内的应用之间运行在 宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以久轻便了
​ 3.每个容器间是互相隔离的,每个容器内都有属于自己的文件系统,互不影响
​ 4.安全性,docker的安全性更弱,
​ 5.与虚拟机相比,docker隔离性更弱,docker属于进程之间的隔离,虚拟机可实现系统级别隔离

​ 7docker创建时秒级的,docker的快速迭代性,无论是开发、测试、部署都可以节约大量时间

1.4 docker 架构

# cs 架构---》客户端服务端
	- c 端:用户操作,输入命令
    - s端:接收用户命令,执行
    -c、s通信,使用http协议,遵循restful规范
    	-mysql:tcp---》自定义的
        -redis:tcp---》自定义的
        
        
  # 架构
	1 client:客户端,输入命令
    2 服务端:
    	containers:容器
        images:镜像--》从注册中心下来下来的
        
    3 register:注册中心
    	-放了很多镜像--》redis,nginx,mysql

2 docker 安装和配置

# 有台虚拟机---》买个阿里云服务器:按量付费  有ip
# centos7.9 系统 
10.0.0.110  
root
123


# 远程链接:
	finalshell:免费的
    xshell :只能win用,收费
    命令窗口:git bash创建
    
    
# 先远程链接到centos上
	git bash里 :ssh root@10.0.0.110     输入密码连接上即可
    
    finalshell: 图形化界面链接
    	-地址
        -用户名
        -密码 
        
# docker : mac, win,Linux:centos,乌班图


### 安装:
	-卸载:
    	yum remove docker docker-common  docker-selinux docker-engine
	    rm -rf /var/lib/docker
	-安装	
	   yum update
       yum install -y yum-utils device-mapper-persistent-data lvm2  # 下载一些依赖
       yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	  yum install docker-ce -y
    
    
    - 验证
    	docker -v
##  运行docker-ce
	systemctl status docker # 查看docker软件运行状态
    
	systemctl start docker  #启动docker
    
    systemctl restart docker # 重启
    systemctl stop docker  # 停止






### 配置国内源---》下载镜像--》速度会快

# 远程仓库在国外[python 下第三方模块:pypi上---》配置国内镜像站]
# 使用国内源,下载镜像时,速度会快---》阿里云
# 参照阿里云提供的笔记做:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors


sudo mkdir -p /etc/docker # 如果有,就不需要创建了
vi /etc/docker/daemon.json 
# 加入
{
  "registry-mirrors": ["https://x1566319.mirror.aliyuncs.com"]
}
# 按 esc
# 输入  :wq  敲回车


# 保存退出
systemctl daemon-reload   # 重新加载docker配置
systemctl restart docker  # 重启docker
	

2.5 镜像和容器

# 镜像:images
	-一堆文件---》目前咱们从register---》下载---》放在宿主机(centos 7.9机器)
    -类比:虚拟上装系统
    	- 操作系统文件 xx.iso--->装在虚拟机上
        - 镜像你当成 xx.iso 操作系统文件
        -把iso装在不同虚拟机中---》启动---》多台有操作系统的机器
# 容器:container
	-镜像运行---》运行成容器
    -类比:
    	-容器当成一个正在运行的操作系统
    -一个镜像,可以运行成多个容器
    
    
    
# python面向对象
	类:镜像
    对象:实例化得到多个对象,每个对象间独立的
    
    
    
# 以后一个容器,你们当成 :一个操作系统+软件--》正在运行  

3 docker镜像操作



# 0 搜索镜像
	-去网站搜:https://hub.docker.com/ 
	-使用命令行搜:docker search mysql
    
# 1 获取镜像,拉去镜像---》从register下载到本地--》阿里云镜像站--》加速拉取
	docker pull mysql:5.7 # 下载mysql 5.7镜像
	docker pull redis:latest # 下载redis最新的镜像
    docker pull nginx:latest  # 下载 nginx最新的镜像
    docker pull centos:centos7  # 下载 nginx最新的镜像
    
# 2 查看镜像
	docker images

# 3 删除镜像
	docker rmi redis:latest

3.1 注册并登录到远程仓库

# gitee--->远程仓库---》本地代码---》提交
	-登录进入可以看到你开源的项目
    
# docker--》hub.docker-->镜像----》我们自己的镜像,也可以传上去,给所有人用
	-登录进入:就能看到你传的镜像

    
# 注册一个hub.docker 的账号
# 登录进入
# 上传你的镜像
	-0 登录
    	docker login
        
	-1 给镜像打个标签
    	docker tag 本地镜像名:标签  你的名字/镜像名字:标签
        docker tag redis:latest   liuqingzheng/rredis:vv1
        
    -2 上传到远程仓库
    docker push liuqingzheng/rredis:vv1
    

3 docker容器操作

# 把镜像运行成容器,并且一个镜像,可以运行出多个容器


# 把centos7 运行成容器
# --name=centos7 容器名
# run :创建并运行
# -di :创建出容器并运行,命令行还在宿主机
docker run  -di --name=centos77 centos:centos7




# 查看正在运行的容器
	docker ps
# 查看所有容器
	docker ps -a
# 查看最后一次运行的容器
 	docker ps -l
    
# 启动停止的容器
	docker start id/名字

# 停止运行的容器
	docker stop 7d5e

# 停止所有在运行的容器
	docker stop `docker ps -q`
    
    
# 删除容器
	docker rm 容器id
    
# 记住四条:
	docker ps
    docker ps -a
    docker start
    docker stop
    
    
    
# 进入到容器内部
docker exec -it 容器id /bin/bash
docker exec -it 90fd0665494f /bin/bash

# 在centos的容器中安装mysql 3.9 
	-不是在宿主机上装
    -容器中