docker run命令详解

docker run
-t #表示分配一个伪终端
-i #表示让容器的标准输入打开,不跟这个参数容器启不来
-d #后台运行
-P #dockerfile中EXPOSE 端口映射,也可以用-p xxx: 指定端口映射
-h #指定hostname
--add-host master:172.22.16.13 #写/etc/hosts文件
--network=my_net #指定网络
--ip 172.22.16.13 #network是自定义差有指定subnet的 可以用这个参数
-v /data:/data #host目录挂载到docker目录 [bind mount 能挂目录和文件]
-v /data #[docker manger mount] host目录在[/var/lib/docker/volumes/xxx xxx为容器id. 这种只能挂目录不能挂文件。会先把容器中的数据cp到host目录中。可移植强]
--restart=always #docker服务重启是也启动容器
-m 200M #设置内存的使用限额,例如 100M, 2G。
--memory-swap=300M #设置 内存+swap 的使用限额。例:docker run -m 200M --memory-swap=300M ubuntu 其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。
--vm : #启动 个内存工作线程。
--vm-bytes 280M: #每个线程分配 280M 内存。
-c #container_A 的 cpu share ,是 container_B 的两倍。当两个容器都需要 CPU 资源时,container_A可以得到的 CPU 是 container_B 的两倍。需要特别注意的是,这种按权重分配 CPU 只会发生在 CPU 资源紧张的情况下。如果 container_A 处于空闲状态,这时,为了充分利用 CPU 资源,container_B 也可以分配到全部可用的 CPU。
--device-read-bps,#限制读某个设备的 bps。
--device-write-bps,#限制写某个设备的 bps。
--device-read-iops,#限制读某个设备的 iops。
--device-write-iops,#限制写某个设备的 iops。
#bps 是 byte per second,每秒读写的数据量。
#iops 是 io per second,每秒 IO 的次数。
#可通过以下参数控制容器的 bps 和 iops
#下面这个例子限制容器写 /dev/sda 的速率为 MB/s
#docker run -it --device-write-bps /dev/sda:30MB ubuntu
--name web2 #容器名,唯一
d32 bash -c "/usr/local/nginx/sbin/nginx && tail -f" #d32是镜像Id, bash -c "...." ,容器启动后执行的操作

docker容器管理常用命令

docker rm docker_id  删除容器
docker rm -v $(docker ps -aq -f status=exited) #批量删除退出的容器 docker exec -it docker_id /bin/bash #进入容器
docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput cols) ed08 bash #进入容器 解决容器窗口太小 命令换行问题 docker create -it centos //这样可以创建一个容器但该容器并没有启动 docker start container_id //启动容器后可以使用 docker ps 查看到有start 就有stop和restart docker ps -a //查看所有容器包括已经退出的。 docker inspect e38 #查看容器详细信息 e38为容器id,如果是镜像id那就是查看镜像的详细信息
docker inspect -f "{{.State.Pid}}" e38 #获取 容器pid docker logs -f 容器id .#这样可以看容器的日志。
logs 显示容器启动进程的控制台输出,用 "-f" 持续打印 docker run -tid -v /home/hanxiaohui/docker:/data 3fba1048142f bash #数据共享
docker run -t -i centos /bin/bash //用下载到的镜像开启容器-i表示让容器的标准输入打开-t表示分配一个伪终端要把-i -t 放到镜像名字前面
docker run -it -d -p : --name db mysql bash
docker run -tid -v /home/hanxiaohui/docker:/data -p : --name hxh 4a8b9ed97fc5 bash
docker run -tid -v /root/src/:/data --name mongodb_node1 --privileged=true de0c21759190 bash #此命令创建的docker可以在容器里虚拟网卡 #启动centos7容器用这条命令 --privileged 此参数加上可以用systemctl这个命令
docker run -itd -v /opt/tools:/opt/tools --privileged --network=mynet --restart=always -h centos7_node1 --name centos7_node1  --ip 172.16.0.20 3db94df3e006 /usr/sbin/init docker run -itd --network=mynet --restart=always -h node1_redis --name node1_redis -v /hostdata:/data --ip 172.16.0.10 48366cea43cd bash #常用
#创建窗嚣指定静态ip
docker run -itd --network=my_net2 --restart=always --ip 172.22.16.8 busybox
(注意:只有使用 --subnet 创建的网络才能指定静态 IP.my_net 创建时没有指定 --subnet,如果指定静态 IP 报错)
自定义网络的方法
docker network create --driver bridge my_net #创建类似默认的bridge网络 注意:docker-io没有这个命令
docker network create --driver bridge --subnet 172.22.16.0/ --gateway 172.22.16.1 my_net2 #自定义网段
docker network ls #查看新建的网络my_net
brctl show #新增了一个网桥 br-eaed97dc9a77,这里 eaed97dc9a77 正好新建 bridge 网络 my_net 的短 id。(yum install bridge-utils )
docker network inspect mynet 查看一下 mynet 的配置信息

容器特性

因为容器的生命周期依赖于启动时执行的命令,只要该命令不结束,容器也就不会退出。
当 CMD 或 Entrypoint 或 docker run 命令行指定的命令运行结束时,容器停止。

