003.Docker容器管理
一 docer运行应用
1.1 常见容器运行
root@docker:~# docker #查看docker相关命令
root@docker:~# docker run -d -p 80:80 httpd #从docker hub下载httpd镜像,启动httpd容器,并将容器的80端口映射到宿主机的80端口
root@docker:~# docker run centos:7 echo "hello world"
hello world
root@docker:~# docker ps #查看运行的容器情况
- CONTAINER ID:容器ID
- NAMES:自动分配的容器名称
root@docker:~# docker logs 634cf027ad85 #查看容器内的标准输出
root@docker:~# docker stop 634cf027ad85 #停止容器
root@docker:~# docker ps #再次查看
1.2 交互式运行容器
root@docker:~# docker run -i -t centos:7 /bin/bash
- -t:在新容器内指定一个伪终端或终端。
- -i:允许你对容器内的标准输入 (STDIN) 进行交互。
二 运行Web应用及其他操作
2.1 容器后端运行
root@docker:~# docker pull training/webapp
root@docker:~# docker run -d -P training/webapp python app.py
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上。
root@docker:~# docker ps



2.2 指定端口运行容器
root@docker:~# docker run -d -p 8080:5000 training/webapp python app.py #使用-p参数来绑定指定端口。
root@docker:~# docker run -d -p 9090:5000/tcp --name web training/webapp python app.py #使用--name标记可以为容器命名
root@docker:~# docker ps


root@docker:~# docker port 25cbcff93d56
5000/tcp -> 0.0.0.0:8080
root@docker:~# docker port 95b731acd6b5
5000/tcp -> 0.0.0.0:32768

2.3 进入容器
root@docker:~# docker exec -it 5e7ad2db2304 /bin/bash
root@docker:~# docker exec -it web /bin/bash
2.4 容器其他操作
root@docker:~# docker logs -f 95b731acd6b5 #查看运行日志
root@docker:~# docker inspect web #查看Docker容器的配置和状态信息
root@docker:~# docker restart 5e7ad2db2304 #重启docker
root@docker:~# docker stop 95b731acd6b5 #停止docker
root@docker:~# docker kill 25cbcff93d56 #停止docker
root@docker:~# docker ps -a #查看所有容器情况
root@docker:~# docker start 95b731acd6b5 #运行已停止的docker
root@docker:~# docker rm 95b731acd6b5 #删除该docker
root@docker:~# docker pause 5e7ad2db2304 #暂停容器
root@docker:~# docker unpause 5e7ad2db2304 #恢复容器
三 容器生命周期管理
3.1 容器生命周期

