“这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战”
1. docker 配置路径
1.1 存储位置
可以使用 docker system info | grep "Root Dir" 查看当前使用的存储位置。
与 Docker 相关的本地资源默认存放在 /var/lib/docker/ 目录下,以 aufs 文件系统为例,其中:
container目录存放容器信息graph目录存放镜像信息aufs目录下存放具体的镜像层文件
1.2 配置文件
使用 systemd 的系统(如 Ubuntu 16.04、Centos 7/8 等)的配置文件在 /etc/docker/daemon.json
daemon.json是 docker 的详细配置文件,一般不需要修改
2. 开启 Docker 调试模式
在 docker 配置文件 daemon.json 中添加
{
"debug": true
}
重启守护进程
方法1
sudo systemctl daemon-reload
sudo systemctl restart docker
方法2
$ sudo kill -SIGHUP $(pidof dockerd)
根据控制台打印的日志信息,一旦执行成功后,表示开启了 docker 调试模式
3. 镜像调试
在构建镜像时,经常会遇到镜像构建失败的问题。此时只能通过镜像调试的方式查找镜像的构建脚本 Dockefile 哪儿出问题了,例如下图所示:
在执行第三层 Step 3 时,出现了 /bin/sh: /bin/bash: not found 的错误,此时可以通过如下步骤解决该问题:
1、进入之前构建成功的临时镜像
如上图所示进入到前面一个执行成功的指令中获取到的临时镜像 22d31cc52b3e
通过 docker run -it 22d31cc52b3e 创建并启动临时镜像的一个容器
2、手动执行指令
进入临时镜像的容器后,通过输入需要调用的下一个指令,从而找到镜像编译错误的原因。
即手动执行 step 3 步骤中需要执行的执行,从而发现问题并找到解决方案。最终将 step 3 步骤执行成功后,表示修复成功。再修改 Dockerfile 后重新构建镜像
4 容器调试
日志
$ docker logs [容器名]
# 查看 N 行日志
$ docker logs -n 100 [容器名]
attach 实时查看stdout
$ docker attach CONTAINER
默认会绑定 stdin,代理 signals
如果你
ctrl-c容器通常会退出。很多时候大家并不想这样,只是想分离开,可以ctrl-p ctrl-q。