Tag: bash

不是所有的grep输出行都返回

我正在编写一个shell脚本来与我们的本地Docker仓库进行交互,并发现从我的bash脚本中得到的结果不尽人意。 首先从命令行使用: des@dev: docker images | grep gateway 我得到: test-gateway 4.27.0-1.5.2-301 b215d109c627 8 days ago 1.977 GB test-gateway dev b215d109c627 8 days ago 1.977 GB test-gateway staging b215d109c627 8 days ago 1.977 GB test-gateway 4.26.2-1.5.2-298 7376dd26db6e 2 weeks ago 2.117 GB test-gateway 4.26.2-1.5.2-297 c84e6de5a18e 2 weeks ago 2.117 GB test-gateway 4.26.0-1.5.2-296 e6a772c0e230 2 weeks ago […]

如何在已停止/未启动泊坞窗容器中编辑文件

试图修复错误和debugging我的应用程序分割在几个容器的问题,我经常编辑容器中的文件: 要么我是完全懒惰,并安装纳米和直接在容器或编辑 我docker cp文件的容器,编辑它,将其复制并重新启动容器 这些是在为容器构build新内容之前的中间步骤,这要比上面做的要长得多(当然这只是中间/摆弄)。 现在我经常打破容器的起始程序,在破坏的情况下,它是一个节点脚本或一个python web服务器脚本,通常都会因语法错误而失败。 有什么方法可以保存这些容器吗? 既然他们没有开始,我就不能把执行官塞进他们,所以他们就会迷失在我的脑海里。 然后在构buildinput中修复有问题的文件之后,再转到rm / rmi / build / runpath。 我怎样才能编辑一个停止的容器中的文件,或者在一个已停止的容器中启动一个shell,或者让它修复这个容器的任何东西? (这看起来有点像在远程计算机上工作,打破了networkingconfiguration – 这种方式连接永远丢失,如果存在,就必须使用后备)。 如何从主机编辑Docker容器文件? 看起来相关但已过时。

错误:Docker容器中的Postgres数据库导入

我在Docker容器中运行一个ruby应用程序。 我想创build,然后在postgres容器中恢复数据库转储。 但是我 以下是我迄今为止所做的: 1)在/docker-entrypoint-initdb.d文件夹中添加了bash脚本。 脚本只是创build数据库: psql -U docker -d postgres -c 'create database dbname;' 结果:数据库创build,但轨道服务器退出代码0.错误: web_1 exited with code 0 2)添加了在docker-compose up之前执行的脚本。 # Run docker db container echo "Running db container" docker-compose run -d db # Sleep for 10 sec so that container have time to run echo "Sleep for 10 sec" sleep 10 […]

如何在Docker容器中执行命令作为bash shell脚本的一部分

我想写一个bash脚本来自动执行以下操作: 进入正在运行的容器 docker exec -it CONTAINER_NAME /bin/bash 执行一些命令: cat /dev/null > /usr/local/tomcat/logs/app.log exit 有问题的部分是当docker exec被执行时。 新的shell被创build,但其他命令不被执行。 有没有办法解决它?

运行SQL时,Bash中的“ – EOSQL”代码块是什么?

我需要执行一个包含SQL的bash脚本,所以我使用一个脚本来将自定义configuration添加到Postgres Docker容器中,根据这里的文档: https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image 但是我不知道EOSQL是什么意思。 以下是我从上面的文档中获取的脚本示例: #!/bin/bash set -e psql -v ON_ERROR_STOP=1 –username "$POSTGRES_USER" <<-EOSQL CREATE USER docker; CREATE DATABASE docker; GRANT ALL PRIVILEGES ON DATABASE docker TO docker; CREATE EXTENSION $MY_EXTENSION; EOSQL 那么,EOSQL是什么? 我似乎无法find关于这个命令或关键字的很多信息。

docker工人:Cronjob不工作

我正在尝试在Docker容器上运行cron作业。 我有一个正在运行的容器(Fedora 20)。 我还在容器中安装了cron包,并明确运行cron守护进程。 我也检查了cron.deny文件是空的,在/ etc /目录下没有名为cron.allow的文件。 Whenever I tried to set the cronjob by using crontab -e or trying to list the cron job using crontab -l I am getting following error. bash-4.2# crontab -l You (root) are not allowed to access to (crontab) because of pam configuration. bash-4.2# crontab -e You (root) are […]

返回从subprocess调用的bash脚本的代码

我正在写一个脚本,将一堆数据导入到一个couchdb数据库,问题是每个db需要大约15分钟,所以我不看整个事情,因为我有平均20分贝导入。 脚本通过一系列项目循环,然后调用每个subprocess,以便在进入下一个之前运行导入。 我试图做的是通过失败的脚本捕获任何不正确加载的数据库。 我试图抓住这个时,返回码不是0,问题是我只能得到调用docker命令的subprocess的返回码,而不是如果脚本正确执行。 #!/usr/bin/python import sys import subprocess cities = ["x","y", "z"]; uncompletedcities = [] for x in cities: dockerscript = "docker exec -it docker_1 ./node_modules/.bin/babel-node –debug –presets es2015 app/exportToCouch %s %s" % (x,x) p = subprocess.Popen(dockerscript, shell=True, stderr=subprocess.PIPE) error = p.communicate() if p.returncode != 0: uncompletedcities.append(x) while p.poll() == None: print p.stderr.read() print […]

如何订购Docker容器的Kafka启动shell脚本?

我正在尝试装入一个Kafka服务器。 Kafka服务器的正常启动顺序如下所示: A: start Zookeeper server B: start Broker server C: create topic 项目A和B是长时间运行的过程。 而C需要等待B来运行。 所以我写了一个Dockerfile, ENTRYPOINT为上面的序列执行一个shell脚本: #!/bin/sh $KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties & $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties & $KAFKA_HOME/bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test_topic 不过,在运行由此构build的docker镜像时,我遇到了三个问题: Docker需要ENTRYPOINT进程长时间运行,而上面的脚本不需要。 (只要话题创作完成就退出) 代理服务器语句(第二个)是长时间运行的过程。 目前我不得不把它作为后台进程使用结束& ,因为否则后面的语句根本不执行。 (但是使它背景也有问题:主题创build立即执行,而代理服务器还没有准备好。) 我无法将代理服务器语句作为最后一个长时间运行的过程,因为主题创build语句必须在创build服务器之后。 什么可能是安排这个启动序列的一个好方法?

如果docker容器不存在,则执行bash命令

在Jenkins机器上,我只想创build一个具有指定名称的docker容器,只要它不存在(在shell脚本中)。 我想我可能会运行命令来创build容器,无论如何忽略失败,但是这会导致我的jenkins作业失败。 因此,我想知道如何检查泊坞窗容器是否存在或不使用bash。

如何知道泊坞窗容器是否在特权模式下运行

想通过bash脚本知道,如果当前正在运行的容器是从容器内(而不是主机)以 – –privileged模式启动的。 现在我坚持与国旗传递一个env var,但不是一个理想的解决scheme。