先启动docker容器
### 启动docker容器
docker run -d -p 8080:80 --name mynginx nginx
# -d:后台运行容器。
# -p:指定端口映射,格式为主机端口:容器端口。
# --name:指定容器名
# nginx:指定使用的镜像
docker run -it --name myjdk-02 -d lt1726/jre1.8.1 /bin/bash
Docker 问题排查和监控
##
docker ps -a
docker ps -a pid
### 获取容器的元数据
docker inspect
##
docker stats –no-stream
### 显示容器使用的系统资源,默认情况下,stats 命令会每隔1秒钟刷新一次输出的内容直到你按下ctrl + C
docker stats
### 宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定
docker run -it -v /test:/soft centos /bin/bash
修改容器内的配置文件
比如修改 My.cnf 文件:
(1)docker inspect containerId
(或者容器名称)指令,在获取到容器的元数据中找到对应数据
这个路径就是容器对应的文件数据,在里面找到对应的配置文件,mysql对应的文件地址在:/var/lib/docker/overlay2/6242a97b8d232d98efd90e1d4981925e9f1d509a0098dd869396bcd33a67889f/diff/etc/mysql/my.cnf
,修改对应的参数,然后再次重新启动
(2)将容器中的文件复制到本地,修改完以后再复制到容器中
使用docker cp mysql-1 containerId(或者容器名称) :/etc/mysql/my.cnf
(要复制文件在容器中的位置) /opt(本机位置)
将对应文件复制出来,修改完以后再用docker cp /opt(本机位置) containerId(或者容器名称) :/etc/mysql/my.cnf
(要复制文件在容器中的位置)将文件复制回
查看docker的资源版本
docker search jenkins
url: https://hub.docker.com/
导入和导出
## 导出
docker save -o nginx.tar nginx:latest
##
docker save <myimage>:<tag> | gzip > <myimage>_<tag>.tar.gz
# 导入
docker load -i x.tar
日志查看
### 查看最近多少行的数据
docker logs -f --tail=30 915a241f09f5
监控相关
## 查看容器的资源使用率
docker stats CONTAINER_ID
## 限制cpu和内存资源
docker run --cpus=1 -m=2g --name=nginx -d nginx
## 查看磁盘使用大小
docker system df
### 查看每个 image、container 详细大小
docker system df -v
## 查看dir路径
docker info|grep -i dir
监控原理
无论何种监控方案的实现,底层数据都来源于 Cgroups,Cgroups 的工作目录为/sys/fs/cgroup,/sys/fs/cgroup目录下包含了 Cgroups 的所有内容。Cgroups包含很多子系统,可以用来对不同的资源进行限制。例如对CPU、内存、PID、磁盘 IO等资源进行限制和监控。
ls /sys/fs/cgroup/
blkio cpuacct cpuset freezer memory net_cls,net_prio perf_event rdma unified
cpu cpu,cpuacct devices hugetlb net_cls net_prio pids systemd
修改dir路径
# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -g /data/docker -H fd:// --containerd=/run/containerd/containerd.sock
###
# 然后把/var/lib/docker下的文件拷贝到新路径去.
## 重启
systemctl daemon-reload
systemctl restart docker
删除历史镜像
## 删除多余的不再使用的镜像
docker image prune -a