容器
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

浙公网安备 33010602011771号