一款产品从开发到上下线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网不得面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。
Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想,能不能从根本上解决问题。软件可以带环境安装 ?也就是说,安装的时候,把原始环境一模一样得赋值过来。开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题。
Docker镜像的设计,使得Docker得以打破过去【程序即应用】的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
解决了运行环境和配置问题软件容器。方便做持续集成并有助于整体发布的容器虚拟化技术。一次构建到处运行
2、能干嘛
linux虚拟机的缺点:1. 资源占用多 2. 冗余步骤多 3. 启动慢
Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,没有自己的内核,而且以没有进行硬件虚拟,每个容器之间互相隔离。
二、Docker安装 1、Docker的基本组成
镜像 容器 仓库
* Docker镜像(Images)就是一个只读的模板。镜像可以用来创建很多容器。
* 容器是用镜像创建出来的运行实例。可以把容器看成一个简易版的Linux环境。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
* 仓库是集中存放镜像文件的场所。仓库分为公开仓库和私有仓库。
架构图:
2、安装步骤
以CentOS7举例,官方文档地址:Install Docker Engine on CentOS | Docker documentation
三、Docker常用命令 1、镜像命令1.卸载旧的版本
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine2.需要的安装包
yum install -y yum-utils
3.设置镜像的仓库
yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推荐使用阿里云镜像# 更新yum软件包索引 yum makecache fast
4.安装docker相关的 docker-ce 社区版 ee 企业版
yum install docker-ce -y
5.启动docker systemctl start docker
6.查看安装版本 docker version
7.docker run hello-word
8.查看一下下载的这个hello-word镜像
docker images
还可以使用阿里云容器镜像服务进行进一步加速
* docker images 列出本地主机上的镜像
-a:列出本地所有的镜像(含中间影像层)
-q:只显示镜像ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
* docker search 某个xxx镜像名字
-s 30 tomcat 列举点赞超过30的
* docker pull 拉取的某个xxx镜像的名字:版本号 默认是:latest
* docker rmi -f 删除的某个xxx镜像名字ID:版本号 默认是:latest
删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部 docker rmi -f $(docker images -qa)
2、容器命令* 有镜像才能创建容器,这是根本前提(下载一个CentOS镜像演示)
* 新建并启动容器
docker run [options] image(镜像ID) [command] [arg...]
--name="容器新名字":为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i一起使用
-P:随机端口映射
-p:指定端口映射,有一下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
* 查看正在运行的所有容器 docker ps
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-lq:静默模式,只显示容器编号
--no-trunc:不截断输出
* 退出容器
exit 容器停止退出
ctrl+p+q 容器不停止退出
* 启动容器 docker start 容器ID或容器名
* 重启容器 docker restart 容器ID或容器名
* 停止容器 docker stop 容器ID或容器名
* 强制停止容器 docker kill 容器ID或容器名
* 删除容器 docker rm 容器ID或容器名
* 一次性删除所有容器 docker rm -f $(docker ps -qa)
重要:
* 查看日志: docker logs -ft --tail
-t 时加入时间戳 -f跟随最新的日志打印 --tail 显示最后多少条
* 查看容器内的进程 docker top 容器ID
* 查看容器内部细节 docker inspect 容器ID
* 重新进入后台容器
在容器中打开新的终端,并且可以启动新的进程 docker exec -it 容器ID bashShell
直接进入容器启动命令的终端,不会启动新的进程 docker attach 容器ID
*从容器内拷贝到主机上 docker cp 容器ID:容器内路径 目的主机路径



