• docker 尚硅谷


    第1课时 docker_前提知识要求和课程简介

    前置知识要求:

    1、linux

    2、git

    docker 的架构图

    yfodrv4f@[19

    这是看完整个课程后自己的理解呀:

    client :客户端

    docker build : 将容器打包成镜像

    docker pull : 从docker hub 或者 阿里云上拉取镜像

    docker run : 以某个镜像为模板启动容器

    docker_host : 运行docker demon进程的主机

    images : 镜像 类似于java中的类 是容器的模板

    containers : 容器 类似java中的实例 是模板的一个具体实现

    容器相当于鲸鱼背的一个一个的集装箱,容器包含了自己希望运行的软件

    以及软件运行的基本环境。

    Docker高级篇

    Swarm/compose/Machine/mesos/k8s/ --- CI/CD jenkinds整合

    第2课时 docker_为什么会出现

    第3课时 docker_理念

    Docker是基于Go语言实现的云开源项目。

    Docker的主要目标是“Build,Ship and Run Any APP,Anywhere", 也就是通过对应用组件

    的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到一

    次封装,到处运行

    Linux容器技术的出现就解决了这样一个问题,而Docker就是在它的基础上发展过来的。

    将应用程序运行在docker容器上面,而docker容器在任何操作系统上都是一致的,这就

    实现了跨平台、跨服务器。只要一次配置好环境,换到了别的机器上就可以一键部署

    第4课时 docker_是什么?

    (总结 背诵)docker 是一个容器运行的载体(或者说是管理引擎)

    安装完docker后,会在后台运行一个 docker的守护进程,用来监听并解析客户端发来的

    请求,然后对 镜像,容器和仓库进行相关操作

    第5课时 docker_能干什么

    1、 之前的虚拟机技术

    VM: 不仅模拟了操作系统,还模拟了硬件

    缺点: 资源占用多 冗余步骤多 启动慢

    2、容器虚拟化技术:

    由于虚拟机存在的缺点,Linux发展处另一种虚拟化技术 : Linux容器(Linux

    Containers,缩写为LXC)

    Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,

    就可以将软件运行的所需的所有资源打包到一个隔离的容器中。容器与虚拟

    机不同,不需要捆绑一整套操作系统,只需要软件工程师所需要的库资源和

    设置。系统因此变得高效轻量 并保证部署在任何环境中的软件都能始终如一

    的运行

    3、docker与虚拟机的区别

    1)传统的虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行应用程序

    2)而容器内的应用进程直接运行于宿主的内核,而容器没有自己的内核,而且也没有硬件虚拟,因此容器比虚拟机更加轻便

    3)每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间不会相互影响

    1591053320(1)

    4、开发自运维:DevOps

    第6课时 docker_3要素

    Docker的基本组成 : docker架构图

    yfodrv4f@[19

    镜像

    Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以

    创建多个Docker容器

    镜像 ————> 类

    容器 ————> 实例

    容器:软件运行的最基础的环境+软件

    Docker利用容器(Container)独立运行一个或者一组应用。容器是用镜像创建的运行实例

    他可以被启动、开始、停止删除。每个容器都是相互隔离的,保证安全的平台

    可以把容器看成是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间

    、网络空间)+ 运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的

    统一视角,唯一区别在于容器最上面的那一层是可读可写的。

    仓库:

    仓库(Repository) 是集中存放镜像文件的场所。

    仓库 和 仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,

    每个仓库中存放着多个镜像,每个镜像有不同的标签(tag) (l类似于版本号)

    仓库分为公开仓库 和 私有仓库

    最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库

    包括阿里云 和 网易云等

    总结:

    1591074544(1)

    第7课时 centos6安装Docker

    1、安装相关依赖

    yum install -y epel-release

    2、安装docker

    yum install -y docker-io

    (注意:遇到:No package docker-io available 错误:无须任何处理 ,我估计

    是网络到不了上述的四个域名,不管了)

    采用如下命令:

    yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

    3、安装后的配置文件:

    /etc/sysconfig/docker

    4、启动docker的后台服务:

    service docker start

    5、docker version 查看docker的相关信息

    并验证docker是否安装成功

    1591177871(1)

    第8课时 centos7安装Docker(略)

    第9课时 阿里云镜像加速器配置

    1591183607(1)

    在docker的配置文件中配置阿里云的镜像加速地址:

    other_args="--registry-mirror=https://itd6uilt.mirror.aliyuncs.com"

    查看镜像加速器配置是否生效:

    ps -ef|grep docker

    1591185414(1)

    第10课时 helloworld镜像

    1、命令:docker run hello-world

    1591185816(1)

    2:run 干了什么?

    根据镜像常见并启动容器

    1591185921(1)

    第11课时 运行底层原理

    1、docker是怎么工作的?

    Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过SocKet连接从客户端访问,守护进程从客户端接受命令,运行并管理运行在主机上的容器。容器,是一个运行时环境,也就是鲸鱼背上的集装箱

    2、docker为什么比虚拟机快

    不需要虚拟硬件,并且与宿主机共用os

    1)docker有着比虚拟机更少的抽象层。由于Docker不需要实现硬件资源的虚拟化,运行在Docker上的程序直接使用的是实际物理机的硬件资源,因此在CPU,内存的利用率上,docker将会在效率上有着明显的优势

    2)docker与宿主机共享OS(操作系统),

    所以当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,这个过程是

    分钟级别的,Docker直接利用宿主机的操作系统,省略了整个过程,因此新建一个Docker只需

    要几秒钟 !!!

    1591186924(1)

    第12课时 Docker帮助命令

    1、帮助命令

    docver version : 查看docker的版本

    docker info :

    docker --help : 查看docker的所有命令

    第13课时 Docker镜像命令

    1、docker images :

    作用:查看所有本地的镜像

    参数: docker images -a : 列出本地的所有镜像(包含中间层镜像)

    docker images -q: 只显示镜像ID

    docker images -qa : 获取本地所有镜像的镜像Id

    docker images --digests : 显示镜像的摘要信息

    docker images --no-trunc : 显示完整的镜像信息 (no truncate 别截取)

    acu((5~n`xh0

    2、docker search 某个xx镜像的名字: 查询是在 docker.hub 上查,拉取是从阿里云拉取

    作用:在 docker.hub 上查该镜像

    参数: docker search -s 30 tomat : 查看点赞数 > 30 的tomcat镜像

    docker search --no-trunc tomat : 显示完整的镜像描述信息

    docker search --autocommit

    3、docker pull xx某个镜像的名字

    docker pull tomcat = docker pull tomcat:latest ==> 默认拉取最新的镜像

    4、docker rmi xxx某个镜像 (remove image)(默认删除 docker rmi xxx某个镜像:latest )

    docker rmi -f 镜像名

    docker rmi -f 镜像ID ==>删除单个镜像

    docker rmi -f 镜像名1:TAG 镜像名2:TAG ==> 删除多个镜像

    docker rmi -f $(docker images -qa) ==> 删除所有的镜像

    第14课时 Docker容器命令(上)

    1、有镜像才能创建容器,这是根本前提

    2、新建 并 启动容器

    docker run 【options】 image 【command】【arg】

    【options】:参数

    1591313725(1)

    3、列出当前正在运行的所有容器(不带任何参数)

    docker ps 【options】

    1591312584(1)

    docker ps -n 3 显示最近创建的三个容器

    docker ps --no -trunc 查看正在运行的容器的完整信息

    4、关闭容器:

    exit : 退出并关闭容器 ==》 关闭容器 指的是容器处于停止状态!!

    ctrl+p+q :

    5、启动容器

    docker start 容器的ID

    【注意】此时是没有进去交互模式的

    如果要进入交互模式:

    键入命令:docker exec -it 容器ID bin/bash

    或者 : docker attach 容器ID

    6、重启容器:

    docker restart 容器的ID

    7、停止容器

    docker stop 容器的ID

    8、强制停止容器

    docker kill 容器的ID

    9、删除已停止的容器

    删除容器 : docker rm 已停止的容器的ID

    强制删除容器: docker rm -f 容器的ID

    删除所有容器: docker rm -f $(docker ps -q -a)

    或者 docker ps -a -q|xargs docker rm

    第15课时 Docker容器命令(下)

    1、启动守护式容器

    docker run -d 镜像名

    1591398870(1)

    docker run -d --name="centos_h" centos /bin/sh -c "while true;do echo hello zzyy;sleep 10;done"

    【实例】

    1591399799(1)

    2、查看容器日志

    docker logs -f -t --tail 容器ID

    -t 加入时间戳

    -f 跟随最近的日志打印

    --tail 数字显示最近的多少条

    3、查看容器内部运行的进程

    docker top 容器ID

    4、查看容器内部细节

    docker inspect 容器ID

    5、进入正在运行的容器

    docker attach 容器ID

    docker exec -it 容器ID bin/bash

    1591400400(1)

    6、拷贝容器内的数据到主机上

    docker cp 容器ID:容器内的路径(/tmp/um.log) 主机的路径(/root)

    docker cp 737d027a2e8a:/tmp/test.txt /root/tmp

    第16课时 Docker_ 镜像原理

    1、是什么?

    1)Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,它包含运行某个软件所需的所有内容,包括代码,运行时库,环境变量和配置文件 (背诵)

    2)镜像加载原理

    3)分层的镜像

    UnionFS :联合文件系统

    tomcat镜像:

    1591441238(1)

    2、特点

    Docker镜像都是只读的

    当容器启动时,一个新的可写层被加载到镜像的顶部。

    通常这一层称为“容器层”,“容器层”之下的叫做镜像层

    第17课时 Docker_ 镜像commit 操作补充

    docker commit : 提交容器副本,使其成为一个新的镜像

    docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名】

    1、从hub上下载一个tomcat镜像到本地,并成功运行

    docker run -it -p 8080:8080 tomcat

    2、故意删除上一步镜像产生的tomcat容器的文档

    1591449280(1)

    1591449312(1)

    3、创建一个么有docs文档的tomcat镜像

    docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名】

    docker commit -a="linxi" -m="tomcat without docs" 3e782e4352b6 linxi/mytomcat:1.2

    1591449978(1)

    4、以我们新的 linxi/mytomcat镜像创建并启动一个容器和原来的容器比较;

    现在的访问 docs ====》报404

    =============================================================

    第18课时 Docker_容器数据卷介绍

    第19课时 Docker_容器数据卷用V命令添加

    第20课时 Docker_容器数据卷用dockerFile命令添加

    第21课时 Docker_容器数据 volumes-from

    1、是什么?

    卷就是目录或文件,存在一个或者多个容器中,由docker挂载到容器,但是不属于联合文件系统,

    因此能够绕过Union File System 提供的一些用于持续存储或者数据共享的特性

    2、能干嘛?

    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器

    删除时删除其挂载的容器卷

    特点:

    1)数据卷 可以在容器间共享或者重用数据

    2)卷中的更改可以直接生效

    3)数据卷中更改不会包含在镜像的更新中

    4)数据卷的生命周期一直持续到没有容器使用它为止

    3、容器内添加数据卷

    命令添加:使用镜像启动docker容器时,通过命令添加容器卷

    1)命令:

    docker run -it -v /宿主机的绝对路径目录:/容器内的目录 镜像名

    (相当于将宿主机的绝对路径目录usb 插入到 容器内的目录 这个主机上)

    2)查看数据卷是否挂载成功

    docker inspect 容器ID

    1591486135(1)

    3)容器和宿主之间数据共享

    4)容器停止退出后,主机在相应目录下修改数据是否会同步?

    完全同步

    5)docker run -it -v /宿主机的绝对路径目录:/容器内的目录:ro 镜像名

    ro==>read only ==>容器内的目录只读

    4、dockerFile

    1)是什么?

    镜像模板的描述文件

    dockerfile是用来构建docker镜像的构建文件,是由一些列的命令和参数构成的脚本

    2)DockerFile 体系结构

    3)dockerFile命令添加容器卷

    d5)mfvstby5g

    【注意】

    ① 根目录下新建mydocker文件夹并进入

    ② 在dockerFile中使用VOLUME指令来给镜像添加一个或者多个数据卷

    ③ file构建

    f]qy3`%e}(7y

    ④ build生成新的镜像 docker build

    docker build -f /mydocker/dockerFile2 -t zzyy/centos

    ⑤ run容器

    ⑥ 主机默认对应地址 docker inspect

    5、数据卷容器: 容器间数据共享

    容器间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

    docker run -it --name dc02 --volumes-from dc01 zzyy/centos

    第22课时 Dockerfile是什么?

    第23课时 Dockerfile构建过程解析

    第24课时 dockerFile保留字指令

    1、是什么?

    dockerfile是用来构建docker镜像的构建文件,是由一些列的命令和参数构成的脚本

    构建3步骤 : 编写dockerfile文件 ==》docker build ==》docker run

    文件是什么样的?

    1591591803(1)

    2、DockerFile的构建过程解析

    docfile内容基础知识

    clipboard

    docker执行Dockerfile的大致流程

    clipboard

    3、DockerFile的体系结构 (保留字指令)

    clipboard

    FROM: 基础镜像,当前新的镜像是基于哪个镜像的

    MAINTAINER : 镜像维护者的姓名和邮箱地址

    RUN: 容器构建时需要运行的命令

    EXPOSE: 当前容器对外暴露的端口

    WORKDIR :指定 创建容器后,终端默认登录进来的工作目录,是一个落脚点

    ENV : 用来在构建镜像的过程中 设置环境变量

    ADD : 将宿主机目录下的文件拷贝进镜像,并且add命令会自动处理URL 和解压 tar 压缩包

    COPY : 类似于ADD,拷贝宿主机的文件和目录到镜像中,

    将 从构建上下文目录中<源路径>的文件/目录 复制到新的一层的镜像内<目标路径>的位置

    VOLUME : 容器数据卷,用于保存数据和持久化操作

    CMD : 指定一个容器启动时要运行的命令

    Dockerfile中可以有多个CMD 指令,但是只有最后一个生效,CMD会被docker run 之后的

    参数替换

    ENTRYPOINT : 指定一个容器启动时要执行的命令

    ONBUILD : 父镜像在被子继承后,父镜像的onbuild会被触发 (类似于触发器)

    第25课时 dockerFile案例 - 自定义镜像mycentos

    Base镜像 【scratch】 Docker Hub中 99%的镜像都是通过在base镜像中 安装和配置需要的

    软件构建出来的

    s6m}1)q}]`ce

    现在我要自定义 mycentos ,使得我们的镜像具备如下特点 :

    1)登录后具有默认路径

    2)有vim编辑器

    3)查看网络的ifconfig

    ① 编写 dockerfile

    FROM centos MAINTAINER 1285653662@qq.com ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "success ok===============" CMD /bin/bush

    ② 以当前的dockerfile构建出新的docker镜像

    docker build -f /mydockerfile/dockerfile1 -t mycentos:1.3 .

    b$jb@bpgf}]l

    第26课时 dockerFile案例 -CMD-ENTRYPOINT 命令案例

    clipboard

    第27课时 dockerFile案例 - ONBUILD 命令案例

    第31课时 安装mysql

    第32课时 安装redis

    Docker常用安装

    1、总体步骤

    1)搜索镜像

    2)拉取镜像

    3)查看镜像

    4)启动镜像

    5)停止容器

    6)移除容器

    2、安装mysql

    1) docker hub上查找镜像

    直接取docker hub上查找,这样可以查看具体的版本号

    2)从docker hub上拉取镜像到本地,标签为 5.6

    q_}j(ek5b{1p

    3) 使用mysql5.6镜像创建容器

    docker run -p 12345:3306 --name mysql -v /houchen/mysql/conf:/etc/mysql/conf.d -v /houchen/mysql/logs:/logs -v /houchen/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 docker run -p 3306:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

    -v /houchen/mysql/conf:/etx/mysql/conf.d

    将主机下/houchen/mysql/conf/my.cnf , 挂载到 容器的/etc/mysql/conf.d

    -v /houchen/mysql/logs:/logs

    将主机/houchen/mysql/ 目录下的logs 目录挂载到容器的 /logs

    -v /houchen/mysql/data:/var/lib/mysql

    将主机 /houchen/mysql目录下的data目录 挂载到容器的 /var/lib/mysql

    -e MYSQL_ROOT_PASSWORD =123456

    初始化root用户密码

    -d mysql:5.6 后台程序运行MySQL

    `[yc7j378hqu

    将docker容器内 mysql的数据导入到宿主机器上!

    3、安装redis

    1)拉取镜像

    2) 根据镜像生成容器实例,并启动容器

    8zo0]z2jq2(b

    第33课时 本地镜像推送至阿里云

    1、镜像的生成方法

    1)前面的 DockerFile

    2) 从容器创建一个新的镜像

    2、将本地镜像推送至阿里云

    1)本地镜像素材原型

    2)阿里云开发者平台

    3)创建仓库镜像

    clipboard

    4)将镜像推送至阿里云

    docker login --username=白羊座的橙子呀 registry.cn-hangzhou.aliyuncs.com

    docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/houchen/mycentos:[镜像版本号]

    docker push registry.cn-hangzhou.aliyuncs.com/houchen/mycentos:[镜像版本号]

  • 相关阅读:
    BZOJ 2154 Crash的数字表格 【莫比乌斯反演】
    BZOJ 3529 [Sdoi2014]数表 【莫比乌斯反演】
    BZOJ 2820 YY的GCD 【莫比乌斯反演】
    BZOJ 2440 [中山市选2011]完全平方数 【莫比乌斯反演】
    [BalticOI 2004] Sequence
    AtCoder [ARC070E] NarrowRectangles
    AtCoder [AGC022E] Median Replace
    AtCoder [ARC101E] Ribbons on Tree
    CF107D Crime Management
    Loj 6497「雅礼集训 2018 Day1」图
  • 原文地址:https://www.cnblogs.com/houchen/p/14076608.html
Copyright © 2020-2023  润新知