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 命令) , 确保服务已经正常运⾏。

docker 实践一:简介和安装的更多相关文章

  1. 【Docker Compose】简介与安装

    1.简介 Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置 ...

  2. 【原创】运维基础之Docker(1)简介、安装、使用

    docker 18.09 官方:https://docs.docker.com/ 一 简介 Docker is a platform for developers and sysadmins to d ...

  3. Docker简介以及安装

    Docker简介以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是容器 1.一种虚拟化方案 与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运 ...

  4. RabbitMQ详解(一)------简介与安装(Docker)

    RABBITMQ详解(一)------简介与安装(DOCKER) 刚刚进入实习,在学习过程中没有接触过MQ,RabbitMQ 这个消息中间件,正好公司最近的项目中有用到,学习了解一下. 首先什么是MQ ...

  5. Docker简介与安装

    简介与安装 简介 Docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的 ...

  6. docker入门1---docker的简介和安装

    Tomxin7 Simple, Interesting | 简单,有趣 什么是Docker? 简介: Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发 ...

  7. Docker从入门到放弃(1) Docker简介与安装

    ​ 目录 一.Docker简介 1.Docker是什么: 2.为什么有docke的出现: 3.docker与传统容器的区别: 4.docker基本组成 5.docker工作原理: 二.Docker安装 ...

  8. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

    架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...

  9. Docker可视化管理工具Shipyard安装与配置

    Shipyard简介 Shipyard是一个集成管理docker容器.镜像.Registries的系统,它具有以下特点: 1.支持多节点的集成管理 2.可动态加载节点 3.可托管node下的容器 镜像 ...

  10. Docker实践之01-入门介绍

    目录 一.Docker概述 镜像 容器 仓库 二.安装Docker 1.在CentOS上安装Docker 2.在Ubuntu上安装Docker 3.启动docker 4.建立Docker用户组 5.测 ...

随机推荐

  1. yarn-site.xml 基本配置参考

    以下只是对yarn配置文件(yarn.site.xml)简单的一个配置 <configuration> <!-- rm失联后重新链接的时间 --> <property&g ...

  2. 小程序wx.showLoading的使用

    比如说在用户点击登录的时候,为了防止用户点击点第二次,可以加一个loading,在请求结束之后就关闭

  3. Python3中转换字符串编码

    在使用subprocess调用Windows命令时,遇到了字符串不显示中文的问题,源码如下:#-*-coding:utf-8-*-__author__ = '$USER' #-*-coding:utf ...

  4. 关于Vmvare虚拟机中Linux系统不能全屏的问题

    安装虚拟机后并加载ubuntu后,发现界面一直是正方形的,真是神了. 但是当时沉迷学习,这点小细节并没有什么影响,就没有管它. 嗯.... 现在,为了追求完美,是时候让它全屏了,可无论怎样搞,怎样百度 ...

  5. Web安全测试 — 手工安全测试方法&修改建议

    常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...

  6. centos7.2下查看的java版本号

    1,centos7.2下查看的java版本号 java -version

  7. 从结构到性能,一文概述XGBoost、Light GBM和CatBoost的同与不同

    尽管近年来神经网络复兴并大为流行,但是 boosting 算法在训练样本量有限.所需训练时间较短.缺乏调参知识等场景依然有其不可或缺的优势.本文从算法结构差异.每个算法的分类变量时的处理.算法在数据集 ...

  8. Keil MDK 5代码补全功能设置

    这段时间在用Keil5编程,经常会遇到在程序文件头部定义一个全局变量.在后面的编程过程中,经常会要用到这个变量,如果每次再打这个变量名会特别麻烦和浪费时间,我就想着Keil5有没有像vs软件一样的代码 ...

  9. python 设计模式之策略模式

    这几天太忙了,都没空写,所以持续了好几天. 1.策略模式的定义: 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 通俗的讲,也就是将那些使用的方法 ...

  10. opencv之dlib库人脸识别

    基础知识 python知识: import os,shutil shutil.rmtree("C:\\Users\\yangwj\\Desktop\\test") #删除目录 os ...