• docker 实践一:简介和安装


    docker 的简介

    docker 绝对是这几年来的重量级开源软件,它是使用 Go 实现的开源容器项目,分属于虚拟化技术。

    docker 和 虚拟机

    docker 作为一种轻量级的虚拟化方式,在运行应用上和传统的虚拟机方式有许多的优势。

    • 启动、停止快
    • 对系统资源占用先对小
    • 镜像易获取、分发、更新和复用
    • 通过使用 Dockerfile 创建和部署灵活

    docker 和 虚拟化

    虚拟化: 在计算领域,一般指的是计算虚拟化或服务器虚拟化。

    在计算机技术中, 虚拟化是⼀种资源管理技术, 是将计算机的各种实体资源, 如服务器、 ⽹络、 内存及存储等, 予以抽象、 转换后呈现出来,打破实体结构间的不可切割的障碍, 使⽤户可以⽤⽐原本的组态更好的⽅式来应⽤这些资源。

    概况性的来说:虚拟化是对资源的抽象。⽬标往往是为了在同⼀个主机上同时运⾏多个系统或应⽤, 从⽽提⾼系统资源的利⽤率, 并且带来降低成本、 ⽅便管理和容错容灾等好处。

    虚拟化大致有基于硬件的虚拟化基于软件的虚拟化
    软件虚拟化又有一下的分类:

    1、应用虚拟化

    • Wine 等模拟类的软件

    2、平台虚拟化

    • 完全虚拟化。 虚拟机模拟完整的底层硬件环境和特权指令的执⾏过程, 客户操作系统⽆须进⾏修改。 例如IBM p和z系列的虚拟化、 VMware Workstation、 VirtualBox、 QEMU等;
    • 硬件辅助虚拟化。 利⽤硬件(主要是CPU) 辅助⽀持(⽬前x86体系结构上可⽤的硬件辅助虚拟化技术包括Intel-VT和AMD-V) 处理敏感指令来实现完全虚拟化的功能, 客户操作系统⽆须修改, 例如VMware Workstation, Xen, KVM;
    • 部分虚拟化。 只针对部分硬件资源进⾏虚拟化, 客户操作系统需要进⾏修改。 现在有些虚拟化技术的早期版本仅⽀持部分虚拟化;
    • 超虚拟化(paravirtualization) 。 部分硬件接⼜以软件的形式提供给客户机操作系统, 客户操作系统需要进⾏修改, 例如早期的Xen;
    • 操作系统级虚拟化。 内核通过创建多个虚拟的操作系统实例(内核和库) 来隔离不同的进程。 容器相关技术 Docker 即在这个范畴。

    docker 和 传统虚拟化方式之间的不同

    传统⽅式是在硬件层⾯实现虚拟化, 需要有额外的虚拟机管理应⽤和虚拟机操作系统层。 Docker容器是在操作系统层⾯上实现虚拟化, 直接复⽤本地主机的操作系统, 因此更加轻量级。

    docker 的核心概念

    docker 有三个核心概念:镜像(Image),容器(Container)和 仓库(Repository)。下面我们来详细说明:

    docker 镜像

    docker 的镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。镜像是创建 docker 容器的基础。

    docker 容器

    docker 容器类似于一个轻量级的沙盒,docker 利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而容器之间是彼此互相隔离、互不可见的。可以把容器看作⼀个简易版的Linux系统环境(包括root⽤户权限、 进程空间、 ⽤户空间和⽹络空间等) 以及运⾏在其中的应⽤程序打包⽽成的盒⼦。

    镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

    docker 仓库

    docker 仓库就是存放 docker 镜像的地方。而 Registry 是存放仓库的地方,同一类的镜像会存放在一个仓库中,并使用 tag 来进行区分。其中最大的公开仓库是官方的 Docker Hub,其次国内云服务供应商(如腾讯云、阿里云等)也提供了公开的仓库,国内用户的话最好访问它们。

    docker 的安装使用

    Docker Engine 是 docker 容器和核心组件,官方提供了社区版本(Community Edition, CE)和企业版本(Enterprise Edition,EE)。官方还提供了除引擎之外的其他服务:Docker Hub、Docker Cloud等。

    • Docker引擎: 包括⽀持在桌⾯系统或云平台安装Docker, 以及为企业提供简单安全弹性的容器集群编排和管理;
    • DockerHub: 官⽅提供的云托管服务, 可以提供公有或私有的镜像仓库;
    • DockerCloud: 官⽅提供的容器云服务, 可以完成容器的部署与管理, 可以完整地⽀持容器化项⽬, 还有CI、 CD功能。

    安装 docker

    注: 本系列都是使用 CentOS7,运行 Docker。

    1.安装 yum 源

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    sudo yum-config-manager  --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    2.安装 docker 社区版

    sudo yum install docker-ce docker-ce-cli containerd.io
    

    3.启动 docker 服务

    sudo systemctl start docker
    

    4.验证

    docker run hello-world
    

    执行成功会输出 Hello from docker!

    删除 docker

    删除 docker 的命令为:

    sudo yum remove docker-ce
    

    删除 docker 后,它对应的配置信息和镜像、卷等文件不会删除,可以使用以下命令清除:

    sudo rm -rf /var/lib/docker
    

    注:其他系统上的安装方式这里就不详细说明了,需要的同学直接查看官方文档吧 https://docs.docker.com

    配置 docker 服务

    为了避免每次使⽤Docker命令时都需要切换到特权⾝份, 可以将当前⽤户加⼊安装中⾃动创建的docker⽤户组, 代码如下:

    sudo usermod -aG docker USER_NAME
    

    ⽤户更新组信息, 退出并重新登录后即可⽣效。Docker 服务启动时实际上是调⽤了 dockerd 命令, ⽀持多种启动参数。因此, ⽤户可以直接通过执⾏ dockerd 命令来启动Docker服务, 如下⾯的命令启动Docker服务, 开启Debug模式, 并监听在本地的2376端口:

    dockerd -D -H tcp://127.0.0.1:2376
    

    这些选项可以写⼊/etc/docker/路径下的daemon.json⽂件中, 由dockerd 服务启动时读取:

    {
        "debug": true,
        "hosts": ["tcp://127.0.0.1:2376"]
    }
    

    当然, 操作系统也对Docker服务进⾏了封装, 以使⽤ Upstart 来管理启动服务的 Ubuntu 系统为例, Docker服务的默认配置⽂件为/etc/default/docker, 可以通过修改其中的DOCKER_OPTS来修改服务启
    动的参数, 例如让Docker服务开启⽹络2375端口的监听:

    DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
    

    修改之后, 通过service命令来重启Docker服务:

    sudo service docker restart
    

    对于CentOS、 RedHat等系统, 服务通过systemd来管理, 配置⽂件路径为 /etc/systemd/system/docker.service.d/docker.conf 。 更新配置后需要通过 systemctl 命令来管理Docker服务:

    sudo systemctl daemon-reload
    sudo systemctl start docker.service
    

    此外, 如果服务⼯作不正常, 可以通过查看Docker服务的⽇志信息来确定问题, 例如在RedHat系统上⽇志⽂件可能为/var/log/messages, 在Ubuntu或CentOS系统上可以执⾏命令journalctl-u docker.service。每次重启Docker服务后, 可以通过查看Docker信息(docker info 命令) , 确保服务已经正常运⾏。

  • 相关阅读:
    2月份热门的 24 个 jQuery 插件
    走近求伯君1 求伯君,1964年11月26日出生于浙江新昌县。
    转CSDN,13原则
    SQL Server数据库如何正确加密?
    Zend Studio提供zend studio教程、zend studio下载等相关资源的公益性站点。 订阅
    高端人才必看,生意人必读
    有速度才有效率,支持Google gear离线的网站和应用
    2009.08.20总结与微软中国开发部经理段老师的通话无锡德立解决方案
    从SOA、SaaS到博科自主配置平台
    MySQL 1045错误的解决方法
  • 原文地址:https://www.cnblogs.com/xingyys/p/11382327.html
Copyright © 2020-2023  润新知