执行docker exec后Shell提示符显示bash-4.2的问题修复咨询
问题描述
执行以下命令创建MariaDB容器:
docker run -itd --restart always --network host --name test_db -h test_db -v share:/home/share -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged mariadb_10.8 init
初始执行docker exec -it test_db bash时,Shell命令提示符显示root@test_db,但一段时间后变为bash-4.2,同时容器内无ll命令和/root目录,请问该如何修复?
修复步骤
1. 重建/root目录并恢复bash配置
/root目录丢失是问题根源,先手动重建并复制基础配置文件:
docker exec -it test_db mkdir /root docker exec -it test_db cp /etc/skel/.bashrc /root/ docker exec -it test_db cp /etc/skel/.bash_profile /root/
2. 恢复命令提示符
退出当前bash会话后重新进入,提示符会自动读取/root下的配置文件恢复正常:
exit docker exec -it test_db bash
3. 恢复ll命令
ll是ls -l的别名,默认在.bashrc中定义,重新进入bash后即可使用。如果临时需要生效,可手动执行:
alias ll='ls -l --color=auto'
4. 避免问题再次发生
- 不要在容器内随意删除
/root这类系统关键目录 - 检查容器内
init进程是否关联了会删除目录的异常脚本,若不需要init管理容器进程,可替换启动命令为直接启动MariaDB:docker run -itd --restart always --network host --name test_db -h test_db -v share:/home/share -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged mariadb_10.8 mysqld
内容的提问来源于stack exchange,提问作者eos
相关产品推荐
相关产品推荐

