zoukankan      html  css  js  c++  java
  • 容器化技术介绍,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 也是在容器启动时执行命令。用于设置默认执行的命令

      

  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/14533530.html
Copyright © 2011-2022 走看看