虚拟化技术可以将一台物理服务器虚拟为多台逻辑服务器,每台逻辑服务器可运行不同的操作系统,系统内的应用程序也相互隔离不受影响,从而显著提高服务器的运行效率。
常用的虚拟化技术有:OpenStack、KVM、VMWare
LXC 利用 cgroup 与 namespace 的功能,将 Linux 进程进行沙盒化,使得进程之间可以相互隔离,并且能够控制各进程的资源分配。
Docker 是现在最流行的开源容器,遵循 Apache 2.0 协议,使用 GO 语言进行开发,始于 2013 年,现已加入 Linux 基金会。
我们可以将 Docker 理解为一个轻量级的沙盒,Docker 容器完全使用沙盒机制,每个容器内都有其独立运行的环境和组件,容器之间是相互隔离互不影响的,也可以进行容器间的通信。
Docker 的核心思想:“Build once,Run anywhere”,即:一次构建,处处运行,这里可以是一个操作系统,一个Web 应用,或者一个数据库服务等。
官网: https://www.docker.com/
文档地址: https://docs.docker.com/
仓库地址: https://hub.docker.com/
k8s 是 kubernetes 的缩写,是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
Docker 是一个开源的应用容器引擎,Kubernetes 是用来管理 Docker 集群的,可以实现 Docker 容器集群的自动化部署,自动扩缩容、维护等功能。Kubernetes 不仅仅支持 Docker,还支持其他容器技术。
Docker 有社区版、企业版。社区版是开源 免费的,企业版是收费的,当然也会有更牛逼的特性和服务,一般的应用社区版的足够了。
优势:
Docker 本身就是服务器中的一个进程,Docker 使用的是Linux 内核和内核功能(例如 cgroup 和 namespace)来分隔进程实现资源隔离的,通过 cgroup 实现资源限制,通过 namespace 实现资源隔离。
docker images 列出所有镜像
docker ps -a 列出容器
docker pull 拉取指定镜像
docker push 推送镜像值仓库
docker rmi 删除镜像
docker rm 删除容器
1)检索镜像
2)下载镜像
命令:docker pull 镜像名:tag
其中 tag 为版本,可选的,默认不写为 least。
3)导入镜像
命令:docker load < IMAGE NAME
逐步导入镜像:
for image_name in $(ls /)
do
docker load < ${image_name}
done
构建镜像命令:docker build -t jartto-docker-demo
表示基于当前目录的 Dockerfile 来构建镜像,-t 指定镜像名。
1)构建镜像的几个原则:
2)镜像分析工具
3)docker 镜像瘦身
1)新增一个容器
新建容器、运行容器都是通过这条命令一次完成的:
> docker run -d -p 80:80 docker/getting-started
这样就等同于基于镜像新建容器、在运行该容器。
2)查看所有容器
查看所欲容器:docker ps -a
查看所有运行容器:docker ps
3)容器状态
created:已创建,但还没有被启动;
running:运行中;
paused:容器进程被暂停了;
restarting:容器进程正在重启中;
exited:容器退出运行;
destroyed:容器已被删除;
4)查看容器端口映射
docker port container-id
如果返回空,代表没有端口映射。
5)查看容器日志
docker logs container-id/container-name
6)获取运行中的容器进程 ID
docker top container-id
docker inspect --format “{{State.Pid}}”
7)启动已停止运行的容器
docker start container-name/container-id
8)停止运行中容器
停止所有运行容器:docker stop $(docker ps -q)
停止单个运行容器:docker stop container-name/container-id
9)删除容器
删除所有容器:docker rm $(docker ps -qa) 包含所有运行中的、未运行的。
删除单个容器:docker rm container-id
10)导入导出容器
docker import - javastack:1.0
docker import https//www.javastack.cn/javastack-1.0.tar repo
docker export container-id > xx.tar