Docker run / star / exec?

时间:2015-05-17 22:33:14

标签: bash docker

您好我已经在ubuntu映像上构建并安装了ziftrCoin钱包。

8084e9de3c23 ubuntu:latest "/bin/bash" 25 hours ago Up About a minute 0.0.0.0:10332->10332/tcp ziftrCoin  

问题是我退出容器后ziftrcoind关闭。 尝试运行docker exec -it ziftrCoin /root/64/./ziftrcoind程序启动,但我连接到容器。如果我退出也会遇到同样的问题。

那么当我使用"ziftrCoin /root/64/./ziftrcoind"而非"/bin/bash"启动容器时,如何更新/编辑COMMAND?

更新

如果我构建它运行它我不会让它保持开放..

docker run -d ziftr
252554f38c2a41bdd29875bcb6ab7b6bbe98522e16828b1f8b06d8899bc5134c

docker run -it ziftr
ZiftrCOIN server starting

FROM ubuntu
MAINTAINER Krister Johansson <hello@nodejs.how>
WORKDIR /var/ziftrCoin
RUN apt-get update
RUN apt-get install -y wget
RUN wget "https://d19y4lldx7po3t.cloudfront.net/assets/downloads/0.9.3/ziftrcoin-0.9.3-linux64.tar.gz"
RUN tar -xvzf ziftrcoin-0.9.3-linux64.tar.gz
RUN rm ziftrcoin-0.9.3-linux64.tar.gz

ADD ./src/ziftrcoin.conf /root/.ziftrcoin/ziftrcoin.conf

EXPOSE 10332 11332
CMD ["64/./ziftrcoind"]

2 个答案:

答案 0 :(得分:2)

对于Docker,当具有pid 1(在容器内)的进程退出时,它也将退出(并终止在该容器中运行的所有其他已处理的进程)。这就是您所遇到的问题,因为/bin/bash是带有pid的流程1.您需要做的是将ziftrcoind流程设置为 pid 1

您没有提供Dockerfiledocker run命令,但我假设您运行docker run ziftrcoin(其中ziftrcoin将是您构建的图像的名称)并且您不会在CMD中有Dockerfile

想法是使用CMD中的Dockerfile为docker提供默认命令,或者在发出docker run时给它命令运行。

让我们看看Dockerfile的外观:

FROM Ubuntu
RUN # … Install ziftrcoind
CMD ["/root/64/./ziftrcoind"]

如果您构建此图片,则在运行时,默认命令为/root/64/./ziftrcoind而不是/bin/bash。您也可以docker run ziftrcoint /root/64/./ziftrcoind来实现相同的效果

正如Kevan Ahlquist评论的那样,如果你想在后台运行它,你可以使用标志-ddocker run -d ziftrcoin(有或没有命令,具体取决于你有CMDDockerfile或不在你的身上。

答案 1 :(得分:2)

发现问题!

我把ziftrcoin.conf中的deamon = 1删除它后工作了!

将它上传到git。 https://github.com/nodejshow/docker-ziftrcoind