Docker-超强核心整理

Docker入门

1.为什么需要Docker

开发过程中后端与运维交付项目,运维部署运行不成功,两者无法判定是哪方问题

环境问题

docker解决-搬家问题直接入住

image-20200426142946109

一次封装,到处运行

docker是什么?

解决了运行环境和配置的问题,方便持续集成有助于整体发布的容器虚拟化技术

2. Docker能干嘛

有点像我们的虚拟机一样,虚拟机也是带软硬件直接安装在我们电脑上自带环境运行,但是它启动太慢了,而且耗资源,步骤也多,docker是秒级的

但是它也不是完整的一个操作系统,而是运行所需要什么东西就加载什么东西。轻量级的

每个容器互相隔离,且不自带内核

开发自运维

docker的好处

image-20200426192647344

下载地址: https://www.docker-cn.com, https://www.docker.com

Docker流程图

image-20200426195122607

3 Docker三剑客

3.1 镜像

镜像就是一个只读模板,她可以创建Docker容器,一个镜像可以创建很多容器

比如:仍然是同一个模板,却有不同的对象

Person p1=new Person();
Person p2=new Person();
Person p3=new Person();
 
 
    Docker面向对象
    容器对象
    镜像

    3.2 容器

    容器是可以独立安全运行应用的环境,是镜像用来运行的实例,容器可读可写

    3.3 仓库

    是集中存放镜像文件的场所

    image-20200426213847414

    3.4 小结

    image-20200426214316344

    4.Docker的使用

    docker环境安装 yum install -y epel-release

    docker安装 yum install -y docker-io

    image-20200426215550353

    安装完在 /etc/docker下

    启动docker: service docker start

    当出现下面这个

    Redirecting to /bin/systemctl start docker.service

    说明需要用到systemctl命令来启动

    启动docker:systemctl start docker
    停止docker:systemctl stop docker
    重启docker:systemctl restart docker
    查看docker状态:systemctl status docker
    开机启动:systemctl enable docker 
    查看docker概要信息:docker info
    查看docker帮助文档:docker --help
    查看docker安装的版本: docker --version
    查看docker环境: docker version
     
     
    • systemctl status docker查看了一下,在运行中

      image-20200426220946261

      目前为止已经成功安装好了

      image-20200427094446967

      5. 阿里云镜像加速

      https://dev.aliyun.com/search.html

      image-20200427075608347

      获取加速器地址,第一次点击这边的需要设置一个密码就可以看到了

      我这里是centos7版本的

      直接复制下面的话执行就可以了

      image-20200427094558987

      然后再回车重启,查看docker info发现

      image-20200427094841999

      配置成功

      5.1 网易云加速器

      步骤和上面一样,只是需要去网易云找加速器地址,把那个阿里云的换成网易云的就可以了

      5.2 docker run 运行

      image-20200427095515141

      docker如何运行

      image-20200427095917287

      为什么它比虚拟机快

      • docker更少的抽象层,短小精干,
      • docker用的是本机的内核和操作系统,虚拟机都自带

      6. 常用Docker命令

      6.1帮助命令

      docker info   //对应的描述
      docker version  //docker 版本
      docker --help  //帮助命令
         
         
      • 1
      • 2

      6.2 镜像命令

      docker images//查看本机镜像
         
         

        image-20200427105851873

        docker images (-a 列出所有的镜像,包括最外层,-q 列出镜像的id,-qa就是所有镜像的id --digests 会显示DIGESTS说明 --no-trunc 完整说明,比如完整id)

        docker serach  镜像名  加上-s 查看点赞数    //docker serach -s 30 tomcat 大于30点赞的
           
           

          image-20200427112404514

          docker search -s 30 --no-trunc tomcat  //--no-trunc完整的摘要信息
             
             

            image-20200427112618559

            docker pull tomcat //等于下载最新tomcat
            docker pull tomcat:3.2 //指定版本
            //下载成功
            //Digest: sha256:cae591b6f798359b0ba2bdd9cc248e695ac6e14d20722c5ff82a9a138719896f
            //Status: Downloaded newer image for tomcat:latest
               
               
              docker rmi 名字或者id
              
                 
                 
              • 1

              image-20200427113900013

              出现上面的原因是因为容器在运行,需要强制删除

              docker rmi -f 名字或者id
              
                 
                 

              删除成功

              image-20200427114007507

              docker rmi -f 名字1 名字2  //多个一起删除
                 
                 
                docker rmi -f $(docker images -qa) //删除查询出来的全部id===全部删除
                   
                   

                  7.容器命令

                  docker pull centos 惊奇发现它才200多M,这无疑证明了docker去掉了繁重的配置,比虚拟机更为轻量级

                  新建并启动交互式容器,起别名mycentos  docker run -it --name mycentos id名或者名字    
                  
                     
                     

                  输入完,终端就进入mycentos了等于虚拟机进入终端时的根目录下

                  查看正在运行的容器

                  docker ps
                  
                       
                       

                  image-20200427120301442

                  docker ps -l 查看上一次运行的  -a查看现在运行和以前运行过的 -n显示最近n个创建的容器  -q只显示容器编号  --no-trunc 不截断输出,显示全部信息 
                  
                        
                        
                  • 1

                  进入那个centos终端后,但是退出不想直接exit,可以按住ctrl+p+q然后退出,会发现centos仍然在运行

                  image-20200427121648547

                  启动容器 docker start id或者名字

                  重启容器 docker restart id或者名字

                  停止容器,慢慢自己关闭 docker stop id或者名字

                  强制停止,强行关闭 docker kill id或者名字

                  删除已停止的缓存信息 docker rm id或者名字

                  找出全部容器全部删除 docker rm -f $(docker ps -a -q) 或者 docker s -a -q| xargs docker rm

                  重要的命令

                  docker run -d 容器名 启动守护式容器,docker ps看不到

                  image-20200427123722643

                  docker logs -f -t --tail 容器id 查看容器日志 -t是加入时间显示 -f跟随最新的日志打印 --tail 数字 显示最后n条

                  **docker run -d centos /bin/sh -c “while true;do echo hello zzyy;sleep 2;done”**以后台运行

                  查看日志

                  image-20200427125918561

                  docker inspect id 查看容器内部细节

                  docker top id 查看容器内部进程

                  docker attach id名字 重新进入终端命令行

                  image-20200427132307222

                  docker exec -t id名字 命令语句 可以不进入终端然后返回终端执行结果

                  如果命令语句是一个路劲,那么就是跟docker attach id名字一样进去终端

                  docker cp id名 /tmp/yum.log /root 拷贝文件,这个和linux无区别

                  8.镜像原理

                  image-20200427140045495

                  image-20200427140213819

                  为什么docker要分层结构

                  因为缓存,方便删除完,下次下载更快,如果分层的话,比如其它层是相同的base文件产生的,下次速度会更快产生

                  image-20200427141902902

                  9. Docker Commit

                  修改完镜像副本,然后提交成一个新镜像,比如加个作者啥的 原镜像依然存在

                  docker commit

                  docker run -it -p 8888:8080 tomcat 运行以8888访问tomcat

                  image-20200427162803012

                  docker run -it -P tomcat 大写的p会随机分配端口

                  image-20200427163932391

                  加了-d就可以后台运行

                  10.Docker容器数据卷

                  有点像redis的rdb和aof,主要用来持久化数据,实现容器数据共享

                  docker cp id名 容器内路径  目的路径
                  
                        
                        
                  • 1

                  命令给容器类添加数据卷

                  docker cp /路径:/目的地址  镜像名
                  
                        
                        
                  • 1

                  两个路径之间数据共享,新建一个文件都看得到,可以用docker inspect 容器名查看json是否挂载成功

                  image-20200427172826920

                  docker cp /路径:/目的地址:ro 镜像名 只读,是不可以修改的

                  jhhhhhhhhhhhhhhhhhh

                  DockerFile添加数据卷

                  先编写dockerfile 然后build, docker build -f 路劲 -t 路劲

                  容器之间共享 --volumes-from

                  docker run -it --name dc04 --volumes-from dc03 容器名字 相 当于继承dc03,那么所有数据dc04都可看,即使dc03删除,全量备份

                  容器卷之间有数据共享,,而主机与容器则需要自己写数据卷

                  11. DockerFile

                  1. 编写dockerfile(这一个的解读我就没写在这了,不难,dockerHub上看几段代码就会了,不要求手写)
                  2. build
                  3. run

                  DockerFile是构建镜像的构建文件,是由一系列命令和参数构成的脚本

                  执行流程

                  image-20200427191334938

                  11.1 关键字解读

                  • from 说明镜像基于哪个镜像
                  • maintainer 镜像维护者的姓名和邮箱
                  • run 容器构建时要执行的命令
                  • expose 对外暴露的端口号
                  • workdir 创建容器后,默认登录的工作目录
                  • env 构建环境过程中设置环境变量
                  • add 拷贝加解压缩,自动处理url
                  • volume 容器数据卷
                  • copy 拷贝
                  • cmd 容器启动时执行的命令,只生效最后一个cmd
                  • entrypoint 和cmd一样,但不会覆盖命令会追加执行
                  • onbuild 当子镜像继承父镜像时,父镜像的onbuild会执行

                  11.2 存放仓库

                  image-20200427224144766

                  登录完

                  docker tag[imageid] registry.cn-hangzhou.aliyuncs.com/镜像名字:[版本号]

                  然后push

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

                  再执行==docker serach 镜像名字:[版本号]==就会从仓库发现你推送的镜像

                  d 拷贝加解压缩,自动处理url

                  • volume 容器数据卷
                  • copy 拷贝
                  • cmd 容器启动时执行的命令,只生效最后一个cmd
                  • entrypoint 和cmd一样,但不会覆盖命令会追加执行
                  • onbuild 当子镜像继承父镜像时,父镜像的onbuild会执行

                  11.2 存放仓库

                  登录完

                  docker tag[imageid] registry.cn-hangzhou.aliyuncs.com/镜像名字:[版本号]

                  然后push

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

                  再执行==docker serach 镜像名字:[版本号]==就会从仓库发现你推送的镜像

                  而且你还可以docker pull 镜像名字:[版本号] 给下载下来

                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

                当前余额3.43前往充值 >
                需支付:10.00
                成就一亿技术人!
                领取后你会自动成为博主和红包主的粉丝 规则
                hope_wisdom
                发出的红包
                实付
                使用余额支付
                点击重新获取
                扫码支付
                钱包余额 0

                抵扣说明:

                1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                余额充值