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就预见了这个项目的价值,并将其做为 ...
随机推荐
- linux space/mark设置
参考链接: http://blog.csdn.net/zhaozh2000/article/details/6460223 串口数据的发送: 数据的发送: 数据位+检验位+停止位, 进行数据的发送.( ...
- script标签中type为"text/x-template"或"text/html"
写过一点前端的都会碰到需要使用JS字符串拼接HTML元素然后append到页面DOM树上的情况,一般的写法都是使用+号以字符串的形式拼接,如果是短点的还好,如果很长很长的话就会拼接到令人崩溃了. 比如 ...
- SpringMvc整合Mybatis并使用声明式事务
(1).引入相关依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid< ...
- C++获取当前所有进程的完整路径
实现代码 #include <stdio.h> #include <windows.h> #include <tlhelp32.h> #include <st ...
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Synchronization and semapores
1.前言 本文主要介绍原子变量的实现原理,对原子变量的修改有一套特殊的机制 2. Local monitor和Global monitor UP时执行Load EX和Store EX时仅需关注Loca ...
- Python3学习笔记25-logging模块
logging模块,Python自带用来记录日志的模块. 因为工作需要用到关于日志的,最近一直都在看关于日志模块的东西,百度了很多文章,可惜都是看的让人一头雾水,最后运气不错,找到一篇很详细的文章.传 ...
- PC上图标显示异常 白色框框处理方案
步骤如下: 1.打开360安全卫士,点击图标显示异常的立即修复 2.修复完,图标就正常了 3.分析原因: 可能是我用了魔方优化大师(TweakerCube)优化了桌面快捷方式(去掉箭头)引起的,而且是 ...
- python文件、文件夹操作OS模块
转自:python文件.文件夹操作OS模块 '''一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: ...
- 转:10分钟了解JS堆、栈以及事件循环的概念
https://juejin.im/post/5b1deac06fb9a01e643e2a95?utm_medium=fe&utm_source=weixinqun 前言 其实一开始对栈.堆的 ...
- XPATH语法(二)
节点(node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 以下面这xm ...