docker的自我认识(4)
docker的自我认识(4)
本篇主要是自己对docker容器的大体了解以及一些认识。
自己对docker的认识还只是初步阶段,并且在以后会不断加入新的内容,希望大家多多包涵!😁
##一. Docker容器
容器是一个镜像的运行状态,是一个运行时环境。容器就像是一个集装箱,它并不关心你到底运行的是什么程序,所有应用的运行方式都一样,而且他也不在乎你在什么样的环境中运行它。
镜像自身是只读的。容器从镜像启动的时候,Docker 会在镜像的最上层创建一个可写层,镜像本身将保持不变。
Docker采用libcontainer作为默认容器,取代了之前的LXC,这样也是为了进行容器标准化的统一。
##二. Docker容器的隔离性
docker中的libcontainer主要通过以下两个功能进行隔离:
- 采用namespace进行进程间的隔离。
- 采用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进入交互式