Docker - 'container is not running' 尽管我刚刚初始化了它
Docker - 'container is not running' even though i just initialized it
我在工作中使用 Hyperledger Fabric,我正在尝试了解网络和 docker,我正在学习 this 教程。我到达了需要使用 docker exec -it cli bash
进入 CLI 容器的步骤,但是当我输入该容器时,出现以下错误:
Error response from daemon: Container ddc2288c83a89c478f9b31b7a3273994ec4767d63e58208c8e4b145ae44b0579 is not running
即使在我使用 docker-compose -f docker-compose-cli.yaml up -d
启动网络后,我也得到了这个,甚至输入 docker start cli
进行了很好的衡量,这正是教程告诉我要做的。
我可以确认它会立即退出,因为当我在我的终端中输入 docker ps -a
时,它会显示所有进程,但由于某种原因,cli 会立即退出:
这是什么原因造成的?我能做些什么来修复它?教程说,如果 CLI 退出,你只需输入 docker start cli
再次初始化它,但它不起作用。
解决方案 1 -
当您使用以下命令启动网络时,CLI 容器默认会停留 1000 秒。
docker-compose -f docker-compose-cli.yaml up -d
所以在 运行 这个命令之前你必须设置 TIMEOUT 变量。要设置超时,请在启动网络之前执行以下命令。
export TIMEOUT=<no of seconds your CLI should stay up>
通过这种方式,只要您需要执行更多命令,您就可以确保您的 cli 保持运行。
此外,如果您的 CLI 不是 运行,则只需执行此命令即可启动 CLI。
docker start cli
解-2
在 运行 docker-compose -f docker-compose-cli.yaml up -d
命令之前打开 docker-compose-cli.yaml` 文件。
然后像这样注释掉下面一行 -
#command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT'
希望对您有所帮助。
我在工作中使用 Hyperledger Fabric,我正在尝试了解网络和 docker,我正在学习 this 教程。我到达了需要使用 docker exec -it cli bash
进入 CLI 容器的步骤,但是当我输入该容器时,出现以下错误:
Error response from daemon: Container ddc2288c83a89c478f9b31b7a3273994ec4767d63e58208c8e4b145ae44b0579 is not running
即使在我使用 docker-compose -f docker-compose-cli.yaml up -d
启动网络后,我也得到了这个,甚至输入 docker start cli
进行了很好的衡量,这正是教程告诉我要做的。
我可以确认它会立即退出,因为当我在我的终端中输入 docker ps -a
时,它会显示所有进程,但由于某种原因,cli 会立即退出:
这是什么原因造成的?我能做些什么来修复它?教程说,如果 CLI 退出,你只需输入 docker start cli
再次初始化它,但它不起作用。
解决方案 1 -
当您使用以下命令启动网络时,CLI 容器默认会停留 1000 秒。
docker-compose -f docker-compose-cli.yaml up -d
所以在 运行 这个命令之前你必须设置 TIMEOUT 变量。要设置超时,请在启动网络之前执行以下命令。
export TIMEOUT=<no of seconds your CLI should stay up>
通过这种方式,只要您需要执行更多命令,您就可以确保您的 cli 保持运行。
此外,如果您的 CLI 不是 运行,则只需执行此命令即可启动 CLI。
docker start cli
解-2
在 运行 docker-compose -f docker-compose-cli.yaml up -d
命令之前打开 docker-compose-cli.yaml` 文件。
然后像这样注释掉下面一行 -
#command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT'
希望对您有所帮助。