0002 docker知识点

0002 docker知识点

001 docker的logo

002 前置知识: linux、maven、git

003 docker是什么

  • 基于go语言实现的云开源项目
  • 目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使得其运行环境实现“一次封装,到处运行”的结果

003 docker的三要素

  • 镜像(images)
  • 容器(container)
    • 容器是用镜像创建的运行实例
    • 可以被启动、开始、暂停、删除,且每个容器都是相互隔离的,保证平台的安全
    • 可以看成是一个简易版的linux环境
    • 容器和镜像几乎一模一样,唯一的却别在于容器的最上层是可读可写的
  • 仓库(repository)
    • 仓库是集中存放镜像文件的场所
    • 分为公开仓库和私有仓库
    • 国内最大的公开仓库是阿里云和网易

004 docker架构图

    

005 docker的安装

  没有安装过docker,操作系统是CentOS7.2

  第一步:  sudo yum install -y yum-utils

    

    第二步:

sudo yum-config-manager \>     --add-repo \>     https://download.docker.com/linux/centos/docker-ce.repo

    结果:

      

  第三步:启动docker,并运行HelloWorld程序

      

006 docker安装阿里云镜像加速器

  第一步:找到阿里云的镜像加速器

    

  第二步:进入docker中

    

  第三步:创建daemon.json,并写入内容(需要懂一些linux中vim的知识点)

    

007 常用命令  

    查看版本 docker version

    查看详细信息 docker info

    帮助命令【重点】docker --help

008 镜像命令【常用】

  命令01 : docker images

  功能:列出本地主机上的镜像

  参数

  • -a:列出本地所有的镜像(含中间映像层)
  • -q:显示镜像id
  • -digests:显示镜像的摘要信息
  • --no-trunc:显示完整的镜像信息

  实例:

    

  命令02 docker search 镜像名字:[TAG]

  功能:在网上查找该镜像(其中:[TAG]表示版本号,只要在后面添加上冒号加版本就能下载该版本的软件,如果不加上,则默认下载最新版本:如mysql:5.7)

参数:

    • --no-trunc:显示完整的镜像描述
    • -s 指定值:列出收藏数不小于指定值的镜像
    • --automated: 只列出automated build类型的镜像      

实例:

    

  命令03 docker pull 镜像名字:[TAG]

   功能:从网上下载该镜像(其中:[TAG]表示版本号,只要在后面添加上冒号加版本就能下载该版本的软件,如果不加上,则默认下载最新版本:如mysql:5.7)

   

  命令03 docker rmi -f 镜像id              功能:删除该镜像

  命令04 docker rmi -f 镜像名01:TAG 镜像名02:TAG    功能:删除多个镜像  

  命令05 docker rmi -f $(docker images -qa)       功能:删除所有镜像,,注意删除镜像前,该镜像是属于停止状态,运行状态的镜像无法删除

009 容器命令

  说明: 有镜像才能创建容器,这是根本

  命令01 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]    功能: 新建并启动容器

  命令02 docker ps [OPTIONS]                   功能: 列出当前所有正在运行的容器

  OPTIONS说明

    

  实例:

    

   

  命令03 exit     功能:容器停止并退出

  命令04 ctrl+P+Q   功能:容器不停止退出

  例如:

    

  说明

    命令05 docker stop 容器id或容器名    功能:停止容器

    命令06 docker kill 容器id或容器名     功能:强制停止容器(杀死容器)

    命令07 docker rm 容器id         功能: 删除已经停止的容器

    案例:

      

    

    命令08:docker rm -f $(docker ps -a -q)    功能: 一次性删除多个容器

    命令09 docker ps -a -q | xargs docker rm   功能: 一次性删除多个容器

      

    命令10 docker run -d 容器名        启动守护式容器

    命令11 docker logs -f -t --tail 容器id     查看容器日志

      参数:

       1) -t:加入时间戳

       2) -f:跟随最新的日志打印

       3) --tail: 数字显示最后多少条

    命令12 docker top 容器id        查看容器内运行的进行

   例如:

      

    命令13 docker inspect 容器id     查看容器内部细节

    例如:

      

    命令14 docker exec -it 容器id BashShell    进入正在运行的容器并以命令行的方式交互

     命令15重新进入 docker attach容器id       进入正在运行的容器并以命令行的方式交互

    区别

      attach:直接进入容器并启动命令的终端,不会启动新的进程

      exec: 是在容器中打开新的终端,比番茄可以启动新的进程

    例如:

      

      

    命令15 docker cp 容器id:容器内路径 目的主机路径    从容器内开呗文件到主机上

    例如:

      

    小结:

      

