------------恢复内容开始------------
一、Docker理论
Docker主要目标:Build,ship andRun Any App,Anywhere 通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的应用程序及其运行环境能够做到“一次封装,到处运行”。
有些情况下,开发交付代码、war包时给运维之间有可能会产生部署错误,原因主要是因为,一款产品:操作系统,运行环境,再到应用配置。开发+运维,之后的各种版本迭代,不同版本环境的兼容
软件带环境安装,安装的时候,把原始环境一模一样地复制过来,开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作的问题”,从搬家====搬楼,通过镜像将作业系统核心除外,运作应用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作。
1、docker是什么:GO语言、docker的三要素:仓库、镜像、容器
一句话:解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
镜像: 就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器,类似于java中的一个类
容器:利用容器独立运行的一个或一组应用,容器是用镜像创建的运行实例,容器类似一个简易版的linux环境
仓库:集中存放镜像文件的场所,类似github,国内基本使用阿里云,网易云
理解:
Docker本身是一个容器运行载体或称之为管理引擎,我们把应用程序和配置依赖打包好形成一个可交付的环境,这个环境就是Image镜像,通过镜像才能生成docker容器,Image文件可看左是容器的模板,Docker根据Image文件生成容器实例。同一个Image文件,可生成多个同时运行的容器实例
Image:文件生成的容器实例,本身也是一个文件,称为镜像文件
一个容器运行一种服务,当我们需要时,可通过docker客户端创建一个对应的运行实例,就是我们的容器
仓库,就是存放一堆镜像的地方,我们把镜像发布到仓储中,需要的时候从仓储中拉下来就行
2、docker能干嘛:
虚拟机的缺点:资源占用多、冗余步骤多、启动慢
docker:一次构建、随处运行。更快速的应用交付和部署、更便捷的升级和扩缩容、更简单的系统运维、更高效的计算资源利用。仅包含业务运行所需的runtime环境,只要软件,不需要linux的硬件
二、docker命令
1、镜像命令:
查看镜像
docker images:查看本机所有的镜像
docker images -a :列出本地所有镜像
docker images -q : 只显示镜像ID
docker images --digests:显示镜像摘要信息
docker images --no-trunc:显示完整的镜像信息
查找镜像:通过dockerhub查找
docker search “镜像名称”
docker search -s 数字(点赞数超过当前数字的) "镜像名称”
下载镜像:从自己配置的阿里云下载
docker pull "镜像名称" : latest (版本号) 没写版本号最新的
删除镜像
docker rmi -f “镜像名称” : latest(版本号),没写默认为最新版本
docker rmi -f "镜像名称1" “镜像名称2” : 批量删除
docker rmi -f $(docker images -qa) : 全部删除
2、容器命令:
只有镜像才能够创建容器,这是根本前提
docker pull centos:下载镜像演示,docker的核心,仅使用docker中程序运行环境,不需要硬件设施。正常情况下centos要4G空间,容器虚拟化技术,centos仅有200M左右。
新建并启动容器
i:以交互模式运行容器
t:为容器分配一个伪输入终端
docker run -it --name “镜像别名” 镜像名称/镜像images ID : 依照某个镜像,去创建容器 ,执行后,进入到对了对应容器中伪终端的根目录
docker run -d “容器名” :启动守护进程,没有进交互界面,此启动后,在docker ps 时发现并没有容器运行,Docker的容器后台运行,就必须有一个前台进程,将要运行的程序以前台进程的形式运行
列出当前所有运行的容器
docker ps
-l:上一此运行的容器、 -a 当前+过往、 -n 3 上3个容器列表、 -q:静默模式,只显示容器编号
退出容器
exit :关闭容器后退出
ctrl+P+Q:退出,不关闭
启动容器:
docker start 容器ID
docker restart 容器ID
停止容器:
docker stop 容器ID,慢慢熄火
docker kill 容器ID ,直接关电源
查看容器日志:
docker logs -f -t --tail 容器ID : f:最新的日志打印, t:时间戳,tail:显示最i后多少条