• Docker(开课吧笔记)


    1.Docker基本概念

    Docker运行在Linux,需要git技能

    docker官网解析

     

    来源于容器又不仅仅是容器,第一个版本基于LXC,远远超过容器概念

     

    交付时拿到的是镜像,直接run运行想要的应用程序

    持续集成持续交付更加普及

    秒级启动,可轻易获取

    可忽略与应用无关的操作,用dockerfile就可以构建一模一样的镜像,平民技术

    2.Docker实现原理

    Cgroups对内存、CPU限制

    独立环境下不能看到别的机器

     

    数据库使用ipc提高系统通讯效率

    Userspace在3.8版本才有

    3.Docker组件介绍

     

    可运行成百上千的容器

    只能在一台机器上部署

    对docker镜像和容器进行管理

    1.8.1版本后

    帮助我们部署到云上

    Kitematic提供gui管理docker容器

     

    4.Docker实操环境

    用命令行来创建、启动、停止、删除管理虚拟机的软件

    https://github.com/liubin/docker101

    端口转发

     

     

     

     

    因为update后,导致os系统出现问题,重新安装客户端工具

     

     

    运行docker

    (实操)报错Dockerinfo

     

     

     

    5.什么是docker容器

    Docker启动参数

    添加灵雀云加速服务

    保存文件重启docker服务即可生效

    6.深入docker容器

     

    或者指定镜像id指定镜像,本地如没有就会去dockerhub查找

    解决dockerrun慢的问题

    容器也结束变为停止状态

    系统中不能重复命名,如重复必须删除停止重名容器,指定端口打开服务供外部服务;detach(分离)后台容器,容器将会在控制台输出输入;打印64位容器id

    使用浏览器localhost:5050,就能在命令行下面看到输出的日志,ctrl+C会同时退出attach和容器

    禁止这些信号传递给容器的第一个进程,避免退出容器

    为了调试简单

     

    访问端口

     

    将容器id赋值给cid

    不能删除正在运行的容器

    就行ssh到远程主机一样

    不建议修改正在运行的容器配置

    7.Docker容器的生命周期管理

    Events显示docker事件发生时会输出到控制台

    对运行的docker容器暂停pause

    恢复运行

    停止容器

    删除容器

     

    默认docker是不会自动重启容器的,需要手工重启

    达到最大重试次数才会放弃重启;restart则会不管是正常退出还是异常都会重启容器;每次重启时间间隔是上次重启间隔的2倍

     

    8.认识docker镜像

    镜像是docker的创新

    Rootfs操作系统文件系统

    最大的特点是分享,

    查看dockerHub的镜像

    节省一个新镜像启动时花费的时间

    查看镜像更详细的信息

    Dockerhub上还存在

    9.手工构建Docker镜像

    设置nginx为前台运行

    模式,容器启动后,nginx会在前台运行不会退出,启动容器时的进程退出,容器也就结束

    取容器id放到变量cid中

    新构建的镜像上传到云端

     

    镜像id一样,仓库名不一样

    Push到灵雀云

    10.使用Dockerfile构建Ruby

    没有打标签就会自动设置latest标签

    Build context是构建环境,Dockerfile文件夹底下的所有资源,docker build从客户端传输到docker守护进程,构建是在守护进程里面进行的。如果不想将文件夹下的log之类的文件可在当前文件夹路径添加.dockerignore文件指定哪些文件不被上传到上下文,里面的语言模式匹配采用了go语言的filepass模式。

    Centos基础镜像

    每条env只能设置一条环境变量,空格后面的内容都会作为环境变量的值Key=value可以设置多个环境变量,不同变量用空格分隔

    在容器中也能继续使用

    第一个run安装 ruby所需的工具

    第二个是下载源代码,解压编译

    使用\和&&进行分隔,增加代码阅读性

    Env、cmd不涉及到软件的修改,只会影响镜像的meta信息,因此增加层大小都是0,查看label,env是否正确报错到镜像当中

    如果构建指令第5条失败,修改后即可从第4条缓存开始执行

     

    Yum、update操作不想缓存可以添加参数

    11.Dockerfile指令说明

    推荐使用exec命令

    需要run命令加-p打开指定端口,不能在Dockerfile指定主机映射关系,会降低镜像的可移植性

    Run是容器构建构建过程中执行的命令,cmd是容器启动时指定执行的命令

    CMD用于指定容器启动时执行的命令,run是构建过程

    CMD参数会传递到entrypoint指定的命令,上图第二种方式,也可在run中覆盖cmd指定的设置。

    与CMD指令相似,run指令中的参数都会当成参数再次传递给entrypoint指定的命令

    Entrypoint使用数组方式,可避免/bin/ssh –c带来的问题

     

    第一个没有指定参数,会默认使用CMD中的—help命令,传递给entrypoint通过entrypoint可以构建镜像,会显示帮助信息,第二条会覆盖CMD命令。

    Wokerdir从镜像在创建容器时会在容器内部设置一个工作目录,entryponit和cmd命令会在这个目录执行,可以为dokerfile后续的命令设置工作目录,也可以为最终的容器中设置工作目录

    Volume用于向基于镜像创建的容器中添加数据卷,一个数据卷可以存在于一个或多个容器内的特定目录,可以绕过联合文件系统,共享数据,对数据持久化的功能;可以将数据:源代码,数据库,或者其他容器添加到容器中,而不是将这些内容添加到镜像中,并允许多个容器间共享这些数据内容

    dockerfile使用Volume指令以后的代码尝试对volume里面的内容进行修改,修改不会生效,都不会进行修改。因为在dockerfile中除了from指令中的每一行,都是基于上一次临时镜像创建一个容器执行一条指令并通过docker commit命令得到一个新镜像,docker commit不会对volume进行保存,volume指令以后进行修改都不会保存下来

    用于将构建环境下的目录或文件复制到镜像中,文件原路径必须与当前构建环境相对于的文件或者目录,本地文件都会放到和docker同一目录下,我们不能复制该目录之外的文件,因为构建环境将会上传到docker的守护进程,而复制操作是在docker守护进程中进行的,任何构建文件之外的东西都是不可用的,也可使用url的形式,会在文件源下载

     

    Zip等文件指定为源文件,docker会通过-x tar实现了解压包,不过不支持以url位置使用归档文件,路径中不存在,会自动创建,类似mkdir –p,新创建的文件目录和格式为0755(0rwx-wx-wx),UID和GID都是0

    Copy类似add,只构建上下文中复制文件,只支持本地文件,不支持文件进行提取解压的工作,从远程下载,推荐使用,简单可控

    添加将来执行的指令到镜像当中,当镜像作为From镜像的参数时,这些触发指令就会在from指令执行时中加入到构建过程中,如:将当前代码拷贝到容器中,可将拷贝源代码的指令写到父镜像中,子镜像就不必写,该指令会在子镜像构建from指令后自动执行。如上图父镜像指定了ONBUILD,如果使用该镜像为父镜像,镜像构建时from指令后会插入一条add指令,是ONBUILD触发器中指定的,执行完add命令后才会继续执行构建文件的命令。

    ONBUILD防递归使用、from、container不使用。使用该命令需要标签如:ruby 2.0 ONBUILD

    12.通过构建私有镜像服务器

    将busybox重命名为

     

     

    镜像是在registry中如何存储

     

    有镜像的元数据和镜像的数据

    除了将镜像数据挂载到宿主机以外,还可以通过storege driver存储到云存储服务,

    只能声明在容器内的路径,如果启动容器时,没有给数据卷指定宿主机上的,它就会在以下目录创建数据卷

    所以删除的时候需要加-v,否则数据卷是不会自动删除

     

    基于log,发送报告等,除了邮件

    13.为私有镜像服务添加Basic

     

    14.为私有镜像服务添加Token

    15.DockerHub和自动构建

    16.Docker容器连接

    17.创建和使用数据卷

    18.使用数据卷容器

    19.使用DockerCompose

    20.Docker Compose配置文件解说

    21.初识Docker Machine

    Centos7安装vitualbox

    查看版本

    安装dockermachine

    下载VirtualBoxRHEL软件库配置文件

    cd /etc/yum.repos.d

    wget -P /etc/yum.repos.d http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo

     

    安装RPMForge.

          首先从http://pkgs.repoforge.org/rpmforge-release/上下载相应的rpm文件,我下载的是rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm,具体版本信息请参考:http://wiki.centos.org/zh/AdditionalResources/Repositories/RPMForge

     

    将安装包拷贝到/usr/local目录下

    rpm -ivh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

     

     

     

    yum install dkms

    安装开发环境

    yum groupinstall "Development Tools" 
    

    
    				

    安装qt和qt-
    

    yum install qt qt-x11
    

    
    				

    将安装包拷贝到/usr/local然后执行命令
    

    yum install VirtualBox-5.0-5.0.16_105871_el7-1.x86_64.rpm

    报错信息

    安装扩展VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0-5.0.16_105871.vbox-extpack

     

    解决办法

    yum install kernel-headers

    yum install make

    重启

     

     

    报错

     

    /sbin/rcvboxdrv setup

     

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox Digital OceanMicrosoft Azure

    查看yum安装软件的目录

     

    whereis yum

    1、安装

    curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64 >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine

    查看docker-machine版本:

    docker-machine -v

    基本使用

    查看当前的machine:

    docker-machine ls

     

    报错

     

    22.使用DockerMachine创建云主机

     

     

    23.DockerMachine命令详解

    24.Swarm简介

    获取swarm集群的id

    Master报错

    创建agent01报错问题

    解决

     

    用mobatxterm连接centos7操作时报错:

    将集群id保存在token变量

    在centos7里面执行

     

    创建两台agent

    启动5个容器

    过滤机制

     

    Vagrant虚拟机启动swarm

     

    25.Swarm调度策略和过滤机制

     

    26.Docker网络基础

    27.Docker网络模式

    28.容器os和容器标准化

    29.网络、存储和PaaS平台

    30.基于Docker进行持续集成

    31.使用灵雀云命令行工具

    32.灵雀云简介

  • 相关阅读:
    MySql模糊查询like通配符使用详细介绍
    使用powershell批量添加Qt的文件(生成pro)
    宏定义的教训
    使用powershell批量添加Keil和IAR的头文件路径
    python和数据科学(Anaconda)
    CDCE913产生任意频率
    QT中检索设定目录下所有指定文件的方法
    QT中将ASCII转换为对应数值的方法
    STM8如何使用自带的bootloader
    QT中使用函数指针
  • 原文地址:https://www.cnblogs.com/liuyifeng/p/5690796.html
Copyright © 2020-2023  润新知