zoukankan      html  css  js  c++  java
  • docker命令笔记

    docker简介

    Docker 是 一个打包、 分发和运行应用程序的平台。 正如我们所说, 它允许将你 的应用程序和应用程序所依赖的整个环境打包在一起。 这既可以是一些应用程序需 要的库, 也可以是一个被安装的操作系统所有可用的文件。
    如果多个进程运行在同一个操作系统上,那容器到底是怎样隔离它们的?有两个机制可用:第一个是Linux命名空间,它使每个进程只看到它自己的系统视图(文件、进程、网络接口、主机名等);第二个是Linux控制组(cgroups),它限制了进程能使用的资源量(CPU、内存、网络带宽等)。
    docker主要包含了下面几个概念:

    名词 含义
    镜像 Docker镜像里包含了你打包的应用程序及其所依赖的环境。 它包含 应用程序可用的文件系统和其他元数据, 如镜像运行时的可执行文件路径。
    镜像仓库 Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。 当你编译你的镜像时, 要么可以在编译它的电脑上 运行, 要么可以先上传镜像到一个镜像仓库,然后下载到另外一 台电脑上并 运行它。 某些仓库是公开的, 允许所有人从中拉取镜像, 同时也有一些是私 有的, 仅部分人和机器可接入。
    容器 Docker容器通常是一个Linux容器, 它基于Docker镜像被创建。 一 个运行中的容器是一个运行在Docker主机上的进程, 但它和主机, 以及所有 运行在主机上的其他进程都是隔离的。 这个进程也是资源受限的, 意味着它只能访问和 使用分配给它的资源(CPU、 内存等)

    容器镜像可移植性的限制

    理论上, 一个容器镜像能运行在任何一个运行Docker的机器上。 但有一个小警 告 一—一个关于运行在一台机器上的所有容器共享主机Linux内核的警告。 如果一 个容器化的应用需要一 个特定的内核版本, 那它可能不能在每台机器上都工作。 如 果 一 台机器上运行了 一 个不匹配的Linux内核版本, 或者没有相同内核模块可用, 那么此应用就不能在其上运行。
    虽然容器相比虚拟机轻量许多, 但也给运行于其中的应用带来了 一 些局限性。 虚拟机没有这些局限性, 因为每个虚拟机都运行自己的内核。
    还不仅是内核的问题。 一 个 在特定硬件架构之上编译的容器化应用, 只能在有 相同硬件架构的机器上运行。 不能将 一 个x86架构编译的应用容器化后, 又期望它 能运行在A阳J架构的机器上。 你仍然需要一 台虚拟机来做这件事情。

    docker run

    • --restart:设置容器的重启策略
      - no,默认策略,在容器退出时不重启容器
      - on-failure,在容器非正常退出时(退出状态非0),才会重启容器
      - on-failure:3,在容器非正常退出时重启容器,最多重启3次
      - always,在容器退出时总是重启容器
      - unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    • --user:设置容器中执行命令的用户id和群组id(容器共享宿主机中的用户id和群组id)

    docker ps

    • -f:设置过滤条件
      - status=exited,显示处于退出状态的容器
    • -q:只显示容器id,方便配合其他命令使用,比如删除所有退出的容器docker rm $(docker ps -f status=exited -q)
  • 相关阅读:
    Study Plan The Twelfth Day
    Study Plan The Fifteenth Day
    Study Plan The Seventeenth Day
    Study Plan The Tenth Day
    Study Plan The Eighth Day
    Study Plan The Eleventh Day
    Study Plan The Sixteenth Day
    Study Plan The Thirteenth Day
    Study Plan The Fourteenth Day
    Study Plan The Ninth Day
  • 原文地址:https://www.cnblogs.com/HachikoT/p/14146107.html
Copyright © 2011-2022 走看看