容器

docker ps -a 或docker container ls -a显示所有状态的容器

 

docker run -d ubuntu /bin/bash -c "while true; do sleep 1; done"  //-d 以后台方式启动容器,返回长ID。

CONTAINER ID是短ID,长ID的前12个字符。

通过--name为容器命名NAMES,如:docker run --name "my_http_server" -d httpd

通过长ID、短ID、NAMES操作容器,如:docker stop fe39cc2ccc8b

进入容器:

docker attach <container>  //直接进入容器启动命令的终端,不启动新的进程。常用于直接在终端中查看启动命令的输出。

或使用docker logs -f <container>查看启动命令的输出。-f 持续打印输出

docker exec -it <container> bash|sh  //在容器中打开新的终端,启动新的进程。-it 以交互模式打开容器,执行bash命令。

最佳实践:

服务类:

通过-d以后台方式运行,通过exec -it进入容器排查问题。

工具类:

通过run -it方式运行。

 

其他操作:

docker stop <container>  //停止容器

docker kill <container>  //杀死容器

docker create <container>  //创建容器

docker start <container>  //启动容器,会保留第一次启动时的参数。

docker run = create + start

docker restart <container>  //重新启动容器,相当于stop + start

docker run -d --restart=always httpd  //自动重启,或--restart=on-failure:3如果进程退出代码非0,则最多重启3次。stop或kill场景无效。

docker pause <container>  //暂停运行,不占用CPU

docker unpause <container>  //恢复运行

docker rm <container1> <container2> ...  //删除容器(rmi 删除镜像)

docker rm -v ${docker ps -aq -f status=existed}  //批量删除所有已退出的容器

 

httpd通过CMD指定容器启动时默认执行的命令,如:CMD ["httpd-foreground"]

 

限制内存:

-m或--memory限制内存

--memory-swap限制内存+swap,默认是-m的两倍

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

限制CPU:

-c或--cpu-shares设置容器使用CPU的相对权重,默认1024。

如:docker run -c 512 ubuntu

限制Block IO:

--blkio-weight设置容器Block IO的相对权重,默认500。

如:docker run --blkio-weight 600 ubuntu

--device-read-bps限制读某个设备的每秒数据量byte per second

--device-write-bps

--device-read-iops限制读某个设备的每秒IO次数io per second

--device-write-iops

如:docker run --device-write-bps /dev/sda:30MB ubuntu

底层实现:

在Host的/sys/fs/cgroup/cpu|memory|blkio/docker中创建以长ID命名的目录,保存cpu.shares文件。

namespace

Mount /目录

UTS hostname,默认是短ID,可以通过-h或--hostname修改,如:docker run -it -h myhost ubuntu

IPC 共享内存和信号量

PID 进程

Network

User

posted @ 2018-04-13 12:50  AaronCnblogs  阅读(129)  评论(0)    收藏  举报