docker的自我认识(4)

本篇主要是自己对docker容器的大体了解以及一些认识。

自己对docker的认识还只是初步阶段,并且在以后会不断加入新的内容,希望大家多多包涵!😁

##一. Docker容器
容器是一个镜像的运行状态,是一个运行时环境。容器就像是一个集装箱,它并不关心你到底运行的是什么程序,所有应用的运行方式都一样,而且他也不在乎你在什么样的环境中运行它。

镜像自身是只读的。容器从镜像启动的时候,Docker 会在镜像的最上层创建一个可写层,镜像本身将保持不变。

Docker采用libcontainer作为默认容器,取代了之前的LXC,这样也是为了进行容器标准化的统一。

##二. Docker容器的隔离性
docker中的libcontainer主要通过以下两个功能进行隔离:

  1. 采用namespace进行进程间的隔离。
  2. 采用cgroups来控制资源的度量和分配,从而达到资源的隔离(cpu, 内存,网络和IO)

通过上面两个隔离机制,是的docker在资源隔离方面做的很不错,因此有些公司将docker应用到yarn中以解决yarn资源隔离的弱势。

Docker利用AUFS来实现对容器的快速更新。AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统。AUFS具有层的概念,每一次修改都是在已有的只写层上进行增量修改,修改内容将形成新的文件层,而不影响原有的层。

##三. 常用命令

####容器相关操作

  • docker create # 创建一个容器但是不启动它
  • docker run # 创建并启动一个容器
  • docker stop # 停止容器运行,发送信号SIGTERM
  • docker start # 启动一个停止状态的容器
  • docker restart # 重启一个容器
  • docker rm # 删除一个容器
  • docker kill # 发送信号给容器,默认SIGKILL
  • docker attach # 连接(进入)到一个正在运行的容器
  • docker wait # 阻塞到一个容器,直到容器停止运行

####获取容器相关信息

  • docker ps # 显示状态为运行(Up)的容器
  • docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
  • docker inspect # 深入容器内部获取容器所有信息
  • docker logs # 查看容器的日志(stdout/stderr)
  • docker events # 得到docker服务器的实时的事件
  • docker port # 显示容器的端口映射
  • docker top # 显示容器的进程信息
  • docker diff # 显示容器文件系统的前后变化

####导出容器

  • docker cp # 从容器里向外拷贝文件或目录
  • docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息

####执行

  • docker exec # 在容器里执行一个命令,可以执行bash进入交互式

Comments

2016-06-29