Tag: bash

为什么“docker运行”错误“没有这样的文件或目录”?

我正在尝试运行一个运行自动构build的容器。 这是dockerfile: FROM ubuntu:14.04 MAINTAINER pmandayam # update dpkg repositories RUN apt-get update # install wget RUN apt-get install -y wget # get maven 3.2.2 RUN wget –no-verbose -O /tmp/apache-maven-3.2.2.tar.gz http://archive.apache.or g/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz # verify checksum RUN echo "87e5cc81bc4ab9b83986b3e77e6b3095 /tmp/apache-maven-3.2.2.tar.gz" | md5 sum -c # install maven RUN tar xzf /tmp/apache-maven-3.2.2.tar.gz -C /opt/ RUN ln -s […]

在.bashrc中导出DOCKER_HOST对terminal中的相同命令产生不同的结果

在我可以使用我的docker容器(在OSX上使用Boot2Docker)之前,我总是要记得进入 export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 在我的terminal,自然我经常忘记这一点。 所以我想我只是将该行添加到我的~/.bashrc文件,但是当我这样做,并检查DOCKER_HOST的值是tcp://192.168.42.43:4243而不是tcp://192.168.42.43:2375 。 打破它: boot2docker ip =>“虚拟机的主机接口IP地址是:192.168.59.103” boot2docker ip 2 =>“虚拟机的主机接口IP地址是:192.168.59.103” boot2docker ip 2>/dev/null =>“192.168.59.103”(好吧,我得到的,但我不知道如何工作,我不知道:4243是从哪里来的。 这里究竟发生了什么,港口为什么不同呢?

我如何强制取消使用bash命令dockerbuild?

我问的原因是因为我们使用AWS codebuild,我需要做数据库迁移。 如果数据库迁移中断,我想取消代码生成并回滚刚刚创build的迁移。 我有这个部分的工作,现在我需要做的是取消dockerbuild中途。 我怎样才能做到这一点? 这是使用knex迁移命令的.sh文件: #!/bin/bash echo "running" function mytest { "$@" local status=$? if [ $status -ne 0 ]; then knex migrate:rollback echo "Rolling back knex migrate $1" >&2 exit fi return $status } mytest knex migrate:latest 运行exit不会取消/中断docker构build。 我的Dockerfile(只是incase): FROM node:6.2.0 # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install […]

如何知道我的docker mysql容器何时启动,mysql已准备好接受查询?

我正在部署一些不同的docker容器,mysql是第一个。 我想在数据库启动后立即运行脚本并继续构build其他容器。 该脚本一直失败,因为它试图运行时,设置MySQL(从这个官方的MySQL容器 )入口脚本,仍然在运行。 sudo docker run –name mysql -e MYSQL_ROOT_PASSWORD=MY_ROOT_PASS -p 3306:3306 -d mysql [..] wait for mysql to be ready [..] mysql -h 127.0.0.1 -P 3306 -u root –password=MY_ROOT_PASS < MY_SQL_SCRIPT.sql 是否有一种方法来等待docker容器内完成一个入口的mysql安装脚本的信号? 巴什睡眠似乎是一个不理想的解决scheme。 编辑:去这样的bash脚本。 不是最优雅和有点暴力,但作品像一个魅力。 也许有人会觉得有用。 OUTPUT="Can't connect" while [[ $OUTPUT == *"Can't connect"* ]] do OUTPUT=$(mysql -h $APP_IP -P :$APP_PORT -u yyy […]

docker运行-i -t image / bin / bash – 首先创build源文件

这工作: # echo 1 and exit: $ docker run -i -t image /bin/bash -c "echo 1" 1 # exit # echo 1 and return shell in docker container: $ docker run -i -t image /bin/bash -c "echo 1; /bin/bash" 1 root@4c064f2554de:/# 问题 :如何将文件input到shell中? (这不起作用) $ docker run -i -t image /bin/bash -c "source <(curl -Ls […]

自动configurationJava以使用分配给其Docker容器的最大RAM

如果我做docker run –memory=X通过Bash脚本运行Java应用程序,有什么办法让这个Bash脚本可靠地推断有多less内存已分配给容器? 基本上,我想要这个Bash脚本来做这样的事情: #!/bin/bash # (Do some other stuff…) MAX_RAM="$(get-max-ram)" exec java "-Xms${MAX_RAM}" "-Xmx${MAX_RAM}" -jar my_jar.jar 另外,如果我这样做,我应该使Java使用less于最大的RAM?

使docker集装箱能够优雅地停下来永远运转

我正在尝试创build一个docker集装箱。 它应该永远在后台运行。 但是,每当我按Ctrl + C或docker stop ,它应该closures,不浪费任何进一步的时间。 我目前的代码 #RUN trap 'echo $excode' EXIT HUP INT QUIT PIPE TERM ENTRYPOINT while :; do read; done #ENTRYPOINT trap "exit 1" SIGTERM SIGHUP && tail -f /dev/null & wait && exit 0 我可以让它永远运行,但由于某种原因,我的脚本没有收到TRAP事件。 任何线索如何解决这个问题。

如何检查docker实例在Bash中运行

有docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 56489a32cb8c 83132b61eccf "bash" 41 hours ago Exited (0) 41 hours ago naughty_jang 4b4933b40175 83119b65eccf "bash" 41 hours ago Exited (0) 41 hours ago suspicious_mcnulty 3149e612f9f8 83119b6143cf "sh" 43 hours ago Exited (0) 41 hours ago thirsty_mestorf 我想匹配STATUS和NAMES以检查哪个是实例状态,所以列5和列7从列索引1 。 假设我有选项卡分隔值 docker ps -a | awk […]

Dockerfile CMD指令将在运行后立即退出容器

我想在我的容器启动时设置一些configuration,因为我使用的是shell脚本。 但是当我的脚本结束时,我的容器就会退出,我尝试了-d标志/分离模式,但是它永远不会以分离模式运行。 以下是我的Dockerfile FROM ubuntu:14.04 ADD shell.sh /usr/local/bin/shell.sh RUN chmod 777 /usr/local/bin/shell.sh CMD /usr/local/bin/shell.sh 下面是我的shell脚本 #!/bin/bash echo Hello-docker 没有任何标志运行 docker run hello-docker 这将在我的控制台上打印“Hello-docker”并退出 使用-itd标志运行 docker run -itd hello-docker 和下面我的控制台输出,这一次也将很快退出。 🙁 我看到的区别是在命令部分,当我运行其他图像命令部分将显示“/ bin / bash”,并将继续在分离模式。 而当我运行我的图像在shell脚本容器与命令部分将显示“/ bin / sh -c / usr / loca”,并退出。 我想运行容器,直到我没有手动停止它。 编辑: 在Dockerfile中添加ENTRYPOINT指令后,这将不会执行我的shell脚本:( FROM ubuntu:14.04 ADD shell.sh /usr/local/bin/shell.sh RUN chmod 777 /usr/local/bin/shell.sh […]

在bash中从“docker stop”捕获信号

我有一个docker容器中的入口点脚本,如下所示: #!/bin/bash echo starting up function shut_down() { echo shutting down pid=$(ps -e | grep myapp | awk '{print $1}') kill -SIGTERM $pid exit } trap "shut_down" SIGKILL SIGTERM SIGHUP SIGINT EXIT /opt/myapp 我无法弄清楚如何通过在容器上运行docker stop来发送信号。 当以交互方式运行时, ctrl+c将按预期触发,但是docker stop命令仅等待10秒超时,并且不用进入shut_downfunction就退出 如何捕获在bash中的docker stop发出的信号做一些清理?