内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。 Docker 通过下面两组参数来控制容器内存的使用量。

  1. -m 或 --memory:设置内存的使用限额,例如 100M, 2G。

  2. --memory-swap:设置 内存+swap 的使用限额。

当我们执行如下命令:

docker run -m 200M --memory-swap=300M ubuntu

其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。

下面我们将使用 progrium/stress 镜像来学习如何为容器分配内存。该镜像可用于对容器执行压力测试。执行如下命令:

docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M

--vm 1:启动 1 个内存工作线程。

--vm-bytes 280M:每个线程分配 280M 内存。

运行结果如下:

因为 280M 在可分配的范围(300M)内,所以工作线程能够正常工作,其过程是:

  1. 分配 280M 内存。

  2. 释放 280M 内存。

  3. 再分配 280M 内存。

  4. 再释放 280M 内存。

  5. 一直循环......

如果让工作线程分配的内存超过 300M,结果如下:

分配的内存超过限额,stress 线程报错,容器退出。

如果在启动容器时只指定 -m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m 的两倍,比如:

docker run -it -m 200M ubuntu

容器最多使用 200M 物理内存和 200M swap。

docker容器管理-含静态Ip(10)的更多相关文章

  1. docker容器管理及网络管理

    防火墙规则—— INPUT 主要用于主机防火墙,设置规则屏蔽处理进入本机的数据包示例:禁止10.180.100.141这个机器访问我本机的web服务iptables -t filter -A INPU ...

  2. docker容器中布置静态网站

    docker容器中布置静态网站(基于云服务器ubuntu系统) 服务器准备(ubuntu) docker nginx 静态网页制作 浏览器测试 服务器布置 这里推荐使用云服务器(阿里云.华为云.腾讯云 ...

  3. 四、docker容器管理

    一.docker容器管理 1.1 容器查看-ps命令 显示本地容器列表,但是默认不显示关闭的容器,只显示运行中的容器,除非加上命令选项 -a 用法:docker ps [-a 显示所有容器,默认只显示 ...

  4. docker 容器管理上

    Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: docker start container_id //启动容器后,可以使用 ...

  5. Docker系列三:Docker容器管理

    Docker容器管理 1. 单一容器管理 1) 容器的启动 $ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis: ...

  6. Docker学习第二天(Docker容器管理)

    简介 emmmm Docker 容器管理 推荐文章:容器技术概述 run里面的子选项 1.使用run命令创建容器 docker container run -it ubuntu /bin/bash / ...

  7. docker 容器管理常用命令

    Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: create Create a new container 创建一个容器: ...

  8. Docker-compose 多个Docker容器管理:以MYSQL和Wordpress为例

    搬砖的陈大师版权所有,转载请注明:http://www.lenggirl.com/tool/docker-compose.html Docker-compose 多个Docker容器管理:以MYSQL ...

  9. Docker容器管理平台Rancher高可用部署——看这篇就够了

    记得刚接触Rancher时,看了官方文档云里雾里,跟着官网文档部署了高可用Rancher,发现不管怎么折腾都无法部署成功(相信已尝试的朋友也有类似的感觉),今天腾出空来写个总结,给看到的朋友留个参考( ...

随机推荐

  1. BZOJ 1818: [Cqoi2010]内部白点(树状数组)

    传送门 解题思路 首先一定不可能有\(-1\)的情况,因为新产生的黑点不会造成任何贡献,它的各个方面都是不优的.那么只需要统计一遍答案,首先要将横坐标相同的两个点看成一条竖线,纵坐标相同的点看成一条横 ...

  2. HDU 3183 A Magic Lamp(RMQ问题, ST算法)

    原题目 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. webpack cssloader报错问题

    运行webpack4.+的时候出现 ERROR in ./src/css/index.cssModule build failed (from ./node_modules/css-loader/di ...

  4. jenkins-参数化构建插件:Choice Parameter

    参考: 谢谢大佬的总结: https://www.cnblogs.com/zhaojingyu/p/9862371.html 使用方式 step1: 添加参数,选择Choice Parameter,并 ...

  5. idea中以maven工程的方式运行tomcat源码

    0. 准备环境 idea+jdk8+tomcat源码 1.下载tomcat源码: http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/ ...

  6. fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程

    系统之家 发布时间:18-05-3117:56 很多Win7用户在复制较大的文件时,系统会弹出窗口提示“对于目标文件系统,文件XXX过大”,出现这种情况的原因是FAT32的文件系统不支持复制大于4g的 ...

  7. 利用select单线程点对点聊天

    select的优点与使用方法 select用单线程的方法遍历所有待读写的I/O接口, 当有接口可用时就会返回. select可设置电脑阻塞或非阻塞. 特别注意: 每次select前都要重新初始化集合和 ...

  8. android ndk 编译 libevent

    1. 下载 libevent 2.1.8 版本 https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/ ...

  9. MFC坐标问题

    页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口. 页面空间与设备空间的转换示意图: 页面空间到设备空间的转换需要两个矩形的宽高比(转换因子). 设备空间到物理空间转换的唯一作用是平移,并由Wi ...

  10. make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误

    解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误 在CentOS 7中,使用static方法编译,需要安装static vers ...