云计算分类:
LaaS:基本设施级服务
PaaS:平台级服务
SaaS:软件级服务(例wps:不需要装客户端软件,通过浏览器直接编辑,保存到提供商服务器)
dSaaS:存储级服务
CaaS: container as a service:容器级服务
容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这其实是 PaaS 最理想的状态。
容器的本质是进程。容器就是未来云计算系统中的进程;容器镜像就是这个系统里的".exe"安装包。Kubernetes 就是操作系统!
Docker三大核心组件:
Docker 镜像 - Docker images
Docker 仓库 - Docker registeries
Docker 容器 - Docker containers
Docker 容器:
Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。
环境准备
centos7 64位
升级内核到4以上
部署:
yum -y install docker
启动 Docker 服务:
service docker start
chkconfig docker on
CentOS 7
systemctl start docker.service
systemctl enable docker.service
查看docker基本信息:
docker info
使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。因此 DaoCloud 推出了加速器工具解决这个难题,通过智能路由和缓存机制,极大提升了国内网络访问 Docker Hub 的速度,目前已经拥有了广泛的用户群体,并得到了 Docker 官方的大力推荐。
如果您是在国内的网络环境使用 Docker,那么 Docker 加速器一定能帮助到您。
https://www.daocloud.io/mirror
docker使用
镜像操作
搜索镜像:
这种方法只能用于官方镜像库
搜索基于 centos 操作系统的镜像
docker search centos
docker pull docker.io/centos:centos ##官方库拉取镜像
docker pull daocloud.io/library/centos ##从docker加速器下载(国内)--->速度会更快
查看本地镜像:
docker images
查看镜像详情:
docker image inspect "镜像id"
删除镜像:
删除一个或多个,多个之间用空格隔开,可以使用镜像名称或id
docker rmi daocloud.io/library/mysql
强制删除:--force
如果镜像正在被使用中可以使用--force强制删除
docker rmi docker.io/ubuntu:latest --force
删除所有镜像:
docker rmi $(docker images -q)
只查看所有镜像的id:
docker images -q
镜像迁移:
保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上:
save
Save an image(s) to a tar archive
将镜像打包,与下面的load命令相对应
docker save -o centos.tar daocloud.io/library/centos
自定义名 镜像名或ID
导入
Load an image from a tar archive or STDIN
与上面的save命令相对应,将上面sava命令打包的镜像通过load命令导入
docker load < nginx.tar
注:
1.tar文件的名称和保存的镜像名称没有关系
2.导入的镜像如果没有名称,自己打tag起名字
注意:
如果导入镜像时没有起名字,随后可以单独起名字(没有名字和tag),可以手动加tag
docker tag 镜像ID mycentos:7
容器操作
同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器
启动一个容器:
docker run -it 0f3e07c0138f /bin/bash
或者
docker run -itd daocloud.io/library/centos:latest /bin/bash
-i
捕获标准输入输出
-t
分配一个终端或控制台
-p 80:80
暴露80端口
--restart=always
容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭
--rm
创建时加--rm退出容器是会自动关闭
默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。
若要断开与容器的连接,并且关闭容器:
容器内部执行如下命令
exit
如果只想断开和容器的连接而不关闭容器:
快捷键:ctrl+p+q
连接容器:
方法1.attach
docker attach 容器id ##前提是容器创建时必须指定了交互shell
方法2.exec ---->指定编译器/bin/bash
通过exec命令可以创建两种任务:后台型任务和交互型任务
交互型任务:
docker exec -it 容器id /bin/bash
root@68656158eb8e:/# ls
后台型任务:
docker run -it -d daocloud.ip/library/nginx:latest /bin/bash
查看容器:
只查看运行状态的容器:
docker ps
docker ps -a
-a 查看所有容器
只查看所有容器id:
docker ps -a -q
启动容器:
docker start name
关闭容器:
docker stop name
docker kill name --强制终止容器
杀死所有running状态的容器
docker kill $(docker ps -q)
stop和kill的区别:
docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然,容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。
删除容器:
docker rm 容器id或名称
要删除一个运行中的容器,添加 -f 参数
重启容器:
docker restart name
暂停容器:
pause --暂停容器内的所有进程,
通过docker stats可以观察到此时的资源使用情况是固定不变的,通过docker logs -f也观察不到日志的进一步输出。
恢复容器:
unpause --恢复容器内暂停的进程,与pause参数相对应
监控容器的运行:
可以使用logs、top、events、wait这些子命令
logs:(监控)
使用logs命令查看守护式容器
可以通过使用docker logs命令来查看容器的运行日志,其中--tail选项可以指定查看最后几条日志,而-t选项则可以对日志条目附加时间戳。使用-f选项可以跟踪日志的输出,直到手动停止。
docker logs App_Container //不同终端操作
docker logs -f App_Container
top:
显示一个运行的容器里面的进程信息
docker top birdben/ubuntu:v1
宿主机和容器之间相互COPY文件
如:容器mysql中/usr/local/bin/存在docker-entrypoint.sh文件,可如下方式copy到宿主机
docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root
修改完毕后,将该文件重新copy回容器
docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/
将容器的文件系统打包成tar文件,也就是把正在运行的容器直接导出为tar包的镜像文件
有两种方式(13c296e6a936为容器ID):
第一种:
docker export -o centos-test.tar 13c296e6a936
第二种:
docker export 容器名称 > 镜像.tar
导入镜像归档文件到其他宿主机:
import
Import the contents from a tarball to create a filesystem image
docker import centos-test.tar centos-test:v1