您的位置:首页 > 运维架构 > Docker

docker使用基础总结

2015-09-21 13:37 706 查看
一、基础知识

Docker特性:
1.启动速度为秒级,共享Kernel几乎没有性能损耗,资源消耗小
2.提供隔离的运行环境
-文件系统隔离
-网络隔离
-进程号隔离
-进程间通信隔离
3.提供资源限制
-CPU计算资源
-内存资源
-磁盘I/O资源
4.一个容器只干一件事情
保证容器提供服务的服务质量并且可以降低容器之间的相互干扰
5.docker镜像是分层的,比如把一个centos启动成容器,然后装一个服务保存,就是在原本的镜像层上又加了一层

隔离的原理
CGroups:限制容器的资源使用,
Namespace机制实现容器间的隔离
chroot:文件系统的隔离
liunx内核提供的限制,记录和隔离进程组所使用的资源
通过不同的子系统来实现对不同资源使用的控制和记录

docker的守护进程和客户端的连接方式
通过socket链接
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

docker的运行模式
用户可以通过命令行的接口或者自定义的应用和客户端连接,客户端可以是docker提供的二进制程序、shell中运行的docker命令、用户自定义的程序,程序是通过remoteAPI来调用docker的服务,docker的客户端和服务端通过socket连接,这种连接意味着docker的客户端和服务端既可以在同一台机器上运行也可以在不同的机器上运行,docker的客户端可以通过远程访问的方式来访问docker服务端
二、命令操作
镜像操作
下载镜像
docker  pull  centos

上传镜像
docker  push  centos
删除镜像
docker rmi  imageID
打标签
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
列出镜像
docker images
导出镜像
docker save -o image.tar 镜像名称+tag
导入镜像
docker load  --input tar包名称
查找镜像:从官方仓库中
docker  search  centos
构建镜像:把镜像启动起来就是容器然后进行修改,修改完exit退出,commit命令保存
docker commit imageID
列出镜像
docker images
容器操作启动容器
docker  run [OPTIONS] IMAGE[:TAG]  [COMMAND] [ARG...]
docker run -t -i centos:latest /bin/bash
docker  run  --help
-i:交互式操作
-t:分配一个tty
-d:后台运行
2、启动容器
docker run -t -i centos:latest /bin/bash
如果不指定具体的标记,则默认使用 latest 标记信息3、容器基本使用
容器生命周期管理 docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维   docker [ps|inspect|top|attach|events|logs|wait|export|port]
镜像仓库     docker [login|pull|push|search]
4.不进入容器对容器进行操作
docker run image_name  yum install -y app_name
5.停止一个容器
docker stop CONTAINER_ID
6.启动一个停止的容器,并附着
docker start CONTAINER_ID
docker attach CONTAINER_ID   #需要多敲一次回车
7.重启一个容器
docker restart CONTAINER_ID
8.删除一个容器
docker rm   CONTAINER_ID
9.列出某个容器与宿主机之间的端口映射关系
docker port CONTAINER_ID
10.docker删除所有stop的容器
docker rm $(docker ps -q -a)
脚本还原images并跟系统已有镜像对比,如果系统不存在这个镜像,就还原
#!/bin/bash
c=`docker images  | awk '{print $1}' | grep -v REPOSITORY` #过滤出镜像名称
echo $c >> images.txt                                      #把所有镜像名称追加到
for i in `ls *.tar`                                        #tar包名赋值给i
do
a=`echo  $i | awk -F '.' '{print $1}'`                  #去掉.tar
grep  "$a" images.txt                                   #查询$a是否在文件中
if [ $? != 0 ]                                          #返回值不为0就是
then
cat $i  |  docker   import - $a                      #就还原
else
continue
fi

done


本文出自 “翟军铭的linux博客” 博客,请务必保留此出处http://zhaijunming5.blog.51cto.com/10668883/1696721
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: