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 相关基本常用命令
 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说明:
                图例:
      Docker 相关基本常用命令
      启动交互式容器:即 -it  , i --> 交互模式;t --> 伪终端
            命令为: docker  run  -it  f643c72bc252 
            图例:命令行已经发生了变化,此时已经进到了以ubuntu为镜像创建的容器实例中
Docker 相关基本常用命令
 列出当前所有正在运行的容器
        再打开一个命令行窗口,然后输入:docker ps [OPTIONS] ---> 即鲸鱼背上有哪些集装箱(容器)在跑着当前正在运行的容器
        图例:
Docker 相关基本常用命令

   docker ps OPTIONS参数说明

  Docker 相关基本常用命令

  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 相关基本常用命令
 查看容器日志
        命令: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 查看结果