linux之docker
简介
Docker是一个开源的应用容器引擎,基于go语言,遵循从Apache2.0协议开源
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.
容器是完全使用沙箱机制,相互之间不会有任何接口.
docker的三大概念
镜像: --理解为系统盘dvd镜像,轻量级的镜像文件 仓库: --存储docker镜像的 容器: --是基于镜像运行出的,容器实例
Docker应用场景
1.本地依赖 --使用docker,可以节省大量时间.docker能提升开发者的开发效率,让我们快速搭建开发环境,开发环境的机器通常内存比较小,此前使用虚拟的时候,经常需要为开发环境的机器加内存,而通过 Docker 可以轻易的让几十个服务在 Docker 中跑起来。 2.搭建环境 --它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度 3.微服务 --微服务架构一一将一个整体的应用拆分成松耦合的单个体服务.你可以将每个服务打包为一个 docker 镜像并使用 docker-compose 来模拟生产环境(checkout docker networks)。最开始实践的时候可能会比较费时费力,但长远地来看,最终将产生巨大的生产力。 4.自动测试 --这里不是指在 Docker 中运行测试用例,而是将测试用例与镜像紧密运行在一起。当你针对一个 docker 镜像编写测试用例时会有一个很大的优势 5.部署过程 --许多主流的主机提供商都支持托管 docker,如果你拥有一个具有 shell 访问权限的专用节点/vm,那么事情将变得更容易。只需要设置好 docker,并在你想要的端口上运行你的镜像即可。 6.持续部署 --都说 Docker 天生适合持续集成/持续部署,在部署中使用 Docker,持续部署将变得非常简单,并会在进入新的镜像后重新开始。Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 7.多租户环境 --Docker 有意思的一个使用场景是在多租户的应用中,它可以避免关键应用的重写。如果你将应用程序服务公开给多个租户(租户指一组用户,例如组织),使用单租户方案设计的应用程序如果用上了 sub-domain + docker 可以快速获得提供多租户的服务。 8.来自一台机器的而多个app --ocker 仍可以很好地管理单个机器上的所有服务。你应该使用文件夹挂载来为每个基于数据的 docker 镜像保留数据。 9.扩容 --Docker 通过创建另一个容器来帮助你轻松地进行水平扩展。如果遇到巨大的高峰流量,Docker 可以帮助你解决问题 —— 只需添加更多的机器并增加负载均衡器背后运行的容器数量。
Docker的优点
1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。
Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。 2、避免选择恐惧症 如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,
所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。 3、节省开支: 一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,
让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
Docker安装
1.安装docker,由于网速问题,选择阿里云的yum源下载
yum install docker -y
2.启动docker
systemct1 start docker
3.docker加速器,加速下载
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
会生成一个docker配置文件,路径是/etc/docker/daemon.json
4.配置了加速器,需要重启docker
systemct1 restart docker
Docker的基本命令学习
增 #下载docker镜像 docker pull hello-world #运行docker镜像,产生容器实例 #运行docker镜像,ubuntu系统 docker run ubuntu #交互式的运行ubuntu 容器,进入容器空间内 docker run -it ubuntu /bin/bash #参数解释 -i 交互式的命令操作 -t 开启一个终端提供访问 /bin/bash 指定shell解释器 #打包构建一个携带vim的centos镜像文件 1.先运行一个centos基础镜像 docker run -it centos /bin/bash 2.在容器空间内,安装vim yum install vim -y 3.退出容器空间,提交这个容器,为新的镜像 docker commit 1d5698b91178 yuchao163/s17centos-vim #导出本地的镜像文件 docker save 0fc9d49cb739 > /opt/s17centos.tar.gz #导入镜像文件, docker load < /opt/s17centos.tar.gz
#删除容器记录 docker rm 容器id #批量删除容器记录 docker rm `docker ps -aq` #强制删除所有容器记录 docker rm -f `docker ps -aq` #删除镜像记录 docker rmi 镜像id #批量删除镜像文件 docker rmi `docker images -aq`
改: #修改docker镜像名,tag标记名 docker tag 镜像id 新的标记名 查: 运行过docker镜像后,会产生容器记录 #差看docker镜像的命令 docker image ls docker images #等同于上述命令,查看镜像 #查看正在运行的容器进程, docker container ls docker ps #docker ps只能查看正在运行的容器 docker ps -a 查看所有的容器记录 #docker容器,必须有后台程序在运行,否则容器就退出 #查询docker镜像记录 docker search centos