zoukankan      html  css  js  c++  java
  • docker概述与安装及运行容器

    传统虚拟化
    传统虚拟化步骤
    1、安装虚拟化软件以及虚拟化的管理软件
    2、创建虚拟机
    3、给虚拟机安装os
    4、在虚拟机内部不是应用(http、db之类的应用)
    传统虚拟化的特点
    1、VM与VM之间是完全隔离的,并且虚拟机必须要安装os
    2、应用所运行的环境是建立在操作系统之上的
    3、应用迁移非常笨重
    传统虚拟化已经无法满足当前敏捷开发方式,VM的方式会导致开发环境和生产环境不一致,版本测试完成之后需要重新搭建环境。
    docker
    docker是容器的引擎工具,最主要是管理容器的生命周期,创建容器、管理容器、管理镜像等。容器是没有操作系统的概念,容器通过image来启动。当你通过一个image创建和启动一个容器的时候,容器内的进程就已经启动了。一旦容器内的process意外退出,容器也就死亡。即进程在容器在,进程毁容器亡。容器与容器之间隔离通过namespace(命名空间隔离),对于Linux操作系统而言一定存在namespace,无需另外安装。
    一个完整的docker由四个部分组成:
    docker client客户端
    docker daemon守护进程
    docker image镜像
    docker container容器
    docker功能特性
    隔离环境(系统、网络、文件系统)与应用
    解决依赖与版本问题
    易于分发开箱即用
    节点与容器快速扩容
    镜像制作简单便捷,管理方便。
    隔离
    通过cgroup(隔离和跟踪资源的使用)和namespace(组与组之间隔离)来实现轻量级的进程隔离。
    对应容器中运行的进程来说,自己独占了一个系统。
    容器间网络、文件及其他资源都互相隔离。
    版本与依赖
    传统模式下,多个不同环境或版本的项目需要部署在不同机器上,部署与后期维护管理复杂繁琐。
    使用docker通过多个不同版本或环境的镜像,可以同时运行在一台机器上互不干扰,部署与后期维护简单方便。
    分发与使用
    镜像可以通过导入、导出、上传到镜像仓库等多种方式进行分发。
    在启动了docker的系统上直接使用docker run即可启动镜像,无需特别配置。
    扩容
    容器扩容简单方便
    扩容节点只需安装并启动docker即可
    镜像制作
    镜像的灵魂dockerfile
    使用dockerfile进行指令控制
    基于linux命令易于理解快速上手
    易于定制与修改
    应用场景
    web应用的自动化打包和发布
    自动化测试和持续集成、发布
    应用服务,如mysql、redis等通过docker实现快速部署
    k8s私有云
    安装环境
    系统:centos 7.4 minimal
    分区:
    /boot xfs 500M
    swap 不使用
    / 剩余全部
    安装docker
    1、安装docker作为容器的引擎工具
    yum install -y docker
    2、启动docker服务
    systemctl enable docker
    systemctl start docker
    3、搜索image
    docker通过image来创建和启动容器,image在镜像仓库内。仓库分为公有仓库(如docker.io)和私有仓库。在默认情况下docker会访问公有仓库,docker会拉取公有仓库的image。
    docker search centos
    搜索公有仓库中含有centos关键字的image。
    4、下载image
    docker pull docker.io/centos
    pull即从公有仓库中拉取image到本地。
    5、查看本地image
    docker images
    6、启动容器
    docker run -d docker.io/centos
    -d即后端运行
    7、查看容器
    docker ps
    dockers ps -a
    没有结果即没有运行的容器,可能的原因是这个容器内没有进程。
    进程来源于执行一个可执行文件。
    使用docker通过一个image创建一个容器,容器内就会有进程,image内嵌入一条可执行的文件(命令)。通过这个image去创建一个容器的时候,会执行这个可执行文件,从而产生前端进程。
    docker.io/centos这个image不含有可执行文件,也没有触发一个可执行文件。所以创建这个容器的时,容器立即退出了。
    docker run -ti docker.io/centos /bin/bash
    -ti交互式运行
    8、查看容器内的的进程
    docker top
    docker top d54
    d54容器短id
    9、查看容器参数
    docker inspect d54
    10、查看容器id
    docker ps -q
    11、查看容器日志
    docker logs d54
    12、删除容器
    docker rm d54
    如果一个容器处于running状态无法删除。
    docker rm $(docker ps -qa)
    13、停止容器
    docker stop d54
    停止后的容器可以被删除。
    14、容器内的操作
    yum intall -y net-tools
    15、进入容器
    docker exec -ti 35d /bin/bash
    16、启动指定容器的参数
    指定容器主机名
    docker run -d -t --hostname=servera.example.com docker.io/centos
    指定dns
    docker run -d -t --hostname=serverb.example.com --dns 8.8.8.8 --dns 4.4.4.4 docker.io/centos
    指定ip
    docker run -d -t --hostname=serverc.example.com --dns 8.8.8.8 --dns 4.4.4.4 --ip=192.168.0.222 docker.io/centos
    定义变量
    docker run -d -e name=test -e MYSQL_USER=root -ti docker.io/centos /bin/bash
    容器退出后自动重启容器
    docker run -d --restart=always -e MYSQL_USER=root -ti docker.io/centos /bin/bash
    自动重启3次失败后将不再重启
    docker run -d --restart=on-failure:3-e MYSQL_USER=root -ti docker.io/centos /bin/bash
    查看启动帮助
    docker run --help

  • 相关阅读:
    Partition算法及Partition算法用于快速排序
    任意增减文件上传栏
    java版的下雪,大家圣诞快乐
    Java聊天室[长轮询]
    java汉字转拼音以及得到首字母通用方法
    RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library
    JAVA压缩 解压缩zip 并解决linux下中文乱码
    Java 线程转储
    用 Java 抓取优酷、土豆等视频
    Java Web 项目打包脚本
  • 原文地址:https://www.cnblogs.com/yinshoucheng-golden/p/10959978.html
Copyright © 2011-2022 走看看