Docker所代表的Container技术,是对内核的Cgroups、namespace等内容的使用.
Linux Container=lxc
![QQ截图20170309085124.png wKiom1jAprzwVHaOAAFyK4UeqDY660.png]()
借助BootZdocker可以实现在Mac和Windows上运行
CGroups限制容器的资源使用
Namespace机制,实现荣期间的隔离
chroot,文件系统的隔离
Linux内核提供的限制,记录和隔离进程组所使用的资源,由Google的工程师提出,后来被整合到kernel.
通过不同的子系统(blkio,cpu,cpuacct等)来实现对不同资源使用的控制和记录。
pid,容器有自己独立的进程表和1号进程
net,容器有自己独立的network info
ipc,在ipc通信时候,需要加入额外信息来标示进程
mnt,每个容器有自己唯一的目录挂在
utc,每个容器有独立的hostname和domain
![QQ截图20170309182152.png wKiom1jBLNeTC5h_AAD8jL8L-fk762.png]()
adcanced multi layer unification filesystem
可以实现把多个不同目录的内容合并在一起
允许read-only和read-write目录并存
docker使用aufs来实现分层的文件系统的管理
只读部分定义为image,可写部分是container
image类似一个单链表系统,每个image包含一个指向parent image的指针
没有parent image的image是base image
docker pull {image name}
如果不指定tag的话,会把image的所有的tags都会download下来
![QQ截图20170310071540.png wKioL1jB4hKjMtwLAAbB4PinB6A152.png]()
![QQ截图20170310071606.png wKiom1jB4hPgTePxAAHmO-N3V6g893.png]()
![QQ截图20170310071620.png wKioL1jB4haD_MvFAAZY5ICtaVE941.png]()
![QQ截图20170310071638.png wKiom1jB4hnQ0ipLAATQ8VJM2Yo471.png]()
使用RUN来运行一个DOcker Container
网络设置
Volume 共享文件系统
使用Link来连接两个容器
![QQ截图20170310072531.png wKioL1jB5Aazt1IoAAD-3kBdCoo185.png]()
对于不存在的image,Docker会自动去Registry里面下载对应的image,然后再运行Container
![QQ截图20170310072952.png wKiom1jB5ReiYBzFAACMDGnHfYg954.png]()
![QQ截图20170310073000.png wKioL1jB5RiRNpmaAAC7hHe86jc188.png]()
![QQ截图20170310075132.png wKiom1jB6iCjwHIWAACEO1z1xSU280.png]()
![QQ截图20170310075227.png wKioL1jB6l7xpc3ZAADIuxCPbxU826.png]()
通过Logs命令可以看到Container中Command所指向进程的STDOUT,STDERR数据
通过-e参数,可以在运行container的时候添加系统环境变量
本文转自 yard521 51CTO博客,原文链接:http://blog.51cto.com/tangyade/1904611,如需转载请自行联系原作者