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的网络栈
 
 
- 通过——net参数来修改container的网络设置,默认是bridge的方式;  --net host
 
端口映射:
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"
docker基础入门之二的更多相关文章
- PHP基础入门(二)【PHP函数基础】
		
PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...
 - Oracle数据库基础入门《二》Oracle内存结构
		
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
 - MyBatis基础入门《二十》动态SQL(foreach)
		
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
 - MyBatis基础入门《二》Select查询
		
MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...
 - Docker快速入门(二)
		
上篇文章<Docker快速入门(一)>介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile. 1 image文件 (1)Docker ...
 - Docker基础入门
		
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
 - 小白学 Python 爬虫(4):前置准备(三)Docker基础入门
		
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
 - [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.
		
前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...
 - Docker基础入门及示例
		
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
 
随机推荐
- 数据仓库(七):Oracle Warehouse Builder(OWB)创建数据仓库
			
本文简述使用OWB创建数据仓库的一般过程.Oracle的OWB是目前最好的三大ETL产品之一.OWB不但可以可以完成数据的抽取.转换和加 载,还能帮助用户在Oracle数据库中创建ROLAP(Rela ...
 - 无线功率 mW 和 dBm 的换算
			
无线电发射机输出的射频信号,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去.电磁波到达接收地点后,由天线接收下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机.因此在无线网络的工程 ...
 - JAVA I/O使用方法(转)
			
下面四张图表明了类之间的继承关系,其中红色.加粗的类名是常用的类. 常用转换 FileReader——>BufferedReader BufferedReader in= new Buffere ...
 - SQLServer2012 和 MariaDB 10.0.3 分页效率的对比
			
1. 实验环境 R910服务器, 16G内存 SqlServer 2012 64bit MariaDB 10.0.3 64bit (InnoDB) 2. 实验表情况 rtlBill ...
 - 杭电 1272 POJ 1308 小希的迷宫
			
这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...
 - c#搭建服务端 简单中最高效的数据操作Linq (4)
			
.NET F 3.5之后提出的linq to sql 概念,大大的简化了对于数据对象的操作,可以通过简单的语法直接操作数据对象,如List,Linq to sql类 等等. 1.使用Linq to s ...
 - 数学题(找规律)-hdu-4371-Minimum palindrome
			
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4731 题目大意: 给一个n表示有n种字母(全部小写),给一个m,求一个由不超过n种字母组成的m个小写 ...
 - ZOJ1100  状压DP +深搜
			
记得做过类似于这类题目是能够用组合数学方法来解决的,可惜淡忘了,也找不到了,看了网上的也有人提到过能够用组合公式解决,但是没人做,都是用了状压DP的方法,这个状压非常难讲清楚吧,推荐两篇 第一遍大体看 ...
 - CSS3 grayscale滤镜图片变黑白实例页面
			
在网站加入友情链接的LOGO时,因为不同logo颜色的问题,和主题色调可能产生冲突, 我选择用CSS3滤镜让logo变黑白,hover时变回原本的彩色 CSS代码: .gray { -webkit-f ...
 - CheckBox只选择一项
			
最近做一个问卷的页面,客户那边说要使用checkbox而且只能选择一项 就写了下面的代码 <html xmlns="http://www.w3.org/1999/xhtml" ...