背景:
docker run容器后,可以构建一个新的容器,但是docker exec -it bash去进入容器内部时,会报错:Error response from daemon: Container bb4e7352411d8412ed2d0428c5f6980197ecce75c657f43e74a5592e017d5ab9 is restarting, wait until the container is running。
#脚本docker_run.sh中的内容:
docker run --network host \ # 网桥,本地ip模式
--name feed_channel_classify \ # container的名字,如果不写,则随机生成一个
--restart=always \ # 是否重启
-d feed_channel_classify:v1 \ # -d表示后台运行,后跟镜像的名字以及tag
bash run.sh # 启动容器后,执行的命令
# 脚本run.sh中的内容:
gunicorn -c gunicorn.py run:app
# 脚本gunicorn.py的内容:
workers = 3
threads = 3
timeout = 100
bind = '0.0.0.0:5000' 容器绑定的端口,可以通过这个端口来访问容器内搭建起来的服务
(bert) [dev@dev1 cls]$ bash docker_run.sh
bb4e7352411d8412ed2d0428c5f6980197ecce75c657f43e74a5592e017d5ab9
(bert) [dev@dev1 cls]$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb4e7352411d feed_channel_classify:v1 "bash run.sh" 22 seconds ago Up 3 seconds feed_channel_classify
(bert) [dev@dev1 cls]$ docker exec -it bb4e7352411d bash
Error response from daemon: Container bb4e7352411d8412ed2d0428c5f6980197ecc is restarting, wait until the container is running
(bert) [dev@dev1 cls]$
原因:
由于本地5000端口之前已经在使用,没有关闭。
解决:
方法1:更换端口
更换端口,不要使用5000。我这里将gunicorn -c gunicorn.py run:app中的gunicorn.py文件中的端口绑定,从5000,改为来了5990,此时容器可以访问。
# 脚本gunicorn.py的内容:
workers = 3
threads = 3
timeout = 100
bind = '0.0.0.0:5990'
方法2:
docker start [container ID],这个方法我没有尝试成功,目前没定位到是哪里问题,回头再研究研究。