美文网首页
开启Docker之旅

开启Docker之旅

作者: 努力努力再努力_y | 来源:发表于2018-09-06 16:02 被阅读12次

    一、docker简介

    1. 什么是虚拟化技术

    所谓虚拟化技术其实是一种资源管理技术,它可以将我们计算机中的实体资源进行虚拟化。
    虚拟化技术种类很多,例如:软件虚拟化、内存虚拟化、硬件虚拟化、网络虚拟化(vp)、桌面虚拟化、服务虚拟化、虚拟机等等。
    目的:就是为了提供我们计算机的使用率
    在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老旧硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用

    2. 常见虚拟化架构
    • 全虚拟化架构
      虚拟机的监视器(hypervisor)是类似于用户的应用程序运行在主机OS之上,如VMware的workstation,这种虚拟化产品提供了虚拟的硬件


    • OS层虚拟化架构
      虚拟出来的系统只能与底层操作系统相同-------docker
      OS层虚拟化架构虚拟出来的操作系统需要和我们底层的操作系统共享系统内核


    • 硬件层虚拟化架构
      不依赖底层操作系统


    3. docker容器化技术

    容器主要的作用就是装东西;比如我们的数组,集合也是容器,我们可以使用数组,集合来存储我们的数据。

    我们可以使用docker来装我们的软件,比如mysql、tomcat、redis、nginx等等

    好处:方便我们对软件的环境进行搬运(开发环境、测试环境、生成环境)、减少部署成本、环境需要直接将容器给它即可。

    各个容器之间是隔离状态:减少了软件之间的影响

    docker是OS层虚拟化架构的一种体现产品,OS层虚拟化架构虚拟出来的操作系统需要和宿主机系统共享一个内核。即docker容器的体积就相对比较小

    4. 虚拟化技术和docker的区别
    • 本质上的区别(体积小)


    • 使用上的区别


    5. docker的组件
    • 客户端和服务器
      Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。


    • 镜像
      镜像是构建Docker的基石,其中包括了容器的文件系统结构与内容,它与docker的配置文件共同组成了docker容器的静态文件系统环境,用户基于镜像来运行自己的容器

    • 注册中心
      类似于Maven仓库--------https://hub.docker.com/explore/
      我们从何处去获得镜像?如果我们是第一次通过某个镜像去启动容器,首先宿主机会去 /var/lib/docker 目录下去找,如果没有找到,则会去registry中去下载镜像并存放于虚拟机,然后完成启动。
      registry可以想象为一个镜像的仓库,默认的registry是docker官方提供的registry服务,名为 Docker Hub。当然,你也可以构建自己的镜像仓库。

    • 容器
      容器就是镜像的运行实例。(镜像和容器之间的关系就类似于类和对象的关系)
      我们的容器的创建时需要通过镜像来进行创建的
      用户可以通过命令行或是API启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段

    二、docker的安装与启动

    1. 安装环境说明

    Docker官方建议在Ubuntu中安装,因为Docker时基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu时最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
    由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新

    2. 在vm中安装Centos7
    3. Docker的安装
    yum install docker
    

    提示信息:


    输入y进行安装


    docker -v 查看docker的版本信息
    
    4. docker的卸载
    • 查看docker的安装包
    yum list installed | grep docker
    
    • 删除安装包
    yum -y remove docker.x86_64
    yum -y remove docker-client.x86_64
    yum -y remove docker-common.x86_64
    
    • 删除docker镜像
    rm -rf /var/lib/docker/
    
    • 再次检查Docker是否已经卸载成功


    5. 启动与停止Docker

    systemctl命令是系统服务管理器指令,它是service和chkconfig两个命令组合。

    systemctl start docker 启动docker
    systemctl status docker 查看docker的启动状态
    systemctl stop docker 关闭docker
    systemctl restart docker 重启docker
    
    docker info 查看docker的概要信息
    docker --help 查看docker的帮助文档
    
    6. 启动是报错解决

    此linux的内核中SELinux不支持 overlay2 graph driver,解决办法:

    • 启动一个新内核
    • 在docker里禁用selinux --selinux-enabled=false
    vi /etc/sysconfig/docker
    

    三、docker镜像操作

    1. 列出镜像

    列出宿主机上所有存在的镜像

    docker images
    
    2. 搜索镜像

    从注册中心查找镜像

    docker search tomcat
    
    3. 拉取镜像

    我们拉取镜像默认是从Docker Hub镜像仓库上进行获取的



    国内下载官方镜像较慢,可使用国内镜像加速器Mirror、Private Registry


    • 编辑ustc镜像加速器
    vi /etc/docker/daemon.json
    
    • 配置内容如下
    {
      "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
    }
    
    • 重启docker
    systemctl restart docker
    
    • 镜像操作命令
    docker pull zookeeper 拉取镜像
    docker rmi 镜像名称/镜像ID 删除镜像
    docker rmi `docker images -q` 删除所有镜像
    docker images -q 获取所有镜像ID
    

    四、docker容器操作

    1. 查看容器
    docker ps 查看正在运行的容器
    docker ps -a 查看所有的容器(包含了正在运行的容器以及之前启动过的容器)
    docker ps -l 查看最后一次运行的容器
    docker ps -f status=exited 查看停止的容器
    
    2. 创建与启动容器(容器名称不能重复)
    • 创建容器
    docker run
    

    在创建容器的时候需要使用一些常用参数:


    • 创建交互式容器
      特点:当我们第一次退出容器以后,容器就关闭了,之后就不会了
    docker run -it --name=docker_tomcat tomcat /bin/bash
    后面的tomcat表示镜像名称、/bin/bash(命令解析器)
    
    • 创建守护式容器
    docker run -dt --name=docker_tomcat tomcat /bin/bash
    后面的tomcat表示镜像名称、/bin/bash(命令解析器)
    

    进入容器命令:

    docker exec -it container_name (container_id) /bin/bash
    container_name (container_id):容器名称或ID
    

    特点:退出容器不会关闭

    2. 停止与启动容器
    • 关闭容器
      docker stop $CONTAINER_NAME/ID
    • 启动已经关闭的容器
      docker start $CONTAINER_NAME/ID

    相关文章

      网友评论

          本文标题:开启Docker之旅

          本文链接:https://www.haomeiwen.com/subject/uukxgftx.html