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)
  • 相关阅读:
    jQuery中的一些操作
    laravel使用消息队列
    Laravel的开发环境Homestead的搭建与配置
    python爬虫学习
    配置文件
    sql根据时间差查询数据
    Oracle根据连接字符串获取库下的表列表、获取表结构
    Sql根据连接字符串获取库下的表列表、获取表结构
    判断网络连接
    线程锁,解决多线程并发问题
  • 原文地址:https://www.cnblogs.com/HachikoT/p/14146107.html
Copyright © 2011-2022 走看看