• Docker篇章4:Docker常用命令


    Docker篇章4:Docker常用命令

    • 如果说蓝色大海相当于宿主机系统Linux,那么鲸鱼就是docker,集装箱就是容器的实例,而容器来自于我们的镜像。废话不多说,常用命令汇总

    • 帮助命令

      # 查看docker描述,版本..
      docker version
      # 更详细信息描述
      docker info
      # 查看执行命令帮助
      docker --help
      
    • 镜像命令

      # 列出当前镜像模板
      docker images
          # REPOSITORY镜像的仓库源
          # TAG镜像的标签
          # IMAGE ID镜像ID
          # CREATED镜像创建时间
          # SIZE镜像大小
      	# 同一个仓库源可以有多个TAG,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像,如果你不指定一个进项的版本标签例如你使用hello-world ,docker将默认使用hello-world:latest镜像
      docker images -a#列出本地所有的镜像(含中间映像层
      			 -q#只显示镜像ID
          		 --digests #显示镜像的摘要信息
              	 --no-trunc #显示完整的镜像信息
      docker search xxx#去docker去找xxx的镜像,例如:docker search redis  去dockerHub找redis镜像。
      	docker search -s 30 redis #去dockerHub去找点赞数超过30的redis镜像
          docker search -s 100 --no-trunc redis #添加--no-trunc显示完整的镜像信息
      docker pull redis #去dockerHub拉取redis镜像,等价于docker pull redis:latest,如果拉取redis:3.2 则docker pull redis:3.2
      
      docker rmi 镜像名 # 删除镜像,例如:docker rmi hello-world 不指定版本号相当于删除镜像hello-world:latest 如果当前容器使用此镜像,无法删除
      	docker rmi -f hello-world #强制删除hello-world镜像
      docker rmi -f 镜像名1:TAG 镜像名2:TAG #删除多个镜像
      docker rmi -f $(docker images -qa)#删除全部镜像
      
    • 容器命令1

      #新建并启动容器
      docker run [OPTIONS] IMAGE[COMMAND][ARG...]
      	OPTIONS:
              --name="容器新名字"  为容器指定一个名称
              -d  后台运行容器,并返回容器ID,也即启动守护式容器
              -i  以交互模式运行容器,通常与-t同事使用
              -t	为容器重新分配一个伪输入终端,通常与-i同事使用
              -P  随机端口映射
              -p  指定端口映射,有以下四种格式:
              	ip:hostPort:containerPort
                  ip:containerPort
                  hostPort:containerPort
                  containerPort
          # 命令 demo:
      	docker run -it [IMAGE ID]# 以交互模式运行容器,并为容器重新分配一个伪输入终端,比如IMAGE ID为centos的,则进入到docker内的centos
          docker run -it --name centosdemo centos# 指定name启动centos,这样
      #查看当前运行容器
      docker ps [OPTIONS]
      	OPTIONS:
              -a : 列出当前所有正在运行的容器加历史上运行过的容器
              -l : 显示最近创建的容器
              -n : 显示最近n个创建的容器  docker ps -n 3 #显示最近3个创建的容器
              -q : 静默模式,只显示容器编号
              --no-trunc: 不截断输出,显示完整。
      #退出容器
      	exit	#退出容器,并停止容器
          ctrl + p + q  #退出容器,但容器不停止
      # 启动容器
      docker start 容器ID
      	# 可以通过docker ps -a 查看STATUS为Exited(0)的容器ID,复制容器ID,然后通过docker start 容器ID 来启动容器。
      # 重启容器
      docker restart 容器ID
      # 停止容器(温柔关闭)
      docker stop 容器ID或者容器名
      # 强制停止
      docker kill 容器ID或者容器名
      # 删除已经停止的容器
      docker rm 容器ID
      	# docker fm -f 容器ID    关闭容器再删除容器
          # 一次性删除多个容器
          	docker rm -f $(docker ps -a -q)
              docker ps -a -q | xargs docker rm
      
    • 容器命令2:

      # 启动守护式容器 
      docker run -d centos
      	# 问题:docker ps -a 进行查看,会发现容器已经退出,docker容器后台运行,就必须有一个前台进程,容器运行命令如果不是那些一直挂起命令(比如:top,tail),就会自动退出。
      	#这个式docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的服务即可,但是这样做nginx为后台进程模式运行,就会导致docker前台没有运行应用,这样容器后台启动后,会立即自杀因为它感觉没事可做。所以最佳解决方案式,将你要运行的程序以前台进程的形式运行。
      # 一直保持交互启动容器
      docker run -d centos /bin/sh -c "while true;do echo hell xjk; sleep 2;done"
      # 查看容器日志
      docker logs -f -t --tail 容器ID
      	docker logs -t 容器ID # 查看docker日志
          docker logs -t -f # 查看docker日志不停追加
        	docker logs -t -f --tail -3 容器ID # 查看docker日志 倒数3行
      # 查看容器内运行进程
      docker top 容器ID
      # 查看容器内部细节
      docker inspect 容器ID # 以json形式显示当前容器内全部结构
      # 进入正在运行容器并以命令行交互
      docker attach 容器ID # 例如:docker attach d93111c22a4c 真正进去,并可进行做一些操作
      docker exec -it 容器ID # 例如:docker exec -t d93111c22a4c ls -l /tmp 没有真正进去 而是通过exec进入容器执行 ls -l /tmp 然后拿到结果。
          docker exec -it d93111c22a4c /bin/bash #也可以向docker attach一样直接进入容器
      
      # 从容器内拷贝文件到主机上
      docker cp 容器ID
      	docker cp d93111c22a4c:/tmp/demo /root #将容器id为d93111c22a4c下的/tmp/demo 拷贝到主机的/root下
      
      # 提交容器副本使它成为一个新的镜像
      docker commit
      	docker commit -m='提交的描述信息' -a='作者' 当前运行容器ID 要创建的目标镜像名:[标签名]
      
  • 相关阅读:
    [dev][ipsec][esp] ipsec链路中断的感知问题
    [dev] Go语言查看doc与生成API doc
    [daily]gtk程序不跟随系统的dark主题
    [dev] Go的协程切换问题
    基因程序设计/基因编程/遗传编程
    [daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题
    Java Spring中@Query中使用JPQL LIKE 写法
    JavaScript 使用HTML DOM的oninput事件,实时监听value值变化
    Java中执行.exe文件
    Java关于List<String> 进行排序,重写Comparator()方法
  • 原文地址:https://www.cnblogs.com/xujunkai/p/13031328.html
Copyright © 2020-2023  润新知