试验机192.168.181.144
用户root 密码123456
主机名
[email protected]:/# hostname
web
docker container run -d --name web2 -P nginx #-P :发布容器中声明EXPOSE端口到宿主机的随机端口;
#docker ps -l #列出最新创建的容器;
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
803a6db849ab nginx "nginx -g ‘daemon of…" 16 seconds ago Up 9 seconds 0.0.0.0:32768->80/tcp web2
http://192.168.181.144:32768/
docker image prune 移除不使用的镜像;
Export 导出容器文件系统 -----------针对容器导出导入,不会保存层级信息,快照。
import导入容器文件
Save 保存导出完整镜像;docker image save nginx > nginx.tar ------针对镜像持久化,可以保存层级信息以及历史数据,俗称元数据。
Load 导入镜像 docker image load < nginx.tar
Docker stats web 动态查看运行内存状态
Docker stats --no-stream web 静态查看
容器内存默认运用到物理所有内存,所以为了安全 要做内存限制
默认swap是设置内存到两倍
docker cp apache-maven-3.5.3-bin.tar.gz web04:/
docker exec -it web04 ls /
docker top 2167fe9f46da 查看容器进程
容器日志输出到控制台的日志才能用docker logs 看到
docker run -d --name web3 --restart always -P nginx :运行容器 参数--restart always 当 Docker 重启时,容器能自动启动
参数 on-failure 容器退出docker会启动他直到超过设置启动的次数;
容器资源限制参数
Cpu限额
docker run -d --name nginx03 --memory="500m" –memory-swap="600m" --oom-kill-disable nginx
默认情况下,在出现 out-of-memory(OOM) 错误时,系统会杀死容器内的进程来获取更多空闲内存。这个杀死进程来节省内存的进程,我们姑且叫它 OOM killer。我们可以通过设置–oom-kill-disable选项来禁止 OOM killer 杀死容器内进程。但请确保只有在使用了-m/–memory选项时才使用–oom-kill-disable禁用 OOM killer。如果没有设置-m选项,却禁用了 OOM-killer,可能会造成出现 out-of-memory 错误时,系统通过杀死宿主机进程或获取更改内存。
#启用docker容器限制内存500m,swap 600m 禁止oom;
docker stats --no-stream nginx03
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e7042e0bf2e2 nginx03 0.00% 3.648MiB / 600MiB 0.61% 648B / 0B 8.55MB / 0B 0
#运行查看容器状态;
docker run -d --name web05 --cpus="0.5" nginx #容器运行50%cpu;
禁用 –oom-kill-disable 禁用OOM Killer 启用,物理内存不够了 就自动关闭内存耗费最大的应用;
Docke 容器状态监控
$ docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
NAME CPU % MEM USAGE / LIMIT
web03 0.00% 1.352MiB / 977.9MiB
nginx02 0.00% 2.848MiB / 600MiB
web2 0.00% 1.363MiB / 977.9MiB
容器重新生成镜像
【容器数据持久化】
docker exec -it web05 bash #进入容器修改文件;
#docker commit web05 nginx:v1 #提交并且打标记变成镜像;
docker images #查看最新的镜像;
#进入容器查看
docker run --d --name web05-1 ngixn:v1
#docker exec -it web05-1 bash
复制本地文件到容器
docker cp 1.txt web05:/
docker exec -it web05 bash 或者用docker exec -it web05 ls查看
查看端口映射
docker port 803a6db849ab
80/tcp -> 0.0.0.0:32768
容器映射宿主机
查看容器中进程
docker top 803a6db849ab
在线修改容器cpus限制 ,仅限cpu和内存,即时生效
docker update --cpus "1.5"
原文地址:https://blog.51cto.com/2367685/2476389