运行容器 (CMD; ENTRYPOINT; docker run)
进入容器(attach; exec)
停止容器
重启容器
暂停 继续容器
删除容器
导入导出容器
资源限制
习题
docker run ubuntu # 实际效果执行一下就退出了
docker run -d ubuntu # 后台运行并返回控制权
docker run -d --name ubuntu_smith ubuntu# 后台运行容器,docker ps看容器时,容器名字为--name的名字
注意,-d只是后台运行,而不是一直执行,即,如果容器执行一下就返回,那加-d也是执行完了就返回,docker ps查不到,如果容器是守护进程那种,一般情况不会自己退出,不加-d的话,run容器后光标就一直收不回来,这是用-d可以让容器后台执行,控制权会返回来。-P表示端口随机映射
docker run -d ubuntu # 后台docker ps查不到
docker run -d httpd # 后台docker ps可以查到容器
docker run = docker create + docker start
docker attach container_id/container_name
docker exec -it ubuntu bash
区别
attach直接进入启动容器的终端,不开新终端并进入
exec在容器中开个新终端并进入
注意容器可分为两类,服务类和工具类,服务类是守护进程,工具类是执行完了就返回退出
docker stop container_id/container_name
docker restart container_id/container_name
docker run -d --restart=always httpd # 容器异常退出时,自动重启
docker run -d --restart=on-failure:3 httpd # 容器推出代码非0则重启容器,最多三次
docker pause container_id/container_name
docker unpause container_id/container_name
pause的容器不占用cpu等主机资源
stop的容器如果未删除会占用host的文件资源
docker rm container_a_id container_b_id
docker rm -v `docker ps -aq -f status=exit` # -v删除和容器相关的volume
注意参数的位置
设定容器可使用的资源数量
docker run - m 200M --memory-swap=300M ubuntu # 容器最多使用200M内存和100M swap
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1-- vm-bytes 280M
说明 启动一个线程,每个线程分配280M内存 压力测即为重复分配线程并释放,如果内存超过限制容器将会退出
交换内存默认为内存的两倍,如果没设定
-c --cpu-shares 设定的是cpu相对权重,默认1024,权重越大分的资源越多
主要是cgroup和namespace,前者用来设置资源使用额度,后者用来实现资源隔离,原理以后再了解
通过设置cgroup实现。如何查看cgroup?/sys/fs/cgroup
了解cgroup namespace原理
为什么容器pause时不消耗系统资源