Tag: bash

如何将一个环境variables转换成一个dockerfile

我怎样才能将一个环境variables转移到dockerfile中? 该variables是dynamic的,所以我不能使用ENV来做到这一点。 像$( dirname "${BASH_SOURCE[0]}" )是告诉bash脚本的位置的方法。 Dockerfile如何知道它所在的path?

我如何设置从Nagios监控Docker容器

我试图build立从nagios监控docker容器。我的nagios在一个虚拟机,我的docker在另一个虚拟机。 所以要监视泊坞窗我想使用下面的shell脚本 : #!/bin/bash # Author: Erik Kristensen # Email: erik@erikkristensen.com # License: MIT # Nagios Usage: check_nrpe!check_docker_container!_container_id_ # Usage: ./check_docker_container.sh _container_id_ # # The script checks if a container is running. # OK – running # WARNING – container is ghosted # CRITICAL – container is stopped # UNKNOWN – does not exist CONTAINER=$1 […]

docker工自动提交和推送

我正在尝试在Docker中设置一个GUI应用程序,以在具有完全相同configuration的不同计算机上使用它。 容器正在工作,但我总是必须手动提交和推送更改。 有没有一种方法可以在容器停止后(通过closures应用程序)自动提交并推送泊坞窗容器的更改。 感谢您的帮助,Flo

runit收获孤立进程吗?

我正在写一个基于Phusion baseimage的小型Docker容器,它提供了开箱即用的runit。 我把Cassandra和Opscenter的代理放在我的容器里。 两者都是以/ etc / service下的服务启动(如doc)。 这个博客文章提到my_init会收集僵尸进程,但是它对孤立进程做了些什么。 这里是我的Docker容器中ps -ef输出示例: UID PID PPID C STIME TTY TIME CMD root 1 0 0 06:05 ? 00:00:00 /usr/bin/python3 -u /sbin/my_init root 27 1 0 06:05 ? 00:00:00 /usr/bin/runsvdir -P /etc/service root 28 27 0 06:05 ? 00:00:00 runsv sshd root 29 27 0 06:05 ? 00:00:00 runsv […]

Bash脚本等待依赖命令进程

我是相当新的bash脚本。 我需要使用bash脚本来pipe理我的微服务,所以这些服务需要构build和部署(在docker上)。 所以我有这样的命令: #!/bin/bash mvn clean wait $! mvn package wait $! #Some if elses here sudo docker build -t myService . & wait $! #Some if elses here sudo -S docker run -d -name myService myService & 所以,正如你所看到的(脚本的一小部分,我将函数中的依赖命令分组),命令需要等待以前依赖的命令。 但wait $! 命令在所有的命令后都不好看。 有没有办法解决这种情况?(我打开其他方法,而不是bash脚本,如果它是方便的解决scheme。Btw服务是节点和Java服务分离,所以我需要用一个bash脚本启动它们。

docker中的TCP,UDP和HTTP服务器在启动容器后立即停止?

我将在Java Docker容器中托pipe由Java开发的TCP,UDP和HTTP服务器。 我在dockerfile所有的东西都是服务器应用程序的副本命令和用来运行服务器的bash文件。 但是, 服务器在运行容器几秒钟后就停止了? 我使用以下命令来运行容器: docker run -d -p 8000:8000 -p 2701:2701 –name app_test_con_1 app_test_img_1 这是dockerfile的bootstrap命令: CMD ["/workspace/one_click.sh"] 有没有办法让服务器永远运行? 既然这样做,如果我在主机操作系统中运行相同的.sh文件, 当然只要terminal没有closures。

在bash中防止请求太快

我必须在bash脚本中启用,停止并重新启动docker。 问题是这个命令是用ssh-connection来执行的。 所以执行该命令后,ssh-connectionclosures。 所以没有足够的时间来启动和停止docker。 我得到这个错误: docker.service启动请求重复得太快了 我怎样才能防止这个? 是否有可能在同一个命令中执行sleep ${SSHKEY}$i sudo systemctl start docker ${SSHKEY}$i sleep 4 以上不起作用,因为连接closures。 我试过了: ${SSHKEY}$i sudo systemctl start docker; sleep 1 但似乎没有工作,因为第一个命令后立即closures连接。

在另一个env中parsingenv

所以我想打印我的envvariables,其中包含其他variables。 例如,我有: MY_VARS="My var are:\nVAR1 = ${MY_VAR1}\nVAR2 = ${MY_VAR2}" MY_VAR1=var1 MY_VAR2=var2 我想以这样的方式使它成为可能: printf "${MY_VARS}" > my.conf 要么 printf "$(echo ${MY_VARS})" > my.conf 像在my.conf文件中那样: My var are: VAR1 = var1 VAR2 = var2 但它的工作。 是否有可能做这样的事情? 我需要它与Kubernetes,所以我可以在我的ReplicationController设置环境,并使用它与像SERVICE_HOST和SERVICE_PORT Kubernetes ENV还有另一个问题,Kubernetes正在改变我的MY_VARSvariables为多行内容器,所以它看起来像: MY_VARS=My var are: VAR1 = ${MY_VAR1} VAR2 = ${MY_VAR2} 希望这很清楚:) 我的解决scheme while read -r line do printf "$line\n" […]

docker与查找抨击

我有一段时间试图让一个bash脚本按照预期工作(就像在正常的bash会话中一样)在Docker上运行。 目标是用JAVA_HOME目录中的实际文件replace官方java容器中的所有符号链接文件,所以一切都包含在java目录中,而不是在它之外,例如 $JAVA_HOME/jre/lib/security/java.policy <—被/etc/java-7-openjdk/security/java.policy链接到—> /etc/java-7-openjdk/security/java.policy 最终结果应该是位于$JAVA_HOME/jre/lib/security/java.policy 设置: docker run java:7u91 /bin/bash -cxe "find /usr/lib/jvm/**/jre -type l | while read f; do echo $f; cp –remove-destination $(readlink $f) $f; done;" 我试图用几种不同的方法来实现这个效果,xargs和exec都无济于事。 任何build议在这一点上,将不胜感激。

脚本Docker,运行脚本后未连接?

所以我有一个如下所示的脚本: #!/bin/bash if [ $1 ]; then docker-machine start $1 docker-machine env $1 eval $(docker-machine env $1) docker ps -a fi 一旦运行,这些命令的范围似乎已经结束。 例如,一旦脚本运行,我就没有连接到docker-machine,但是我想将这部分脚本编写出来,以便我可以访问它。 例如,运行这个脚本(“./script.sh”)后,我仍然不能运行“docker ps -a”。 发生这种情况的原因是什么?在执行这个脚本之后,怎样才能有效地连接它?