docker基础入门之二

一、docker文件系统:

  linuxFS包括boot file system 和 root file system

  boot file system (bootfs),包含bootloader和kernel,在系统启动完成后,kernel滞留内存,bootfs解除挂载;

  root file system(rootfs),包括类似/bin,/usr, /lib等目录,这些和kernel无关,这也是不同linux发行版本的差异所在;

         

         Linux  FS                  Linux FS in Docker 

  

  • 传统Linux启动时,将rootfs设置为readonly并检查完整性,然后设置成read-write
  • Docker在启动container的时候,也是把rootfs设置为readonly,然后通过aufs把一个read-write的文件系统挂载到rootfs之上,并且把下层文件系统设置成readonly,这样构建一个完整的操作系统;          

二、Layer FS  

                 

  • 对于每层readonly的FS,在docker中成为image
  • 对于顶上read-write的FS,成为container
  • 对于readonly中内容的修改,采用的是COW的技术,把文件复制到read-write层并修改,实际用户看到的是当前container层中的文件,image中的文件是不受影响的;

  Image:

    • 除了base image之外,每一层image都有一个parent image
    • 没有parent image的镜像叫base image
    • 基于cow的技术,image部分是不会被修改的,因此container可以共享image的FS,提高了存储效率;      

   storage  dirver

    • 除了默认的aufs之外,docker通过对于storage的抽象,可以支持一些其他的storage driver; 例如:vfs, devicemapper, btrfs
    • 修改docker启动时候的参数设置,增加——storage-driver = {storage plugin}在配置文件中;       

  docker hub:

    docker官方提供的用来共享image的平台;

  镜像命名和版本管理:

    • base image是docker官方提供的基础镜像;
    • 普通镜像的命名规范{namespace}/{repository name}:{tag}
    • namespace是docker hub的用户名,实际是起namespace作用
    • repository,类似于github的项目,例如ubuntu, mysql等;
    • tag,表示版本信息,例如cp/mysql:5.5,  tag是可选的,默认值是latest      

   查找Image: docker search {repository name}    #默认是在docker hub上进心搜索

   获取Image: docker pull {image name}       #如果不指定tag的话,会把该image的所有tags都会download下来;

   上传Image:

      1、docker login      #登录到docker hub中

      2、把container通过docker commit的命令转化成一个Image

      3、通过docker tag来命名新生成的Image

      4、docker push到docker hub中;

三、基本操作:

  运行container:

    • 运行一个container的本事就是开启一个具有独立namespace的进程
    • docker 通过run的命令来启动一个container
    • 运行一个container必须要指定一个image作为初始化的文件系统;  

   sudo docker run [OPTIONS]  IMAGE[:TAG]   [COMMANG][ARG....]

  Image:

    对于不存在的Image,Docker会自动会Registry里面下载对于的Image,然后再运行container 

  COMMAND:

    command标志的是container中实际运行的首进程;

    如果Image里面包含了CMD的指令,那么在启动container的时候,不需要指定command,否则会使用指向command来覆盖Image的cmd

  前台运行or后台运行:

    • 默认的Container是在前台运行的,会绑定command进程的STDIN、STDOUT、STDERR到console上;
    • 可以通过-d的选项让container运行在后台;  
    • 如果是前台运行,也可以通过指定-a {STDOUT、STDIN、STDERR}选择需要绑定的IO
    • 前后台切换;通过attach命令可以重新attache一个后台运行的container 

   在后台运行的情况下,run命令会返回一下UUID,唯一标识container

   可以通过docker ps来查看container的UUID和运行信息

   可以通过指定——name的方式来指定container的名字,名字必须唯一

  inspect:

    通过docker  inspect {Container ID}来获取container的更多的信息,包括网络、volume,实际在HOST上的进程ID等信息;

  Log:

    通过Logs命令可以看到Container中的Command所指向进程的STDOUT、STDERR数据;

  环境变量:

    通过-e参数,可以在运行container的时候添加环境变量;

  Network架构:

    • 在Host主机上的一个veth{id}的虚拟网卡和一个container里面的eth0网卡一一映射
    • Host上的bridge负责把数据流在不同的veth间转发,实现网络的IO
    • bridge(docker0)使用RFC1918私有网络,给每一个container分配ip

      

  网络设置:

    • 通过——net参数来修改container的网络设置,默认是bridge的方式;  --net host 

      • none表示关闭container的网络连接
      • host表示使用主机的网络栈,这个时候host主机不会创建veth虚拟网卡映射
      • container:{name|id}, 使用另外一个container的网络栈  

  端口映射:

    Docker通过采用端口映射的方式,允许把内部container的服务端口暴露到外部;

    使用-p参数可以指定需要暴露的container的内部端口,在不指定特定的Host的对应端口的情况下,docker会自动分配(49000-49900)在一个Host上的端口与其映射;

    使用-p参数,表示暴露所有在Image中通过expose指定的端口;

 volume绑定:

    通过-v参数,可以把Host上的一个目录绑定到container中,允许container对其进行读写;

    docker run -v /home/test:/vagrant  -t  ubuntu ls -al /vagrant

 容器间通信:

    通过link参数,把container的端口信息暴露到另一个container中,实现container之间的通信;

    docker run --link redis:db  -t ubuntu  sh -c "export"

   

