zoukankan      html  css  js  c++  java
  • Docker简介

    Docker基本概念

    什么是Docker??

     我们在理解docker之前,首先我们得区分清楚两个概念,**容器**和**虚拟机**。
    

    虚拟机:我们用的传统虚拟机都有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用、必要的二进制库,以及一个完整的用户操作系统。

    容器:容器是和我们的宿主机共享硬件资源及操作系统,可以实现动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

    优点:可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。

    总体来说, Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

    Docker的组成:

    • image(镜像)

    • Container(容器)

    • Repository(仓库)

      镜像是Docker运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。

      小提示:镜像可以理解为我们编写的代码

    常用命令

    查看版本信息:

       docker version
    

    查看所有镜像信息:

       docker images
    

    运行镜像:

       docker run {镜像名字(REPOSITORY)}
       或者
       #指定端口
       docker run --name {自定义命名} -d -p {指向端口}:{镜像的默认端口}
        {镜像名字}
       或者
       #随机分配端口
       docker run --name {自定义命名} -d -P {镜像名字}
       #给镜像挂载本机目录
       docker run --name {自定义命名} -d -p {指向端口}:{镜像的默认端口}
        -v{本机目录绝对路径}:{容器目录绝对路径}: {镜像名字}
    

    查看正在运行的容器:

       docker ps | docker container ls
    

    查看所有容器:

       docker ps -a
    

    对一个容器的启动、重启、停止

       docker start container_name/container_id
       docker restart container_name/container_id
       docker stop container_name/container_id
    

    进入容器:

       docker attach container_name/container_id
       或者
       docker exec -it {NAMES} /bin/bash
       
    

    删除镜像,删除指定的镜像的话需要先停止容器的运行,然后删除容器再删除镜像

       #停止容器
        docker ps
        docker stop container_name/container_id
        #删除容器
        docker rm container_name/container_id
        #删除镜像
        docker rmi IMAGEID
    

    容器中安装vim

       apt-get update
       apt-get install vim
    

    启动|关闭|删除 ALL 命令

    #启动所有的容器命令
    docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    #关闭所有的容器命令
    docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    #删除所有的容器命令
    docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    #删除所有的镜像
    docker rmi $(docker images | awk '{print $3}' |tail -n +2)
    
  • 相关阅读:
    Binder核心原理解析
    写给 Android 应用工程师的 Binder 原理剖析
    Android Binder原理解析
    Android面试题(25)-Bundle机制_pgg_cold的博客-CSDN博客_android bundle机制
    腾讯Android面试精选题——谈一谈Binder的原理和实现一次拷贝的流程
    把这份关于Android Binder原理一系列笔记研究完,进大厂是个“加分项”...
    大型项目必备IPC之其他IPC方式(二)
    骚年!用Binder原理去彻底征服Android大厂面试官吧
    还不懂Binder的原理?那么你即将损失一张腾讯的offer
    每日一问 Binder
  • 原文地址:https://www.cnblogs.com/atsdb/p/11605118.html
Copyright © 2011-2022 走看看