Tag: bash

callback(或相当于)容器瓦特/ Rails应用程序完成启动时?

我有一个docker容器包含一个轨道应用程序。 运行容器启动一个类似如下的脚本: https : //github.com/defunkt/unicorn/blob/master/examples/init.sh ,它执行一些繁忙的工作,然后伸出一个类似于这个unicorn.rb脚本: https : //github.com/defunkt/unicorn/blob/master/examples/unicorn.conf.rb 。 我有一个clojure的networking应用程序,可以告诉这个容器运行。 这样做的请求是非阻塞的,当rails应用程序准备好接收请求时,站点的用户将以某种方式得到通知。 我可以想到各种hacky的方式来做到这一点,但有没有一种惯用的方式让容器让我知道什么时候麒麟铁轨应用程序准备好接收Web请求? 。 我想让它在我的应用程序中触发一些callbackurl,但我打开其他选项。 谢谢!

设置docker集装箱可以打开的最长时间

我正在打开docker容器并运行内联bash脚本。 bash脚本运行python代码,但是我并不总是知道代码是什么。 因为它是任意代码,我想在30秒内启用一个kill开关来closures这个容器。 有没有办法做到这一点,我正在运行的代码: docker run my/image sh -c '$(curl -ss -o python_file.py https://www.example.com); \ python python_file.py' 基本上在运行python文件之前,我想启动一个计时器。 如果该计时器命中30秒,我运行docker工杀死这个特定的容器。 我试过以下,但它不工作。 timeout 30 docker run my/image sh -c '$(curl -ss -o python_file.py https://www.example.com); \ python python_file.py'

在Docker中提交交互式容器

我正在尝试在bash中的docker中的centOS容器中安装vim编辑器。 但是,一旦我退出容器,我就失去了进展。 在我完成下载编辑器之后,有什么方法可以提交容器? 这就是我所做的: user@personal-pc:~/Desktop$ sudo docker run -i -t centos /bin/bash [root@9c0f428c4907 /]# yum install vim 安装完成后,编辑器完美工作。 但是,当我结束这个运行会话并再次运行bash时,编辑器不存在。 [root@d17ae0e8bf85 /]# vim abc.txt bash: vim: command not found 我如何去提交编辑器安装的前一个容器?

如何访问由容器内的监视器进程运行的环境variables

我正在使用monit来启动(和监视)容器内的多个进程。 不幸的是,monit以非常docker run –env …环境运行这些进程,所以任何来自docker run –env …都不会被docker run –env …启动的进程看到。 在其他环境中,我只需确保在进程中input/etc/environment或~/.bash_profile ,以便进行环境设置。 但docker run –env没有任何相当的AFAIK。 除了必须有一个包装周围监视创build监控configuration文件或创build/etc/environment有没有办法来访问这些来自docker的环境variables?

在Windows中的docker执行bash – 键盘箭头键不起作用

我一直使用boot2docker ssh并在那里运行 docker exec -it container bash 它会正常工作。 现在我正在使用新的Windows客户端,而docker exec -it container bash会让我到一个bash提示符,从那里如果我键入,左/右/上/下/首页/结束/上页/下页赢得'工作。 不知道什么窗口是缺less它的configuration不正确的使用这些键。 有什么build议么?

Docker在X时间后杀死一个容器中的无限进程

我正在使用在这个docker问题find的代码基本上启动一个容器在20秒内运行一个进程,如果进程完成 / 没有完成 / 无法执行 / 超时容器被杀死无论。 我目前使用的代码是这样的: #!/bin/bash set -e to=$1 shift cont=$(docker run -d "$@") code=$(timeout "$to" docker wait "$cont" || true) docker kill $cont &> /dev/null echo -n 'status: ' if [ -z "$code" ]; then echo timeout else echo exited: $code fi echo output: # pipe to sed simply for pretty […]

为什么parse_git_branch只在Dockerterminal窗口中失败

为什么要在Docker快速入门terminal报告下运行一个bashterminal bash: parse_git_branch: command not found 在我input每个bash命令之后,而如果我直接运行terminal,它工作正常吗? 在我的〜/ .bash_profile的Mac(OS 10.9.5)中,我定义了一个函数来显示我的提示符中的git分支,当我运行terminal,而无需通过Docker快速入门terminal运行terminal时,它工作正常。 在这两种情况下(正常运行terminal,或通过Docker快速入门terminal) echo $BASH_VERSION显示相同的结果(3.2.53(1) – 释放)。 在这两种情况下,如果我cat ~/.bash_profile我看到相同的东西,并在底部函数是明确的定义: parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

无法通过bash脚本创buildpostgres扩展

在Docker容器中启动了一个postgres数据库,然后想用以下脚本安装扩展: su postgres sh -c "psql -U postgres <<EOSQL CREATE EXTENSION hstore; CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION fuzzystrmatch; EOSQL" trap "echo \"Sending SIGTERM to postgres\"; killall -s SIGTERM postgres" SIGTERM su postgres sh -c "$POSTGRES -D $DATADIR -c config_file=$CONF" & wait $! 但它什么都不做,在扩展列表中只安装了一个默认的plpgsql。 但如果我input容器 docker exec -it osm-database bash 并按顺序在cli中运行以下命令 su postgres […]

Bashvariables在第三个远程服务器中

我需要input一个variables到第三个linux系统,这里是scheme: 从我的笔记本电脑>docker服务器>一个容器, #!/bin/bash domain=$1 ssh -i $SSH_KEY docker@10.10.10.10 "docker run –rm=true 931967fb3e32 /bin/bash -c curl -Is $domain 当然,variables只能到达docker服务器,而不能到达容器。

Docker:获取/打印正在运行的容器的ID

目标是从容器内的主机运行脚本setup-debian-server.sh ,并在没有错误的情况下提交图像。 这个东西将脚本行作为参数提供给bash ,并附加到hostname以打印容器的ID。 它将parameter passing给脚本: –script-par1=abc script –script-par1=abc 。 ( did="$( docker run ubuntu:15.04 /bin/bash -c "$(<./setup-debian-server.sh); echo; hostname;" — –script-par1=abc | tail -n1; exit ${PIPESTATUS[0]} )" && docker commit "$did" my/base ) 问题是, setup-debian-server.sh标准输出丢失。 而且总体上是丑陋的。 我玩过一些exec {FD}>&1命令,但不能可靠地刷新stdout(我总是希望输出3行,但有时候是2): (exec {FD}>&1 && /bin/bash -c "hostname; echo 123;" | tee /dev/fd/$FD | head -n1) 如何做这个简单的任务?