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 也是在容器启动时执行命令。用于设置默认执行的命令

      

  • 相关阅读:
    CF1037H
    CF1296F
    CF1446F
    CF1175G
    CF1146G
    CF1303G
    CF1067D
    CF1477E
    COJ16G
    ZJOI2018 迷宫
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/14533530.html
Copyright © 2011-2022 走看看