容器化技术介绍,Docker简介以及基本操作

1.物理机时代

  • 部署非常慢
  • 成本很高 ,比如启动一个程序需要依赖JVM
  • 资源浪费
  • 难于扩展与迁移
  • 受制于硬件

2.虚拟机时代   主要解决上面硬件的问题

  • 多部署  彼此独立彼此隔离
  • 资源池   共享操作系统的资源,CPU 内存 硬盘等 
  • 资源隔离 
  • 很容易扩展
  • VM 需要安装操作系统  

3.容器化时代  主要解决虚拟机操作系统还要占用资源

为了解决虚拟机中 操作系统

 

 

 

虚拟机是物理资源层面的隔离,容器是App层面的隔离。

容器化是一种标准化的应用打包。就是把所有的数据、应用程序等一起打包给运维,运维就可以直接把包进行还原部署

 

 

 

 作为阿里云/腾讯云的容器化应用

是虚拟机+容器化的实现,比如我在阿里云买Mysql数据库使用,这个服务器就是一台服务器,根据应用场景的不同,来安装不同的容器。

 

Docker   标准化的应用

安装docker ,虚拟机要求 Centos 7 

  • 安装 yum 工具包
yum install -y yum-utils device-mapper-persistent-data | v2
  • 修改安装源,因为国内安装很慢,使用阿里云安装源
  •  

     

  • 安装docker, 后缀是ce 代表社区版本,如果是ee代表企业版本
yum -y install | docker-ce
  • 启动docker   
service docker start

启动后查看docker版本号

docker version

 

 

会安装客户端上面  和服务端 下面 两个版本

我们可以尝试从docker 的中央仓库中 把hello-world 这个镜像拉取下来并运行

 

 

 

阿里云Docker 镜像加速服务

 

 

Docker 基本概念

Docker 是容器化平台

 

 

 

 Docker Daemon 主要是镜像的获取,容器的创建,作为servier 主要提供服务的

Rest Api 层证明 docker 客户端是基于Http请求的

这种CS 架构下有什么好处呢?

 作为客户端可以同时管理 上图右面的三台机器。、

 

容器与镜像

  • 镜像: 镜像是文件,只读的,提供了运行程序完整的硬件资源,是应用程序的集装箱。
  • 容器:是镜像的实例,由Docker负责创建,容器之间彼此隔离

Docker 执行流程

 

 

比如我们想装Redis,客户端先执行Pull 命令。 Dockers_Host 中的Docker daemno 会在本地镜像中寻找是否由redis镜像,如果没有,就会从远程镜像拉取下来。燃火本地需要执行Docker run 命令 。会根据redis 镜像 创建一个Redis 的Container 容器。

Docker 常用命令

 

 其中 -f 代表强制执行

 

Docker 宿主机 与容器通信 : 以上创建了一个tomcat 容器后不是直接能够访问了,因为外界是不能够直接访问里面容器的端口的,必须通过宿主机进行端口的映射才能访问。

 

 

端口的映射过程

 

 然后输入  netstat -tulpn 查看端口号的使用情况

 

 可以看到8000端口是监听状态,提供服务的程序名是docker proxy

这个程序主要是把8000端口转发到内部8080端口的一个代理。

 

但上面的程序运行是阻塞状态,如果想在后台运行需要 加一个  -d tomcat 命令可以后台运行。

 

容器内部结构

以tomcat举例,其实在容器内部是有一个迷你版的tomcat的

 

 

 

 

Docker 的生命周期

 

 

Dockerfile 主要为了 构建镜像

 

 

镜像分层(layer) 概念

  1. 先创建一个临时容器。就像一个存档
  2. 再上一个临时容器生成一个临时快照。
  3. 好处就是 在上层容器 基础上继续做操作,节省资源,加快创建速度

Dockerfile 基础命令

 

 

 

Dockerfile 执行指令

  • RUN  :在构建镜像时执行命令
  • ENTRYPOINT: 在容器启动时执行命令,一定会被运行,而cmd 如果有多个只有最后一个可以运行
  • CMD 也是在容器启动时执行命令。用于设置默认执行的命令

  

 

posted @ 2021-03-14 18:16  落叶已归根  阅读(639)  评论(0编辑  收藏  举报