四 docker资源限制
4.1 资源限制意义
五 docker内存限制
5.1 内存限制
- 容器能使用的内存和交换分区大小。
- 容器的核心内存大小。
- 容器虚拟内存的交换行为。
- 容器内存的软性限制。
- 是否杀死占用过多内存的容器。
- 容器被杀死的优先级。
5.2 内存限制相关参数
|
选项
|
描述
|
|
-m,--memory
|
内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为4M
|
|
--memory-swap
|
内存+交换分区大小总限制,格式同上,必须比-m设置的值大
|
|
--memory-reservation
|
内存的软性限制,格式同上
|
|
--oom-kill-disable
|
是否阻止 OOM killer 杀死容器,默认没设置
|
|
--oom-score-adj
|
容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0
|
|
--memory-swappiness
|
用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数
|
|
--kernel-memory
|
核心内存限制。格式同上,最小为 4M
|
5.3 内存设置方式
- 设置-m,--memory,不设置--memory-swap
root@docker:~# docker run -d --name ubuntu_01 -m 1G --memory-swap 0 ubuntu:16.04
- 设置-m,--memory=a,--memory-swap=b,且b > a
root@docker:~# docker run -d --name ubuntu_02 -m 1G --memory-swap 3G ubuntu:16.04
- 设置-m,--memory=a,--memory-swap=-1
root@docker:~# docker run -d --name ubuntu_03 -m 1G --memory-swap -1 ubuntu:16.04
root@docker:~# vi /etc/default/grub
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
root@docker:~# update-grub #重启系统
5.4 内存软性限制
root@docker:~# docker run -d --name ubuntu_04 -m 2G --memory-reservation 1G ubuntu:16.04
5.5 OOM killer
root@docker:~# docker run -d --name ubuntu_05 -m 1G --oom-kill-disable ubuntu:16.04
5.6 --memory-swappiness
root@docker:~# docker run -d --name ubuntu_06 --memory-swappiness=0 ubuntu:16.04
六 CPU限制
- 当多个 CPU 密集型的容器竞争 CPU 时,设置各个容器能使用的 CPU 时间相对比例。
- 以绝对的方式设置容器在每个调度周期内最多能使用的 CPU 时间。
6.1 CPU限制相关参数
|
选项
|
描述
|
|
--cpuset-cpus=""
|
允许使用的 CPU 集,值可以为 0-3,0,1
|
|
-c,--cpu-shares=0
|
CPU 共享权值(相对权重)
|
|
cpu-period=0
|
限制 CPU CFS 的周期,范围从 100ms~1s,即[1000, 1000000]
|
|
--cpu-quota=0
|
限制 CPU CFS 配额,必须不小于1ms,即 >= 1000
|
|
--cpuset-mems=""
|
允许在上执行的内存节点(MEMs),只对 NUMA 系统有效
|
6.2 CPU集
root@docker:~# docker run -d --name ubuntu_07 --cpuset-cpus="1,3" ubuntu:16.04
6.3 CPU 资源的相对限制
PID container CPU CPU share
100 {C0} 0 100% of CPU0
101 {C1} 1 100% of CPU1
102 {C1} 2 100% of CPU2
6.4 CPU 资源的绝对限制
七 Block IO限制
|
选项
|
描述
|
|
--blkio-weight
|
设置的都是资源使用的权重
提示:该设置都是资源紧张的情况下才会起到权重的作用,正常情况下,都是平等的。
--blkio-weight-device 针对特定的设备设置权重
|
|
--device-read-bps
|
限制读某个设备的bps(数据量)
|
|
--device-write-bps
|
限制写入某个设备的bps(数据量)
|
|
--device-read-iops
|
限制读某个设备的iops(次数)
|
|
--device-write-iops
|
限制写入某个设备的iops(次数)
|
7.1 block IO 权重
root@docker:~# docker run -d --name ubuntu_10 --blkio-weight 600 ubuntu:16.04
root@docker:~# docker run -d --name ubuntu_11 --blkio-weight 300 ubuntu:16.04
7.2 限制 bps 和 iops
root@docker:~# docker run -d --name ubuntu_12 --device-write-bps /dev/sda:30MB ubuntu:16.04
003.Docker容器管理的更多相关文章
- docker 容器管理常用命令
Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: create Create a new container 创建一个容器: ...
- docker 容器管理上
Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: docker start container_id //启动容器后,可以使用 ...
- Docker-compose 多个Docker容器管理:以MYSQL和Wordpress为例
搬砖的陈大师版权所有,转载请注明:http://www.lenggirl.com/tool/docker-compose.html Docker-compose 多个Docker容器管理:以MYSQL ...
- Docker系列三:Docker容器管理
Docker容器管理 1. 单一容器管理 1) 容器的启动 $ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis: ...
- docker容器管理及网络管理
防火墙规则—— INPUT 主要用于主机防火墙,设置规则屏蔽处理进入本机的数据包示例:禁止10.180.100.141这个机器访问我本机的web服务iptables -t filter -A INPU ...
- docker容器管理-含静态Ip(10)
docker run命令详解 docker run -t #表示分配一个伪终端 -i #表示让容器的标准输入打开,不跟这个参数容器启不来 -d #后台运行 -P #dockerfile中EXPOSE ...
- Docker学习第二天(Docker容器管理)
简介 emmmm Docker 容器管理 推荐文章:容器技术概述 run里面的子选项 1.使用run命令创建容器 docker container run -it ubuntu /bin/bash / ...
- 四、docker容器管理
一.docker容器管理 1.1 容器查看-ps命令 显示本地容器列表,但是默认不显示关闭的容器,只显示运行中的容器,除非加上命令选项 -a 用法:docker ps [-a 显示所有容器,默认只显示 ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
随机推荐
- ActiveMQ学习笔记1
1.接口 JMS 公共 点对点域 发布/订阅域 ConnectionFactory QueueConnectionFactory TopicConnectionFactory Connection Q ...
- 首次使用Vue开发
1.首先在页面上添加如下的代码 var app = new Vue({ el: '#signupForm', data: { UserName: '', PWD: '' } }); 2.在下面添加ht ...
- python 历险记(一)— python 的String,集合(List,元组,Dict)
目录 引言 String 有哪些有用的方法? 如何拼接字符串? 如何分隔字符串? 如何获取字符串长度 如何将 list 拼接成字符串? 如何替换字符串? 如何去除字符串中的空格? 如何子字符串是否包含 ...
- ES系列七、ES-倒排索引详解
1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义.图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系. 图3-1 单词-文档矩 ...
- python调用win32com.client的GetObject查找进程信息及服务信息
为何不用wmi呢?因为执行很慢,为啥不用winreg?因为winreg在批量获取及遍历服务方面很不方便,于是采用这方法 该方法同命令行下的wmic执行 获取服务信息 #coding=utf8 from ...
- CSS选择器中带点(.)怎么办?
在SharePoint中很多元素的ID都用点(.)来连接的,比如: <li class="ms-cui-group" id="Ribbon.Documents.Ed ...
- Oracle数据库修改LISTENER的监听端口
背景 这又是个不作不会死的事情,自己不懂,硬搞,端口换了,后来竟然捣鼓好了.尽量少搞这些事情. 注意点 http://wallimn.iteye.com/blog/1163614 修改配置文件后,需修 ...
- Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs
http://www.vpser.net/manage/nethogs.html 来自. 最后略有修改 之前VPS侦探曾经介绍过流量带宽相关的工具如:iftop.vnstat,这几个都是统计和监 ...
- node基础知识
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个可以让 JavaScript 运行在服务器端的平台 Node.js 使用了一个事件驱动.非阻塞式 I/O ...
- Eclipse开发环境配置
1. java环境 安装 本系统使用java6开发,老师使用1.6.0 _45版本开发,如下图所示: "开发工具"目录提供了1.6.0 _45版本32位和64位两个安装程序,大家根 ...