1.Iaas
IaaS: Infrastructure-as-a-Service(基础设施即服务)。
第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来。
但是现在有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。
比如我们只和一家公司进行服务器硬件的合作,这家公司负责服务器的租用和硬件的维护,他们提供的就是Iaas服务。例如私有云服务。
2.PaaS
第二层就是所谓的PaaS,某些时候也叫做中间件。你公司所有的开发都可以在这一层进行,节省了时间和资源。比如有家公司开发好了应用,有的公司会专门提供服务器并且装好mysql等软件这样的一个平台,直接将项目部署在上面即可。
PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等。
例如阿里云就是这种类型的公司。
3.SaaS
第三层也就是所谓SaaS。这一层是和你的生活每天接触的一层,大多是通过网页浏览器来接入,也就是提供了软件服务。任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS了。
你消费的服务完全是从网页如Netflix, MOG, Google Apps, Box.net, Dropbox或者苹果的iCloud那里进入这些分类。尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分。
应用:比如政府应用、超市结账系统。
4.docker启动、配镜像站
1.查看docker状态。inactive表示未启动
systemctl status docker
2.启动docker
systemctl start docker
3.如果我们要下载镜像需要去远程仓库(在国外),速度较慢,地址是:https://hub.docker.com/ 。我们为了提高速度需要设置国内镜像站,我们配置阿里云镜像站:
cd /etc/docker/ # 首先切换到etc目录下的docker目录下
然后需要在阿里云中创建一个实例,在docker目录下需要建一个daemon.json目录:
vim daemon.json
4.再依次执行下面两句话,重启docker服务,就可以成功配好加速站:
sudo systemctl daemon-reload
sudo systemctl restart docker
5.启动与停止常用命令
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
7.查看docker帮助文档
docker --help
6.镜像相关命令
1.查找镜像
docker search 镜像名称
建议去hub.docker.com 直接搜,更直观
2.拉取镜像:搜索之后选择合适的镜像,点击tags,复制命令到linux命令行,即可下载:
# centos7版本
docker pull centos:centos7
不写版本默认下载最新:
docker pull redis
3.查看本地镜像
docker images
CREATED指的是镜像创建的时间
4.删除镜像
docker rmi 镜像ID # 可以同时删多个
5.删除所有镜像
# 查出所有镜像的id号,-q是只拿id号
docker rmi `docker images -q`
7.容器相关命令
镜像运行起来就是容器,并且一个镜像可以运行成多个容器
1.查看正在运行的容器
docker ps
2.查看所有容器
docker ps -a
3.查看最后一次运行的容器
docker ps -l
4.运行容器(其实是两步,创建容器:create,运行容器:run)
如果容器没有创建,直接执行run,就会创建并运行
run的命令有很多参数:
i:表示运行容器
t:表示容器启动后会进入容器命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
# 命令可以简写
docker run -it # 创建并进入容器
docker run -id # 创建不进入容器
name :为创建的容器命名,如果不写,随机生成一个名字
v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射(举例:宿主机上运行的mysql容器监听端口是容器中的3306端口,通过映射将容器中的3306端口映射到本机,这样容器中的mysql监听的就是本机的3306端口)
5.启动centos容器:
# 要求启动之后直接进入容器,并且给容器起名mycentos
docker run -it --name=mycentos centos:7
目前操作就相当于装了一台虚拟机,装上了centos。我们依然可以在该centos系统中装上mysql等软件,类似套娃的操作。容器中的软件都在容器中,在宿主机上找不到,但是会占用宿主机的内存。目前该容器中还没有vim的操作,如果想要实现vim的操作需要再装上vim软件:
yum install vim -y
6.容器退出:
exit
7.启动容器,不进入
docker start 容器名
8.进入到容器内部(本质并不是进去,而是让容器执行命令,返回结果)
docker exec 容器id 命令
docker exec 21b790a1eafc ls # 查看id为21b790a1eafc容器内所有文件夹
我们也可以通过分配交互式命令行进入容器:
docker exec -it 21b790a1eafc /bin/bash
/bin/bash命令相当于进入/bin/bash的命令窗口,再执行一次相当于又进入了一层/bin/bash的窗口:
8.容器目录映射(映射之后目录下的内容都会同步)
v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个。-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
我们首先在宿主机/home/目录下创建一个目录ccc
cd /home/ # 切换到/home/目录下
mkdir ccc
cd ccc # 切换到ccc目录下
在ccc目录下创建一个文件q.txt,并且在第一行写入内容:
cd ccc # 切换到ccc目录下
touch q.txt # 创建一个q.txt的文件
vim q.txt # 进入到q.txt并且写入内容,按esc,:wq保存退出
pwd # 查看当前路径,结果:/home/ccc
然后执行目录映射,冒号前的路径是宿主机映射的路径,冒号后是容器映射的路径。容器名不能和已创建的容器重名,也就是迁移的容器必须还没有被创建出来,执行完映射命令之后会自动创建
docker run -id --name=centos3(容器名) -v /home/ccc:/ddd centos:7
进入到centos3容器:
docker exec -it 2c8d3bbe9279 /bin/bash # 进入到容器
cd ddd # 切换到ddd目录下
cat q.txt # 查看q.txt文件
说明通过映射之后宿主机内的文件和容器上的文件是同步的。不管谁在宿主机上还是容器中修改q.txt,在宿主机和容器中查看都会变化:
9.容器端口映射
p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
首先执行命令:
docker run -id --name=mysql11 -p 81:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 意思是本机的81端口映射到mysql容器中的3306端口。并且本机mysql连接容器中的mysql时输入密码是3306