zoukankan      html  css  js  c++  java
  • docker 基础

    Docker基本概念和架构

    Docker基本概念

    什么是容器技术

    1. 一种虚拟化的方案
    2. 操作系统虚拟化
    3. 依赖于linux内核特性:Namespace和Cgroup
    •  linux容器技术 VS 虚拟机

    虚拟机需要完整的操作系统。需要模拟硬件行为,对内存和cpu损耗相当大 同样配置的服务器,容器能提供更多服务能力,服务更多用户。磁盘占用空间更少,启动更快。容器不容易安装和管理,而docker可以改善这些,使容器安装简单,管理方便。


    什么是docker

    1. 将应用程序自动部署到容器
    2. 使用GO语言编写的开源引擎

    Docker特点

    1. 提供简单轻量的建模方式:快,资源利用率高
    2. 职责的逻辑分离
    3. 快速高效的开发生命周期:在容器中开发,以容器形式交付,缩短产品上线周期
    4. 鼓励使用面向服务的架构:单个容器只运行一个应用或者进程,一系列内部互联的容器,使扩展、调试程序变得简单。分布式应用程序模型:高内聚,低耦合,单一任务,在运行过程中容易定位问题

    使用Docker做什么

    1. 使用docker容器开发、测试、部署服务
    2. 创建隔离的运行环境
    3. 搭建测试环境
    4. 构建Paas设施
    5. 提供SaaS应用程序
    6. 高性能,超大规模的宿主机部署

    Docker基本组成

    客户端、守护进程

    1. C/S架构
    2. 本地/远程

    镜像

    1. 容器的基石,是一个层叠的只读文件系统
    2. Bootfs:引导文件系统,容器启动后,它会移动到内存中,引导文件系统会被卸载
    3. Rootls:比如ubuntu,centos,一种或者多种操作系统,只读,联合加载方式,基础镜像
    4. Add emac:联合加载方式,在基础镜像上一次加载多个文件系统,对外只能看到一个麻醉中的文件系统会包含低层所有文件和目录,它下面的镜像为副镜像,以此类推到最底部,最底部是基础镜像

    容器

    1. 通过镜像启动
    2. 启动和执行阶段
    3. 写时复制
    4. 在镜像的最顶层加载一个可写层,初始可写层是空的,当文件系统发生变化的时候,这些变化都会应用到这可写层上,比如:如果修改配置文件,会先从只读层复制到可写层,该文件的只读版本依然存在,但是被可写层的文件副本隐藏。

    仓库

    1. 公有仓库
    2. 私有仓库

    Docker容器相关技术

    Namespaces命名空间

    1. 封装:代码隔离
    2. 操作系统:提供系统资源的隔离:进程,文件系统,网络等等,为了实现轻量级虚拟化服务,也就是我们说的容器
    3. 五中命名空间
    • PID :进程隔离
    • NET:管理网络接口
    • IPC:管理跨进程通信访问
    • MNT:管理挂载点
    • UTS:隔离内核和版本标识

    Control group 控制组

    cgroups是Linux内核提供的一种机制,这种机制可以根据特定的行为,把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。通俗的来说,cgroups可以限制、记录、隔离进程组所使用的物理资源(包括:CPU、memory、IO等),为容器实现虚拟化提供了基本保证,是构建Docker等一系列虚拟化管理工具的基石。

    cgroups的作用

    • 资源限制(Resource Limitation):cgroups可以对进程组使用的资源总额进行限制。如设定应用运行时使用内存的上限,一旦超过这个配额就发出OOM
    • 优先级分配(Prioritization):通过分配的CPU时间片数量及硬盘IO带宽大小,实际上就相当于控制了进程运行的优先级。
    • 资源计量:cgroups可以统计系统的资源使用量,如CPU使用时长、内存用量等等,这个功能非常适用于计费
    • 资源控制:cgroups可以对进程组执行挂起、恢复等操作。

    Namespaces命名空间和Control group 控制组带来的特性

    1. 文件系统隔离:每个容器都有自己的root文件系统
    2. 进程隔离:每个容器都运行在自己的进程环境中
    3. 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
    4. 资源隔离和分组:使用Cgroup将CPU和内存之类的资源独立分配给每个Docker容器

    Docker安装

    1. 环境说明:本地安装VMware+centos7
    2. docker安装参考: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce
    3. 安装命令如下:

    #yum update

    #yum install -y yum-utils device-mapper-persistent-data lvm2

    #yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    #yum install docker-ce

    #systemctl start docker

    1. 查看docker的日志

    #journalctl -u docker.service

    1. 关闭防火墙和网络服务

    #systemctl stop firewalld.service

    #systemctl disable firewalld.service

    #systemctl stop NetworkManger

    Docker基本命

    Docker run 命令

    •  docker run:创建一个新的容器并运行一个命令

    #docker run –help

    • 参数说明:
    • -a stdin : 指定标准输入输出内容类型,可选STDIN, STDOUT or STDERR
    • -d:后台运行容器,并返回容器ID
    • -i:以交互模式运行容器,通常与-t同时使用
    • -t:为容器重新分配一个伪输入终端,通常与-i同时使用
    • --name=”容器名称”:为容器指定一个名称
    • --dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主机一致
    • --dns-search 域名 :指定容器DNS搜索域名,默认和宿主机一致
    • -h “mars”:指定容器的hostname
    • -e username=”ritchie”:设置环境变量
    • --env-file=[]:从指定文件读入环境变量
    • -m:设置容器使用内存最大值

    Docker start/stop/restart 命令

    •  启动一个或者多个已经被停止的容器。停止一个运行中的容器。重启容器。

    #docker start [OPTIONS] CONTAINER [CONTAINER…]

    Docker kill 命令

    •  杀掉一个运行中的容器

    #docker kill [OPTIONS] CONTAINER [CONTAINER…]

    Docker rm 命令

    •  docker rm :删除一个或多少容器

    docker rm [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明:

    • -f :通过SIGKILL信号强制删除一个运行中的容器
    • -l :移除容器间的网络连接,而非容器本身
    • -v :-v 删除与容器关联的卷

    Docker create 命令

    •  创建一个新的容器但是不启动它,用法同docker run

    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

    Docker cp 命令

    •  用于容器与主机之间的数据拷贝。

    Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

    Options:

    • -a, --archive Archive mode (copy all uid/gid information)
    • -L, --follow-link 保持源目标中的链接

    本地镜像管理

    • docker images :列出本地镜像。
    • docker rmi :删除本地一个或多少镜像。
    • docker tag :标记本地镜像,将其归入某一仓库。
    • docker build :使用Dockerfile创建镜像。
    • docker save :将指定镜像保存成 tar 归档文件。
    • docker import :从归档文件中创建镜像。
    • docker info : 显示 Docker 系统信息,包括镜像和容器数。
    • docker version :显示 Docker 版本信息。

     

  • 相关阅读:
    课程笔记:——Javascript 中的预解释1
    我的博客园开通了~
    scheduling algorithm
    jQuery实现全选,全不选,反选
    jQuery实现表格选中行变色
    程序员永远的鸡血
    大家好,欢迎来到我的博客,我们一起成长,见证奇迹!
    存储过程和触发器优缺点分析
    ECStore去掉Index.php的方法
    C# 编码与解码
  • 原文地址:https://www.cnblogs.com/zoujiaojiao/p/10886256.html
Copyright © 2011-2022 走看看