zoukankan      html  css  js  c++  java
  • Docker常用命令

    帮助命令

    docker version		# Docker版本
    docker info			# Docker系统信息
    docker 命令 --help	# 命令帮助
    

    帮助文档:https://docs.docker.com/reference/

    镜像和容器的区别

    Docker的生命周期由三部分组成:image + container + repository,镜像 + 容器 + 仓库。

    我们可以将Docker镜像看做一个轻量级的系统,不同于VMware中的镜像,Docker镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。例如,我们下载一个在VMware中可以使用的CentOS镜像可能大小会超过2G,而在下载一个用于Docker的CentOS镜像可能只需要200M(甚至有部分Linux发行版镜像大小只有约100M)。

    概括的说,Docker镜像是一个只读的Docker容器模板,含有启动Docker容器所需的文件系统结构及其内容。

    而镜像和容器之间的关系可以比作类和实例之间的关系,镜像是一种构建时(build-time)结构,而容器是一种运行时(run-time)结构。

    仓库则是存储镜像的地方,默认使用Docker Hub(官方仓库,此外也还有第三方仓库),我们通过仓库将所需镜像下载到本地。

    镜像命令

    • docker images:查看本地Docker上的所有镜像

      [root@Tuzki01 ~]# docker images --help	# 查看该命令的帮助
      Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
      List images
      Options:
        # 显示所有镜像(常用)
        -a, --all             Show all images (default hides intermediate images)
        # 显示镜像的签名信息
            --digests         Show digests
        # 过滤输出结果
        -f, --filter filter   Filter output based on conditions provided
        # 格式化字符串
            --format string   Pretty-print images using a Go template
        # 显示无删减的输出结果
            --no-trunc        Don't truncate output
        # 仅显示镜像ID(常用)
        -q, --quiet           Only show image IDs
        # 有Linux基础的人应该知道,命令选项是可以结合使用的,如docker images -aq就是常用的一个命令
      [root@Tuzki01 ~]# docker images	# 显示所有镜像,这里只有刚下载好的hello-world镜像
      REPOSITORY    TAG       IMAGE ID       CREATED      SIZE
      hello-world   latest    feb5d9fea6a5   6 days ago   13.3kB
      # REPOSITORY: 镜像的仓库源
      # TAG: 镜像的标签
      # IMAGE ID: 镜像ID
      # CREATED: 镜像创建时间
      # SIZE: 镜像大小
      
    • docker search:在仓库上搜索镜像,相当于在https://hub.docker.com/上面进行搜索

      [root@Tuzki01 ~]# docker search --help
      Usage:  docker search [OPTIONS] TERM
      Search the Docker Hub for images
      Options:
        # 过滤输出结果
        -f, --filter filter   Filter output based on conditions provided
        # 格式化字符串
            --format string   Pretty-print search using a Go template
        # 限制搜索结果个数
            --limit int       Max number of search results (default 25)
        # 显示无删减的输出结果
            --no-trunc        Don't truncate output
      # 这里以MySQL为例,输出STARS数高于1000的结果
      [root@Tuzki01 ~]# docker search -f stars=1000 mysql
      NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
      mysql     MySQL is a widely used, open-source relation…   11490     [OK]       
      mariadb   MariaDB Server is a high performing open sou…   4357      [OK]   
      
    • docker pull:下载镜像,可指定tag版本(需要docker支持该版本的下载),默认下载最新版

      # docker pull 镜像名[:tag]
      [root@Tuzki01 ~]# docker pull mysql
      # 不加tag,默认下载最新版本
      Using default tag: latest
      latest: Pulling from library/mysql
      # 分层下载,docker image的核心,联合文件系统
      # 当mysql更新时,这些分层的镜像部分可以复用,无需全部重新下载,只需下载无法复用的镜像
      07aded7c29c6: Pull complete 
      f68b8cbd22de: Pull complete 
      30c1754a28c4: Pull complete 
      1b7cb4d6fe05: Pull complete 
      79a41dc56b9a: Pull complete 
      00a75e3842fb: Pull complete 
      b36a6919c217: Pull complete 
      635b0b84d686: Pull complete 
      6d24c7242d02: Pull complete 
      5be6c5edf16f: Pull complete 
      cb35eac1242c: Pull complete 
      a573d4e1c407: Pull complete 
      Digest: sha256:4fcf5df6c46c80db19675a5c067e737c1bc8b0e78e94e816a778ae2c6577213d
      Status: Downloaded newer image for mysql:latest
      docker.io/library/mysql:latest	# 真实下载地址(下载时拉取的是这里的资源)
      
    • docker rmi:删除镜像

      [root@Tuzki01 ~]# docker rmi --help
      # IMAGE可以使用镜像名[:tag](如mysql:5.7)删除,也可以通过ID删除,可以指定多个镜像
      Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
      Remove one or more images
      Options:
        # 强制删除镜像
        -f, --force      Force removal of the image
        # 不删除
            --no-prune   Do not delete untagged parents
      # 删除所有镜像:docker rmi -f $(docker images -a)
      

    容器命令

    有镜像才能创建容器,这里使用centos镜像来进行学习:

    docker pull centos
    
    • 新建容器并启动

      docker run [option] image
      # 常用参数
      --name="Name"	按照容器名启动
      -d				后台运行
      -it				以交互方式运行
      -p				指定日期端口
      	-p ip:主机端口:容器端口
      	-p 主机端口:容器端口(常用)
      	-p 容器端口
      	容器端口
      -P				随机端口
      
      # 测试
      docker run -it centos /bin/bash	# 使用centos下的bash命令模式进行交互
      exit			# 停止容器并退出
      ctrl + p + q	# 不停止容器退出
      
    • docker ps:查看所有正在运行容器

      -a:列出当前 + 历史运行的容器
      -n=x:列出最近x个运行的容器
      -q:仅显示容器ID
      
    • docker rm:删除容器

      -f:强制删除容器(可以删除正在运行的容器)
      
      删除所有容器命令:
      docker rm -f $(docker ps -a)
      docker ps -aq|xargs docker rm
      
    • 启动/停止容器:

      docker start 容器		# 启动容器
      docker restart 容器	# 重启容器
      docker stop 容器		# 停止容器
      docker kill 容器		# 强制停止容器
      

    其他常用命令

    • 后台启动容器

      docker run -d centos
      # 可能遇到的一个坑:运行之后可能会发现centos停止了,这是因为Docker容器在运行时,必须有一个前台应用没有前台进程,否则Docker发现自己没有提供服务,将自动退出
      # 解决方案:
      1. docker run -td centos,-t选项将为容器重新分配一个伪输入终端
      2. docker run -it centos,之后ctrl + p + q退出容器
      
    • 查看指定容器的日志:docker logs 容器ID

      -t:带上时间戳
      -f:格式化显示
      --tail:指定显示条数
      
    • 查看容器中进程信息:docker top 容器ID

    • 查看镜像元数据:docker inspect 容器ID

    • 进入当前正在运行的容器

      # 开启一个指定容器的指定shell终端(常用)
      docker exec -it 容器ID /bin/bash
      # 进入指定容器正在执行的终端
      docker attach 容器ID
      
    • 从容器内拷贝文件到主机中

      docker cp 容器ID:容器内路径 当前主机路径
      
  • 相关阅读:
    车厢调度
    字符串匹配问题x
    单词查找树
    【説明する】树
    计算(calc.cpp) 这题我搞了2晚上qwq
    [HDOJ4578]Transformation(线段树,多延迟标记)
    [Codeforces670A]Holidays(数学,构造)
    [Codeforces677C]Vanya and Label(组合数学,快速幂)
    [Codeforces677B]Vanya and Food Processor(模拟,数学)
    [Codeforces673C]Bear and Colors(枚举,暴力)
  • 原文地址:https://www.cnblogs.com/tuzkizki/p/15378737.html
Copyright © 2011-2022 走看看