Docker 是docker.lnc 公司开源的一个基于LXC技术上构建的Container容器引擎,源代码托管在GitHub上,基于go语言并遵从Apache2.0 协议开源
Dokcer 是通过内核虚拟化技术(namespace以及Cgroups 等)来提供容器的资源隔离与安全保障等,由于Docker 通过操作系统层虚拟化实现隔离,所以Docker 容器在运行时不需要类似于虚拟机(Vm)额外的操作系统开销,提高资源利用率
docker 组成是传统的C/S 模式,组件:镜像(image)、容器(container)、仓库(Reository)
docker 与虚拟机的区别
docker 与 虚拟机和openstack 对比
类别 | Docker | Openstack | 虚拟机 | 部署难度
| 非常简单 | 组件多,部署负载 | 简单 | 启动速度 | 秒级 | 分钟级 | 分钟级 | 执行性能 | 和物理系统几乎一致 | Vm会占用一些资源 | 本身就占用一定资源 | 镜像体积 | 镜像是MB | 虚拟机镜像是GB 级别 | 虚拟机镜像是GB 级别 | 管理效率 | 管理简单 | 组件相互依赖,管理复杂 | 图形化,管理简单 | 隔离性 | 隔离性高 | 彻底隔离 | 属于单独系统,彻底隔离 | 可管理性 | 单进程,不建议开启ssh | 完整的系统管理 | 完整的系统管理 | 网络链接 | 比较弱 | 借助Neutron可以灵活组件各类网络架构 | 身体提供虚拟网卡支持 | docker
能做什么?
1、简化管理
2、开发效率,可以避免基础环境的部署
3、服务器整合,可以在一个服务器上做个多个服务应用
4、多租户
5、代码流水管理
6、应用隔离
7、debug 调试能力
8、快速部署
docker 缺点:
因为docker 是传统c/s 架构,当服务端冗机所有应用均失效。
docker 基础命令,循序渐进总结中。。。
下载镜像: docker pull centos
查看所有镜像: docker images
导出镜像: docker save centos >/opt/centos.tar.gz
导入镜像: docker load </opt/centos.tar.gz
公共镜像位置: dockerhub
删除镜像: docker rmi (如果镜像关联容器不能被删除)
创建容器并开启 docker run centos /bin/echo "hehe"
查看所有的容器:docker ps -a
查看所有正在运行的容器:docker ps | docker ps -a -l
创建一个自定义的容器: docker run --name mydocker -it centos /bin/bash
-i 标准输入输出打开 -t 分配一个伪终端 /bin/bash 执行一个镜像命令
在容器里执行exit 容器会自动关闭
启动容器: docker start 容器ID
关闭容器: docker stop 容器ID
进入容器: docker attach 容器ID (该方法如果在多端登录会在另一端也会显示)
删除容器: docker rm 容器ID (删除正在运行的容器 -f 参数)
终止所有容器: docker kill $(docker ps -a -q) ---最暴力也最牛b 的重启服务systemctl restart docker
esente 管理容器命令 如果不存在就yum -y util-linux 注释:该命令为进入另一个进程名称的空间
另一种进入容器退出并不影响容器
docker inspect --format “``.`State`.`Pid`” 容器id
nsenter -t 容器pid -i -u -p (进入容器互不影响)
如果在测试的时候可以退出容器并删除提示
docker run --rm 容器名字 /bin/echo "hehe"
搜索容器: docker searche 镜像名字
=============================================================
|