时间: 2024-10-15 02:19:27

docker基础入门之二的相关文章

Bootstrap零基础入门教程(二)_javascript技巧

什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 本文重点给大家介绍Bootstrap零基础入门教程(二),具体详情如下所示: 过程中会频繁查阅资料的网站: http://www.

Docker Swarm入门(二)配置选项与基本运行环境要求

本文讲的是Docker Swarm入门(二)配置选项与基本运行环境要求,[编者的话]本文作者Matt Bajor热衷Docker及相关产品的研究,本文是他写的Docker Swarm入门系列的第二篇,主要介绍了Docker Swarm的最基本的配置选项和运行要求.作者通过实际例子介绍了Swarm的几个基本的发现服务及其对于容器的调度策略,最后还介绍了如何在Swarm集群通信中使用安全传输协议. Docker Swarm集群运行环境的最低要求 创建基本的Docker Swarm集群对运行环境的要求

docker基础入门之一

一.概述 1.传统虚拟化技术: 纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统: 硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率: 解决方案: 商业版解决方案:VMware vSphere. VMware Fusion 开源解决方案:KVM.Xen 2.system-level虚拟化(container虚拟机技术): 不需要模拟硬件层: 共享同一个HOST OS的Kernal  user space  instance = Conta

大白话Docker入门(二)

大白话Docker入门(二) 上篇的大白话Docker入门(一)让我们认识了docker,知道docker大概是怎么玩的.初步的印象可能会让你觉得和现在的VM的部署方式也挺像的,比如docker image就是一个系统备份文件,docker container就是一个跑起来的vm,那docker到底又有什么特别的呢? 不一样的Docker 简单的列一下目前这个阶段我们很容易发现的几点: docker image的体积非常的小,注意看下之前我们用到的几个image的size,一个完整功能的ubun

UWP入门(二) -- 基础笔记

原文:UWP入门(二) -- 基础笔记 不错的UWP入门视频,1092417123,欢迎交流 UWP-04 - What i XMAL? XAML - XML Syntax(语法) ,create instance of Classes that define the UI by setting properties(属性). UWP-05 - Understanding Type Converters Type Converters - Convert literal(字面的) strings

零基础入门深度学习(二):神经网络和反向传播算法

投稿:Intelligent Software Development 团队介绍:团队成员来自一线互联网公司,工作在架构设计与优化.工程方法研究与实践的最前线,曾参与搜索.互联网广告.共有云/私有云等大型产品的设计.开发和技术优化工作.目前主要专注在机器学习.微服务架构设计.虚拟化/容器化.持续交付/DevOps等领域,希望通过先进技术和工程方法最大化提升软件和服务的竞争力.   在上一篇文章<零基础入门深度学习:感应器.线性单元和梯度下降>中,我们已经掌握了机器学习的基本套路,对模型.目标函

Docker技术入门与实战(第2版).

容器技术系列 Docker技术入门与实战 第2版 杨保华 戴王剑 曹亚仑 编著 图书在版编目(CIP)数据 Docker技术入门与实战 / 杨保华,戴王剑,曹亚仑编著. -2版. -北京:机械工业出版社,2017.1 (容器技术系列) ISBN 978-7-111-55582-7 I. D- II. ①杨- ②戴- ③曹- III. Linux操作系统-程序设计 IV. TP316.85 中国版本图书馆CIP数据核字(2016)第308604号 本书从Docker基本原理开始,深入浅出地讲解Do

Docker Swarm入门:启动Swarm管理者及代理

本文讲的是Docker Swarm入门:启动Swarm管理者及代理[编者的话]在上一篇文章中开始介绍Docker Swarm入门,并已建好了令牌,下面让我们开始启动管理者容器,这是一切的基础. 启动Swarm管理者及代理 首先,启动Swarm管理者,然后创建代理加入Swarm集群.这两步都在上一篇启动"Swarm"容器时已经完成,下面将使用不用的参数启动集群.由于管理者已经是'激活'节点,所以可使用以下命令创建Swarm 集群: $ docker run -d -p 3376:3376

Docker基础:查找镜像和运行容器

本文讲的是Docker基础:查找镜像和运行容器[编者的话]本文是作者学习Docker的笔记,涉及在Windows上的安装,介绍了镜像和容器的知识和基本操作,适合Docker初学者. [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为主题,包括:Docker Plugin.Docker storage driver.Docker Volume Pulgin.Kubernetes Storage机制.容器网络实现原理和模型.Docker网络实现.网络插件.Calico.Cont