我们项目上线后.通常情况下会使用VM的方式.以最简单的web服务器和DB服务器为例,我们需要安装至少两台服务器.一台用来安装DB,一台用来安装web服务器.从步骤上讲,我们需要以下几步:
1:安装一台web server vm;
2:安装配置JDK;
3:安装tomcat.
4:安装DB server vm;
5:安装数据库软件,如MySQL;
如此,而且,一但服务器Down机.资料丢失再所难免.
Docker,顾名思义,容器,他类似于Maven一样.有一个中央服务器.上面放着tomcat server image,mysql server image等等.同样一台web server,一台 db server.我们需要的操作是如下:
1 : 下载一个tomcat image;
2 : 下载一个db image;
3 : 启动这两个镜像;
最简单的操作只需要这三步;
1 : Docker简介
2 : Docker的安装与加速
3 : 普通操作

一款产品从开发到上线,从操作系统到运行环境,再到应用配置,作为开发+运维之间的协作,我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后.不同版本环境的兼容,对运维人员都是考验.Docker的出现,对于上面的情况给出了一个标准化的解决方案.
环境配置如此麻烦,换一台机器,就要重来一次,费力费时,很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样的复制过来.开发人员利用Docker可以消除协作编码时"在我机器上运行OK的问题"
Docker镜像的设计,使得Docker得以打破过去[程序即应用]的观念,透过镜像将作业系统核心除外,动作应用各式所需要的系统环境,由下而上打包达到应用各式跨平台间的无缝接轨动作.实现一次构建,处处运行.

Build,Ship and Run any app,anywhere,也就是通过对应用组件的封闭,分发,部署,运行等生命周期的管理,使用户的APP及其运行环境能够做到"一次封装,到处运行"

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术.

由于虚拟机的缺点,LInux发展出了别一种虚拟化技术:Linux容器(LXC).

Linux容器不是一个模拟一个完整的操作系统,而是对进程进行隔离,有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中.容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需要的库资源和设置,系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行.
传统虚拟机技术是虚拟出一套三件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程.
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟.因此容器要比传统虚拟机更为轻便.
每个容器之间互相隔离.每个容器都有自己的文件系统.容器之间进程不会相互影响.能区分计算资源.
DevOps
更快速的应用交付和部署.
更便捷的升级和扩缩容.
更简单的系统运维.
更高效的计算资源利用.
Docker的优势
轻量,秒级的快速启动速度
简单,易用,活跃的社区
标准统一的打包/部署/运行方案
镜像支持增量分发.易于部署
易于构建,良好的Rest API,也很适合自动化测试和持续集成.
性能,尤其是内存和IO的开销.

更轻量,基于容器的虚拟化.仅包含业务运行所需要的Runtime环境,
更高效,我操作系统虚拟化开销,
更敏捷,更灵活[分层的存储和包管理,devops理念,支持多种网络配置]
官网:
Https://www.docker-cn.com
仓库
https://hub.docker.com/
Docker的安装实际上比较简单,官方给了非常详细的步骤说明.只是大多数初学者不看见官网的英语就退下了.认真看一下实际非常简单.而且看着官网说明你可以记住都需要些什么步骤.切记,初学者不要看百度步骤.盲目的执行命令.
Centos7 安装步骤:
https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/
Ubuntu 安装步骤:
https://docs.docker-cn.com/engine/installation/linux/docker-ce/ubuntu/>

由于Docker的中央服务器在国外.我们在国内下载镜像的时候速度上就有非常大的影响.类似于Maven一样.为了解决速度的问题.我们需要通过国内一些知名公司提供的服务进行加速.如阿里.
阿里Docker:
https://promotion.aliyun.com/ntms/act/kubernetes.html

# 第一步 : 登录到以下网站
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
# 第二步 : 左面找到镜像加速器.
复制加速地址.按下面的操作指引进行加速
操作指导
https://www.cnblogs.com/zhxshseu/p/5970a5a763c8fe2b01cd2eb63a8622b2.html
https://hub.docker.com
启动 Docker
sudo systemctl start docker
停止 Docker
sudo systemctl stop docker
普通重启 Docker
sudo systemctl restart docker
修改配置后重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run hello-world
查看版本
docker version
查看Docker 信息
docker info
Docker 帮助
docker help
列出本机Docker上已经安装的镜像:
docker images
搜索Docker hub上面的镜像
# 普通搜索,以Tomcat为例
docker search tomcat
# 搜索star大于50的镜像实例
docker search -s 50 tomcat
从Docker Hub上面下载镜像
# 以下载tomcat为例
docker pull tomcat[:version]
删除本地的某一个镜像
# 以删除tomcat为例
docker rmi tomcat[:version]
# 通过镜像ID删除
docker rmi -f 镜像ID
# 通过镜像ID删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
# 删除全部
# docker images -qa : 获取所有镜像ID
docker rmi -f $(docker images -qa)
下载一个Centos7镜像
docker pull centos
启动容器指令 : Run
参数说明
# 为容器启一个名称
-name="新容器名称"
# 后台运行容器,并返回容器ID,也就是启动守护士容器
-d
# 以交互模式运行容器,通常与-t同时使用.
-i
# 为容器重新分配一个伪终端,通过与-i同时使用
-t
# 随机端口映射 [大写P]
-P
# 端口映射 [小写P]
-p
启动一个centos实例
# 新建并进入容器,最后一个为本地容器的ID
docker run -it --name="rivercentos001" 9f38484d220f
查看当前正在运行的Docker 容器
docker ps
# 参数
# 列出当前正在运行的以及历史上运行过的
-a
# 显示最近创建的容器
-l
# 显示最近创建的N个容器
-n
# 静默模式,只显示容器编号
-q
# 不截断输出
--no-trunc
退出容器
# 退出并停止
exit
# 容器不停止退出
ctrl+P+Q
启动容器
docker start 容器ID或容器name
重启容器
docker restart 容器ID或容器name
停止
docker stop 容器ID或容器name
强制停止
docker kill 容器ID或容器name
删除已经停止的容器
# 删除已经停止的容器
docker rm 容器ID或容器name
# 强制删除已经停止或正在运行的容器
docker rm -f 容器ID或容器name
一次性删除所有正在运行的镜像
docker rm -f $(docker ps -qa)
后台运行
# 后台启动centos
docker run -d --name="rivercentos" centos
# [启动后会自动退出]
> Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是一直挂起的命令就会自动退出.
重新进入容器
# 第一种方式
docker attach 容器ID或容器名称
# 第二种方式{隔山打牛式,在宿主机向容器发送命令并获取结果}
docker exec -t 容器ID或容器名称 ls# 列出文件列表
从容器内拷贝文件到宿主机
docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址
# 例,拷贝容器river的aaa文件夹下的a.txt到宿主机的当前位置
docker cp river:/aaa/a.txt .
Docker这个容器技术非常有必要了解与学习.本教程适用于初学者.
下期我们来讲:
1:Docker日志;
2:容器打包与运行;
3:窗口数据卷;
想要学习的同学可以技术关注我们.





