zoukankan      html  css  js  c++  java
  • Docker 相关基本常用命令

    帮助命令
        docker  version
        docker  info
        docker  --help
     
    再来明确一下它们之间的关系
        鲸鱼背上有集装箱
        蓝色的大海里面 ---->  宿主机系统windows10
        鲸鱼  ------>       Docker
        集装箱 -----> 容器实例  ----> from ---> 来自 我们的镜像模板 
     
    镜像命令
        镜像就相当于千层饼,一层包裹一层,我们看到的就是最外面的一层,例如鸡蛋:鸡蛋皮--> 蛋清-->蛋黄
        docker  images 
            1.列出本地主机上的镜像
            2.可选参数(OPTIONS说明)
                -a 列出本地所有的镜像(含中间映像层)
                -q 只显示镜像ID
                -qa 可以联合使用,把所有的镜像ID列出
                --digests 显示镜像的摘要信息(类似说明,有则有无则none)
                --no-trunc  显示完成的镜像信息(尤其是镜像ID)
        图例:
     docker  search  某个xxx镜像名字
            1.网站:查的时候是从docker  hub上查,下载是从阿里云/网易云的加速器上下载;
            2.命令:
                docker  search  [OPTIONS] 镜像名字
                    选项参数:
                        -s   列出收藏数不小于指定值的镜像: docker search  -s  30  tomcat   (查出tomcat的Starts大于30的镜像)
                            改为: sudo docker search --filter=stars=30 tomcat
                        --no-trunc  显示完整的镜像描述
                        --format 格式化显示:sudo docker search --filter=stars=30 --format "table {{.Name}} {{.IsAutomated}} {{.IsOfficial}}" tomcat    
        
        docker  pull 某个xxx镜像名字 
            1.下载镜像
            2.命令:
                docker  pull  镜像名字[:TAG]    ----> docker pull  tomcat  等价于  docker pull  tomcat:latest
     
        docker  rmi  某个xxx镜像名字/唯一镜像ID
            1.rmi ---> remove images
            2.删除单个:如果删除出现报  conflict ,是因为该镜像的容器再后台运行,
                需要强制删除即: docker rmi  -f  hello-world  ---> 等价于 docker rmi -f hello-world:latest
            3.删除多个:docker rmi  -f  镜像名称/ID  镜像名称/ID 
            4.删除全部:docker rmi -f  $(docker images -qa) 
     
     
    容器命令
        有镜像才能创建容器,这是根本前提(下载一个Ubuntu镜像演示)--> docker pull  ubuntu (安装虚拟机差不多2个G,而镜像只有70多M)
        新建并启动容器
            1.docker  run  [OPTIONS] images 
                OPTIONS说明:
                    图例:
          
          启动交互式容器:即 -it  , i --> 交互模式;t --> 伪终端
                命令为: docker  run  -it  f643c72bc252 
                图例:命令行已经发生了变化,此时已经进到了以ubuntu为镜像创建的容器实例中
     列出当前所有正在运行的容器
            再打开一个命令行窗口,然后输入:docker ps [OPTIONS] ---> 即鲸鱼背上有哪些集装箱(容器)在跑着当前正在运行的容器
            图例:

       docker ps OPTIONS参数说明

      

      docker  ps  -a  (所有)
            docker  ps  -n  3  (最近三个,最近的在最上面,以此类推
            docker  ps  -l   (上一个)
            docker  ps  -lq  (只显示容器ID
      sudo docker run -it  --name myubuntu0319 ubuntu  (--name myubuntu0319 可以起别名,不指定系统会随机生成)
        退出容器
            1.第一种方式:exit (容器停止退出, 此时容器状态已关闭了)
            2.第二种方式:ctrl + p + q (容器不停止退出, 此时使用 docker  ps  ---> status => up)
            此时再输入  docker ps  则刚刚退出来的容器就不在了;
        启动容器
            即刚刚通过 exit 退出的,可以通过 docker  start  容器id/名称 
            示例:sudo docker start a6226add4555
        重启容器
            即通过 ctrl + p + q退出的,任然处在 up状态下的容器,命令: docker  restart  容器ID/名称
            示例:sudo docker restart d584d9c19d8b
        停止容器
            温柔一些,命令: docker  stop  容器ID/名称
            示例:sudo docker stop d584d9c19d8b
        强制停止容器
            粗暴一些,类似把电源,命令:docker  kill  容器ID/名称
            示例:sudo docker kill a6226add4555
        删除已停止的容器
            命令:docker  rm  容器ID  
            如果删除没有关停的容器使用: docker  rm  -f  容器ID
            一次性删除多个容器:
                docker  rm  -f  $(docker ps  -a  -q)
                docker  ps  -a  -q | xargs  docker rm 
        
    重点
        启动守护式容器
            命令:docker  run  -d  容器名
            示例:sudo docker run -d ubuntu
            但是使用 docker  ps 时发现没有刚刚启动的容器?
            说明:      
     查看容器日志
            命令:docker  logs  -f  -t  --tail  容器ID 
                -t  是加入时间戳(可以看到日志带时间)
                -f  跟随最新的日志打印,追加打印最新输出日志
                --tail 数字  显示最后多少条
            首先输入:sudo docker run -d ubuntu /bin/sh -c "while true;do echo hello guos;sleep 2; done"
            接着 docker  ps
            最后 sudo docker logs  -t  -f  --tail  3  c3500b8179a2 
        查看容器内运行的进程
            命令:docker top  容器ID   (类似Linux 里的  top)
            示例:sudo docker top c3500b8179a2
        查看容器内部细节
            命令:docker inspect  容器ID
            示例:sudo docker inspect c3500b8179a2   ----> 返回的是类似json的数据结构(对象数组)
        进入正在运行的容器并以命令行交互
            命令:docker exec  -it  容器ID  bashShell
            重新进入命令:docker  attach  容器ID
            上述两者的区别
                1.attach 直接进入容器命令行终端,不会启动新的进程;
                    我们通过 ctrl + p + q 退出,还想进入
                    即: docker  attach  容器ID  (进入当前正在运行的容器
                    示例:sudo docker attach 5d60b28faa27
                2.exec是在容器中打开新的终端,并且可以启动新的进程;
                    示例:docker exec  -t  容器ID  ls  -l /tmp  ---> 没有进入容器,且把 ls  -l  /tmp 这个命令的结果返回给宿主机(隔山打牛)
                    示例:sudo docker exec -t 5d60b28faa27 ls -l /tmp  ---> 结果:total 0  和我们在容器内看到的一样;
        从容器内拷贝文件到主机上
            即想把容器内的数据持久化
            命令:docker cp  容器ID:容器内路径  目的主机路径
            示例:
                首现在容器内 : echo  guos >> g.log
                接着退出:ctrl + p + q 
                然后到宿主机上:sudo docker cp 5d60b28faa27:/tmp/g.log /home/gs
                然后可以 ll 查看结果
     
     
  • 相关阅读:
    powerpc调试工具的使用
    微软的开发工具是我见过比较难用的
    Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)
    静态工厂方法和实例工厂方法
    理解.NET Framework
    .NET相关的概念简介
    二、文档工具 swagger
    Java Web学习(二)数据加密
    Java Web学习(一)Web基础
    Oracle学习(十二)标量函数
  • 原文地址:https://www.cnblogs.com/guo-s/p/14622330.html
Copyright © 2011-2022 走看看