帮助命令

    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查看文件命令_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}}\t{{.IsAutomated}}\t{{.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查看挂在文件信息 docker查看文件命令_tomcat_02

启动交互式容器:即 -it  , i --> 交互模式;t --> 伪终端

            命令为: docker  run  -it  f643c72bc252 

命令行已经发生了变化,此时已经进到了以ubuntu为镜像创建的容器实例中

docker查看挂在文件信息 docker查看文件命令_docker查看挂在文件信息_03

 列出当前所有正在运行的容器

docker ps [OPTIONS] ---> 即鲸鱼背上有哪些集装箱(容器)在跑着当前正在运行的容器

        图例:

docker查看挂在文件信息 docker查看文件命令_ubuntu_04

   docker ps OPTIONS参数说明

  

docker查看挂在文件信息 docker查看文件命令_ubuntu_05

  docker  ps  -a  (所有)

        docker  ps  -n  3  (最近三个,最近的在最上面,以此类推

        docker  ps  -l   (上一个)

        docker  ps  -lq  (只显示容器ID

sudo docker run -it  --name myubuntu0319 ubuntu 

    退出容器

        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查看文件命令_docker_06

 查看容器日志

        命令: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 查看结果