根据进程特征找到宿主机中对应的进程
docker容器
1 | # ps -ef | grep 7687 |
宿主机
1 | # ps -ef | grep '20:57 ? 00:00:00 /home/okp/.pyenv/versions/3.6.5/envs/xxx/bin/python3.6 /home/okp/.pyenv/versions/xxx/bin/celery -A celery_worker.celery worker -c 3 --loglevel=inf[o]' |
在宿主机安装gdb
1 | yum install gdb |
查询容器的UpperDir
1 | sudo docker inspect <container-id> | grep diff |
例如:
/var/lib/docker/overlay2/e12dcd0006e71a104a4d38bb8bedbcd7752fb8d0eae78280ff0fee655f6e6bdc/diff
拼接pythonpath
pythonpath = <UpperDir> - ‘/diff’ + <容器内pythonpath> (容器内pythonpath可以在第一步的进程信息中获得)
例如:
/var/lib/docker/overlay2/e12dcd0006e71a104a4d38bb8bedbcd7752fb8d0eae78280ff0fee655f6e6bdc/merged/home/okp/.pyenv/versions/3.6.5/envs/okp-ins-demo/bin/python3.6
使用gdb
输入gdb命令进入交互式命令行
1 | set auto-load safe-path / |