Tag: bash

欺骗循环/ autorefreshdockerps视图像顶部/ htop bash中

是否有可能 – 如果是的话,如何 – 由“docker ps”打印的当前Docker容器的自清新视图与top / htop实用程序一样?

Dockerfile:如何用build-arg的replace环境variables中的占位符?

我有一个Web应用程序,我想运行在Docker上进行testing。 应用程序使用数据库作为存储,数据库的configuration保存在环境variables(JSON)中。 下面你可以看到我的Dockerfile中的envvariables定义(另请参见我的方法) ENV CONFIG '{ \ "credentials":{ \ "hostname": "172.17.0.5", \ "password": "PWD", \ "port": "1234", \ "username": "${USER}" \ }, \ "name":"database", \ "tags":[] \ }, \ … 如果我硬编码数据库的所有参数一切正常,但我不想只改变我的Dockerfile,因为数据库的IP地址已经改变。 因此我想使用Docker构build参数。 我已经尝试了两种方法: 直接引用variables(见“$ {USER}”一行) 使用以下命令replace“PWD”的占位符RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g') 第一种方法不会导致replace,因此$ {USER}是$ {USER}。 第二种方法似乎工作(至less在terminal),但似乎variables分配不起作用。 你有什么想法我可以做这个工作? 随意build议其他方法。 我只是不想在我的Dockerfile中有硬编码参数。 谢谢!

如何检查我的本地泊坞窗图像是否过时,而不从其他地方推送?

我正在Coreos服务器上的docker容器中运行一个反应应用程序。 假设它是从https://hub.docker.com/r/myimages/myapp dockerhub中提取的。 现在我想定期检查应用程序容器的dockerhub图像是否已经更新,看看我在本地运行的图像是否在后面。 与远程图像相比,检查本地泊坞窗图像是否过时最有效的方法是什么? 到目前为止,我发现的所有解决scheme都是bash脚本或推送更新的外部服务。 我想find一个尽可能原生docker解决scheme,并希望避免从其他地方推送通知(以提醒服务器更新的图像)。

在Mac容器的Docker中缺less回车

突然之间,我的所有docker/docker-compose exec/run命令都是打印日志,由于缩进(见照片),缺less回车制作命令行。 我重新安装docker到出厂设置,但是这并没有解决任何问题。 我应该在哪里解决这类问题? 更新这是在docker-for-mac中的一个活跃的问题。 我刚刚更新到17.06.0-rc1-ce-mac13,那是当我开始有问题。 另外,如果您投票结束,您可以发表评论吗?

docker执行官Heredoc

我基本上试图通过Flask-migrate的Flask应用上下文来执行heredoc 下面是我试图在我的bash脚本中运行的命令 $ docker exec -it mycontainer ./manage shell <<-EOF # shell commands to be executed EOF 当试图执行上面的命令时,我得到: cannot enable tty mode on non tty input 这是pipe理文件: #!/usr/bin/env python from middleware import create_app, config from middleware.models import db from flask.ext.script import Manager from flask.ext.migrate import Migrate, MigrateCommand app = create_app(config) migrate = Migrate(app, db) manager […]

Docker从Dockernetworking中断开所有容器

我有dockernetworking“my_network”。 我想用docker network rm my_network删除这个docker network rm my_network 。 在此之前,我应该断开所有我的容器从这个networking。 我可以使用docker network inspect并获取输出 [ { "Name": "my_network", "Id": "aaaaaa", "Scope": "some_value", "Driver": "another_value", "EnableIPv6": bool_value, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "10.0.0.0/1" } ] }, "Internal": false, "Containers": { "bbb": { "Name": "my_container_1", "EndpointID": "ENDPOITID1", "MacAddress": "MacAddress1", "IPv4Address": "0.0.0.0/1", "IPv6Address": "" […]

为什么“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 […]