010 docker镜像

  是什么

  • 是一种轻量级、可执行独立软件包
  • 用来打包软件运行环境和基于运行环境开发的软件
  • 包含运行某个软件所需要的所有内容,包括代码、运行时的库、环境变量配置文件等       

  docker加载原理

    docker的镜像实际上是由一层一层的文件系统租场,这种层级的文件系统叫UnionFS

    bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在docker镜像最底层是bootfs。

   

  其中UnionFS(联合文件系统):

    

  个人理解

    

  ·docker镜像使用这种分层结构的原因

    最大的好处就是共享资源:

    比如:有多个镜像从相同的base镜像构建而来,那么宿主机只需要在磁盘保存一份base镜像即可,

       同时内存中也只需要加载一份base镜像,就可以为所有容器服务了,而且镜像的每一层都可以被共享

  

  Docker镜像的特点

    l Docker镜像都是只读的

    l 当容器启动时,一个新的可写层被加载到镜像的顶层,这一层通常被称为“容器层”,容器层之下才是镜像层

  

  docker镜像commit补充说明;

  

  案例:  

    

011 docker容器数据卷 

    l 相当于外置的活动硬盘,可以持久性的保存数据

  是什么

  Docker的理念

    n 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求是希望其能持久化

    n 希望容器之间能欧共享数据

   l Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除之后,数据自然也就没有了

   l 为了能保存数据在docker中,我们引入了卷

   l 有点类似redis中的rdbaof文件

  能干什么

    l 数据的持久化

    l 容器之间的数据继承和共享

    l 卷就是目录或文件,存在于一个或多个容器中,由docker挂在到容器中,但不属于联合文件系统,因此能够绕过Union File System提供的一些用于持久存储或共享数据的特性

    l 卷设计的目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷

  特点:

  1. 数据卷可在容器之间共享或重用数据
  2. 卷中的更改可以直接生效
  3. 数据卷中的更改不会包含在镜像的更新中
  4. 数据卷的生命周期一直持续到没有容器使用它为止

数据卷

容器内添加

  1. 直接命令添加

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

    

    2) 查看数据卷是否挂载陈宫

       

      查看挂载情况

       

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

      

    4) 容器停止退出后,主机修改数据,查看是否能够同步

      

      

    5) 命令(带有权限)(只读不能写)

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

012 docker解析【高级】【暂时用不到,没学,以后补上】

013 docker常用的容器安装

  总体安装步骤

    1. 搜索镜像

    2. 拉取镜像

    3. 查看镜像

    4. 启动镜像

    5. 停止容器

    6. 移动容器

  安装tomcat

1. docker hub上面查找tomcat镜像

    (1) docker seardch tomcat

   2.从docker hub上拉取tomcat镜像到本地

    (1) docker pull tomcat

      ① 官网命令

      ② 拉取完成

  3. Docker images查看是否有拉取到tomcat

    (1) 命令: docker images

  4.使用tomcat镜像创建容器(也叫运行镜像)

    (1) 命令:docker run it -p 8080:8080 tomcat

      ① -p 主机端口:docker容器端口

      ② -P 随机分配端口

      ③ 交互

      ④ 终端

    安装mysql

     1。从docker hub 上查找mysql5.6镜像

      

    2. 拉取mysql5.6

      

    3.查看

      

    4. 创建对应的容器,并运行mysql

      

    5. 进入mysql容器

      

    6. 让外面win10也来连接运行在docker中的mysql服务(其中如果在阿里云的云服务器上,需要在安全组中添加入站规则,端口3306)

      

   安装redis(redis未学,自己未实测)

     1. 拉取并下载  

      

    2.查看目录

      

    3. 使用redis3.2镜像创建容器(也叫运行镜像)

      1)使用镜像

        

        

      2)在主机/zzyyuse/myredis/conf/redis.config目录下新建redis.conf文件。vim /zzyyuse/myredis/conf/redis.conf/redis.conf

        

      3)写入redis最基础的配置(去掉与本机(127.0.0.1)的绑定)

        

       4) 查看服务

         

     4. 测试redis-cli连接上来

        

      成功

        

    5.测试持久化文件生成

      

014 本地镜像发布到阿里云上(自己未测试)

  1. 本地镜像发布到阿里云流程

    

  2. 镜像生成的方法

    从容器创建一个新的镜像

      命令:docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]

      

    查看

      

  3. 将本地镜像推送到阿里云https://dev.aliyun.com/search.html

       

   4. 创建镜像仓库,并将镜像推送到registry

      、

      查看

      

    5. 公有云上可以查询

      

    6. 将阿里云上的镜像下载到本地

      1)复制地址

        

      2)拉取

        

      3) 运行

        

  

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部