Tag: bash

“/ bin / sh:1:[”apache2ctl“,在docker中找不到

我有一个简单的Dockerfile FROM ubuntu RUN apt-get update RUN apt-get install -y apache2 RUN apt-get install -y apache2-utils RUN apt-get clean RUN apt-get upgrade -y EXPOSE 80 CMD [“apache2ctl”, “-D FOREGROUND”] 我用下面的语句来构build它 docker build -t mywebserver . 这工作得很好,但是当我想执行它 docker run -p 80:80 mywebserver 它会返回您可以在标题中看到的错误消息。 我也尝试了/usr/sbin/apache2ctl而不是apache2ctl ,以确保它不是因为在PATH中丢失,但没有帮助。 所以在此先感谢您的帮助。

如何使用docker-compose环境variables来填充configuration文件

我是新来的docker写作。 我试图了解如何通过docker-compose传递环境variables来在Dockerfile的构build阶段填充configuration文件中缺less的variables值,所以在运行阶段,我将运行service- rabbitmq ,其configuration填充envvariables值。 在env_file: -compose yml文件中,我有一个env_file:以及environment: ,问题如何将它们传递给填充configuration文件。 任何帮助,一个想法将不胜感激,当然一个简单的例子。 示例rabbitmqconfiguration文件(需要用$ SSL_PORT的值填充envvariables): [{rabbit, [ {loopback_users, []}, {ssl_listeners, [$SSL_PORT]}, {ssl_options, [{cacertfile,"/etc/rabbitmq/ca/cacert.pem"}, {certfile,"/etc/rabbitmq/server/cert.pem"}, {keyfile,"/etc/rabbitmq/server/key.pem"}, {verify,verify_none}, {fail_if_no_peer_cert,false}]} ]} ].

Bash脚本在进入docker容器时退出

我试图创build一个bash脚本设置docker和一个新的服务器上的应用程序。 相当新鲜,但我认为我得到了公正 inheritance人是我的问题所在 – # docker run -d –name application -p 80:80 -d tutum/apache-php docker run -d -p 3306:3306 –name=database — env="MYSQL_ROOT_PASSWORD=password1" mysql:latest echo "——————————————————————–" echo "Docker is all done – run docker ps -a to see all created containers!" echo "——————————————————————–" echo "Moving onto installing application into app container!" echo "——————————————————————–" docker exec -it […]

Docker – 通过容器名称的ssh

我想容易通过容器名称的docker容器ssh。 现在ssh到容器我需要调用: docker ps 它返回: CONTAINER ID IMAGE <container_id> myContainer 并复制CONTAINER_ID执行命令: docker exec -ti <container_id> /bin/bash/ 我有很多容器,通过IMAGE名称ssh会容易得多。 有没有写自定义的bash脚本?

docker集装箱内的种子mongodb

我知道有一些伎俩像使用一个单独的容器来播种真实的容器,就像在这个答案中一样 。 我喜欢这种方法,但是我想知道一旦容器启动,我是否可以做到这一点。 简单地创build一个Dockerfile。 以前面的答案为出发点,我尝试了各种解决scheme,这是一个: FROM mongo:3.0.15 COPY ./init.json /init.json CMD (mongod &) && (sleep 70 && mongoimport -v –db reach-engine –collection MyDummyCollection –type json –file /init.json –jsonArray) EXPOSE 27017 唉这个解决scheme它不是优雅的,也不是工作原因:因为mongod在后台,尽快mongoimport完成容器停止,所以即使导入成功完全unusefull。 首先, 睡眠70是非常糟糕的,因为如果mongod需要超过70秒的时间,会不会发生什么情况。 想法?

奇怪的字符docker执行官

我正在尝试创build一个脚本来运行docker集群。 在我的脚本中有一个时刻,我想从泊坞窗复制一些文件到我的本地机器。 所以我创build了CONTAINER_WORKDIRvariables。 CONTAINER_WORKDIR=`docker exec -it jmeter-master /bin/pwd` 存储在CONTAINER_WORKDIR的值是: /usr/local/apache-jmeter-3.2/bin 问题是这个variables的末尾有一个奇怪的字符。 尝试执行下面的行: echo "docker cp jmeter-master:$CONTAINER_WORKDIR/output.csv ." 我的预期结果是 docker cp jmeter-master:/usr/local/apache-jmeter-3.2/bin/output.csv . 但实际产出是: /output.csv .ter-master:/usr/local/apache-jmeter-3.2/bin pwd或docker exec命令正在返回一个返回字符。 有一种方法可以从CONTAINER_WORKDIRvariables中删除这个字符

来自docker容器的ERR_EMPTY_RESPONSE

我一直试图在最后几个小时里弄清楚,但是我被卡住了。 我有一个非常简单的Dockerfile,看起来像这样: FROM alpine:3.6 COPY gempbotgo / COPY configs /configs CMD ["/gempbotgo"] EXPOSE 8025 gempbotgo只是一个运行Web服务器和其他东西的二进制文件。 networking服务器在8025上运行,应该回答一个问候世界。 我的问题是与暴露端口。 我像这样运行我的容器(build立之后) docker run –rm -it -p 8025:8025 asd 一切似乎都很好,但当我尝试在浏览器中打开127.0.0.1:8025或尝试一个wget我只是得到一个空的答复。 Chrome:ERR_EMPTY_RESPONSE 该端口被使用,而不受我的Windows 10系统上的防火墙的限制。 在没有容器的情况下运行二进制二进制文件,只需在我的“Windows上的Ubuntu上的Bash”terminal上浏览到127.0.0.1:8025即可。 其他地址返回一个“ERR_CONNECTION_REFUSED”像127.0.0.1:8030,所以那里定义是在端口上的活动。 然后我和他一起走进了那个混蛋 docker exec -it e1cc6daae4cf /bin/sh 并用wget在那里检查会发生什么。 也没有问题。 index.html文件下载一个“Hello World” 任何想法为什么docker不发送任何数据? 我也用docker-compose运行了我的容器,但是没有区别。 我也在外部托pipe的VPS上运行容器。 同样的问题在那里…(Debian) 我的代码:(注意Makefile) https://github.com/gempir/gempbotgo/tree/docker 编辑: 得到一些评论后,我改变了我的Dockerfile到一个多阶段的构build。 这是我的Dockerfile现在: FROM golang:latest WORKDIR /go/src/github.com/gempir/gempbotgo RUN […]

在bash数组中为docker命令循环参数?

我似乎被困在这里。 我试图写一个bash函数启动x数量的docker集装箱,希望一个arrays,持有暴露的端口为给定的应用程序。 我不想循环数组,只是命令,而引用数组来获取值。 该函数如下所示: #!/bin/bash declare -a HOSTS=( ["app1"]="8002" ["app2"]="8003" ["app3"]="8008" ["app4"]="8009" ["app5"]="8004" ["app6"]="8007" ["app7"]="8006" ) start() { for app in "$@"; do if [ "docker ps|grep $app" == "$app" ]; then docker stop "$app" fi docker run -it –rm -d –network example_example \ –workdir=/home/docker/app/src/projects/"$app" \ –volume "${PWD}"/example:/home/docker/app/src/example \ –volume "${PWD}"/projects:/home/docker/app/src/projects \ –volume "${PWD}"/docker_etc/example:/etc/example \ […]

从Docker容器中以不同的用户身份运行命令/脚本

首先,我知道这可能不是最“容器化”的解决scheme。 在这一点上,我想知道如果我将不得不放弃我到目前为止,或者如果我能做这个工作。 我需要在服务器之间移动文件并将其备份。 我目前有一个脚本,这样做。 我运行这个脚本的用户具有所有服务器的密钥,因此,从服务器到服务器的rsync是这个脚本没有问题。 我现在正在创build一个web服务,用户可以通过ping来安全地移动文件并进行备份。 这可以防止他们不得不联系我来运行脚本,并且稍后将允许与某些工作stream程软件集成。 但是,我的docker容器捕获的HTTP请求到Web服务将不会有密钥到处,因此不能成功地运行脚本。 我正在寻找一个解决scheme,将允许我运行这个脚本,同时也有一个Web服务,用户可以请求。 我最初的希望是为了基本上传递参数和运行脚本。 我不知道下面这些想法的可行性,但是这是我迄今为止的两个想法。 运行泊坞窗容器作为我的用户,到处都有钥匙 在启动时将docker钥匙交给任何地方 有没有人有任何build议,如何做到上述问题或可能的解决办法? 随意问更多的问题,因为我知道这是一个奇怪的问题。 提前感谢任何帮助!

在没有Dockerfile的情况下减lessdocker镜像的大小

我几周前创build了一个图片,而不使用本教程使用Dockerfile。 基本上,你从一个图像运行一个容器,编辑这个容器,然后将其保存为新的图像,退出,提交和推送。 起初,我的形象在规模上有点可以接受,但现在却以我不明白的方式成长起来。 例如,如果我需要编辑我的图像,我会: docker run –name mycontainer -it from/currentimage bash 编辑一个文件或configuration一些东西 出口 docker commit from/currentimage docker push from/currentimage 问题是,改变文件中的一行,使图像变大了〜250MB。 我究竟做错了什么? 从那里,我怎么能减less那些我认为无用的图层呢? SO上的其他答案总是使用Dockerfile或重新configuration它。 我的情况没有。 谢谢