记录下自己常用的Docker命令

  1. 容器信息

    • #查看docker容器版本详细信息
      docker version
      #查看docker容器版本简略信息
      docker --version或docker -v
      #查看docker容器信息
      docker info
      #有什么不会的找那个help
      docker --help
      

      image-20210511092935477image-20210511093137704image-20210511093000789

  2. 镜像操作

    • #列出本地images
      docker images
      #列出所有镜像,含中间映像层
      docker images -a
      
    • #只显示镜像ID
      docker images -q
      #列出所有镜像,含中间映像层,但只显示镜像ID
      docker images -qa
      
  3. 镜像搜索

    • #搜索仓库MySQL镜像
      docker search mysql
      #--no-trunc 显示镜像完整 DESCRIPTION 描述
      docker search --no-trunc mysql
      
    • image-20210512142748620

  4. 镜像拉取

    • #下载Redis官方最新镜像,不加tag,默认latest
      docker pull redis
      #下载仓库所有Redis镜像
      docker pull -a redis
      ##下载私人仓库镜像,需要仓库全名
      docker pull bitnami/redis
      
  5. 镜像删除

    • #通过镜像名称删除,相当于:docker rmi mysql:latest
      docker rmi mysql
      #通过镜像images称删除,如果id前三没有一样的,直接通过前三位id即可删除
      docker rmi images_ID
      #强制删除,即使对应容器正在运行也没关系,但docker ps -a还是能看到该容器存在
      docker rmi -f mysql
      #多个镜像删除,不同镜像间以空格间隔
      docker rmi -f mysql tomcat nginx
      #删除本地全部镜像
      docker rmi -f $(docker images -q)
      
    • image-20210512144221818

  6. 镜像构建

    • 新建一个Dockerfile文件
      
      from openjdk:11.0-jdk
      
      ## 设置挂载点
      VOLUME /tmp
      
      ## 复制并修改重命名
      ADD halo-1.4.8.jar halo.jar
      
      # 运行jar包
      RUN bash -c 'touch /halo.jar'
      
      ENTRYPOINT ["java","-Xms512m","-Xmx512m","-jar","-Djava.security.egd=file:/dev/./urandom","/halo.jar"]
      

      image-20210512144452117

      #-t 镜像名称:版本号 -f指定Dockerfile路径 最后一个是需要构建jar包的路径
      docker build -t name:tags -f /home/halo/Dockerfile /home/halo/
      
  7. 容器启动

    • #启动容器 -d后代运行 -i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称 -p 宿主机端口:容器端口 -v 将主机目录映射到容器目录  主机:容器
      docker run -d -i -t --name otherNames -p 8080:80 -v /home:/home images:tags
      
    • #启动一个或多个已经被停止的容器
      docker start mysql
      #重启容器
      docker restart mysql
      
    • #列出mysql容器中运行进程
      docker top mysql
      
  8. 容器停止与删除

    • #停止容器
      docker stop mysql(也可以通过容器id停止 用法类似imagesId)
      #杀掉一个运行中的容器
      docker kill mysql
      #删除一个已停止的容器
      docker rm mysql
      #删除一个运行中的容器
      docker rm -f mysql
      #删除多个容器
      docker rm -f $(docker ps -a -q)
      docker ps -a -q | xargs docker rm
      
    • 注意与强制删除镜像的区别image-20210512150245173

  9. 容器日志

    • #查看mysql容器日志,参数:-f  跟踪日志输出;-t --since 日志开始日期   显示时间戳;--tail  仅列出最新N条容器日志;
      docker logs -f -t --since 2021-01-10 --tail=20 mysql
      
  10. 查看容器

    • #查看正在运行的容器
      docker ps
      #查看正在运行的容器的ID
      docker ps -q
      #查看所有容器(运行+停止+created)
      docker ps -a
      #显示运行容器总文件大小(很赞)
      docker ps -s
      
  11. 容器的进入与退出

    • #=#使用run方式在创建时进入
      docker run -it mysql /bin/bash
      #关闭容器并退出
      exit
      docker attach --sig-proxy=false mysql 
      #参数:-i即使没有附加也保持STDIN 打开;-t分配一个伪终端
      docker exec -i -t  mysql /bin/bash
      
    • exec和attach区别:

      docker exec:Run a command in a running container,翻译过来就是在一个正在运行的容器中执行命令,exec是针对已运行的容器实例进行操作,在已运行的容器中执行命令,不创建和启动新的容器,退出shell不会导致容器停止运行。docker attach:Attach local standard input, output, and error streams to a running container,翻译过来,将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个运行的容器,也就是说本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上,如果退出容器的shell,容器会停止运行。
      
      作者:bin ruan
      链接:https://www.zhihu.com/question/276485274/answer/1013996168
      来源:知乎
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
      

Q.E.D.


一个热爱生活的95后精神小伙