Tag: sh

如何为postgis创builddocker镜像,以便在构build时或者在容器完全运行之前启用扩展?

我的意思是我想创build一个postgis的docker镜像,在build之后就可以完全使用。 所以,如果用户运行 docker run -e POSTGRES_USER=user somepostgis 用户数据库将被创build和扩展已经安装 ? 官方postgres图像不能用于AFAIK。 基本上需要写脚本,并告诉它将是入口点。 这个脚本应该创build数据库,并在不同端口上运行porstgres服务器来创build扩展,然后在端口5432上重新启动它。 但是我不知道,docker工人也这么做。 现在是说没有pg_ctl命令 如果你想帮助你可以分叉 FROM ubuntu:15.04 #ENV RELEASE_NAME lsb_release -sc #RUN apt-get update && apt-get install wget #RUN echo "deb http://apt.postgresql.org/pub/repos/apt ${RELEASE_NAME}-pgdg main" >> /etc/apt/sources.list #RUN cat /etc/apt/sources.list #RUN wget –quiet -O – http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add – RUN apt-get update \ && […]

Docker – sh服务脚本不采取选项

我有一个debain 8机器上的/etc/init.d中的docker sh服务脚本: #!/bin/sh set -e ### BEGIN INIT INFO # Provides: docker # Required-Start: $syslog $remote_fs # Required-Stop: $syslog $remote_fs # Should-Start: cgroupfs-mount cgroup-lite # Should-Stop: cgroupfs-mount cgroup-lite # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Create lightweight, portable, self-sufficient containers. # Description: # Docker is an open-source project […]

为什么在docker-machine虚拟机中创build一个文件会导致权限被拒绝?

我想创build文件/etc/docker/daemon.json在使用docker-machine创build的虚拟机通过SSH进入它如下 docker-machine ssh manager1 "sudo echo \"{ \"insecure-registries\":[\"192.168.100.99:5000\"] }\" >| /etc/docker/daemon.json" 上述失败的消息 sh: can't create /etc/docker/daemon.json: Permission denied 如何实现上述类似于我试图做到这一点,因为我需要把它放在一个非交互式的bash脚本。

如何使用Shell脚本重新启动Docker服务

我有在Docker容器中运行的Node服务 由于以下exception服务会在一段时间后停止。 events.js:141 throw er; // Unhandled 'error' event Error: read ECONNRESET at exports._errnoException (util.js:870:11) at TLSWrap.onread (net.js:544:26) 我不知道为什么这个例外即将到来。 我正在寻找可以重新启动服务的工作。 我正在使用shell文件来运行这些服务,所以有什么我可以添加在shell文件,可以重新启动这个停止的服务。 以下是我的shell文件的示例: #!/bin/bash ORGANISATION="$1" SERVICE_NAME="$2" VERSION="$3" ENVIRONMENT="$4" INTERNAL_PORT_NUMBER="$5" EXTERNAL_PORT_NUMBER="$6" NETWORK="$7" docker build -t ${ORGANISATION}/${SERVICE_NAME}:${VERSION} –build-arg PORT=${INTERNAL_PORT_NUMBER} –build-arg ENVIRONMENT=${ENVIRONMENT} –no-cache . docker stop ${SERVICE_NAME} docker rm ${SERVICE_NAME} sudo npm install sudo npm install -g express docker […]

在Docker容器中执行cron服务时出现的问题?

我有一些cronjobs,我总是使用和工作正常。 但现在,试图将所有东西都移到Docker容器中,我Docker了这些错误: /usr/bin/service: 127: /usr/bin/service: stop: not found /usr/bin/service: 128: exec: start: not found 它们在执行诸如"service restart nginx"这些cronjob之类的东西时发生。 请注意,相同的命令可以在cronjob之外正常工作。 PATH在/etc/crontab正确设置。 将它添加到/etc/cron.d中的个别cronfiles也不起作用。 我也尝试在/etc/crontab中将SHELL=/bin/sh更改为SHELL=/bin/bash (即使它不安全,但是想尝试),但是没有工作。 有任何想法吗?

docker容器中的高山linux忽略shell脚本参数

我试图创build一个设置自定义tomcat端口的docker镜像(我知道你可以用docker标志设置一个外部端口“-p 8888:8080”,但是对于我的用例,我想改变内部端口) 。 当我尝试启动catalina.sh运行参数由于某种原因被忽略。 Dockerfile: # Tomcat 8 alpine dockerfile copied here (URL below)… minus the CMD line at the end # https://github.com/docker-library/tomcat/blob/5f1abae99c0b1ebbd4f020bc4b5696619d948cfd/8.0/jre8-alpine/Dockerfile ADD server.xml $CATALINA_HOME/conf/server.xml ADD start-tomcat.sh /start-tomcat.sh RUN chmod +x /start-tomcat.sh ENTRYPOINT ["/bin/sh","/start-tomcat.sh"] tomcat文件server.xml和默认的一样,除了这行: <Connector port="${port.http.nonssl}" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> start-tomcat.sh: #!/bin/sh export JAVA_OPTS=-Dport.http.nonssl=${PORT} catalina.sh run 图像build立成功,但是当我运行 docker run -p 8888:8888 -e PORT=8888 […]

在docker上嘘:语法错误:意外的文件结束(期待“然后”)

我正在运行Dockerfile中的startup.sh脚本,并在运行docker容器时出现以下错误: docker run -p 5308:5308 activity-logger : not found line 2: : not found line 5: startup.sh: line 13: syntax error: unexpected end of file (expecting "then") 如果我尝试从命令行运行sh startup.sh ,它似乎工作正常。 有任何想法吗? startup.sh #!/bin/sh export env_file=`echo microservice-configuration/$LS_ENVIRONMENT.environment.properties` export startup_command="npm run start:dist" if [ -f $env_file ]; then echo "Using environment specific configuration file $env_file" env $(cat […]

Shell脚本使用grep清理指定的docker容器

我想编写一个脚本,由我的开发构build服务器执行,在构build和运行新容器之前将删除所有“类似”泊坞窗容器。 下面是我需要的bash脚本的伪代码 var name = $1 var number_of_results = # of containers returned from $(docker ps -a | grep "$name") if(number_of_result > 0) docker rm -f $(docker ps -a | grep "$name")

泊坞窗Webhook容器:应该运行一个脚本,但脚本不能正确执行(只有回声工作)

所以我build立了一个Docker容器,它是基于almir / webhook的容器,我添加了git和docker到图像,所以我可以运行相应的命令。 问题是,它运行时,我手动testing,它甚至运行时,我通过terminal从容器内启动脚本。 但是当我通过URL触发脚本时,我只能得到回显作为输出,没有“真正的”命令得到执行。 我的脚本如下所示: #!/bin/sh echo "current directory: " + $PWD git pull echo "pulling from git" docker exec -ti geda-drupal gedankenbruecke/vendor/drush/drush/drush st echo "clear drupal cache" echo "Script finished successful" echo "testPull" 我的输出是这样的: [webhook] 2017/10/03 21:08:58 incoming HTTP request from 172.18.0.4:38050 [webhook] 2017/10/03 21:08:58 tuleapPull got matched [webhook] 2017/10/03 21:08:58 tuleapPull hook […]

简单的脚本需要删除超过4周的所有docker图像

我知道以前也有类似的问题,但我找不到任何我需要的东西。 我也在Docker社区论坛上提出过问题,但没有人能提供帮助。 我无法访问新的docker image prune命令,因为我无法从当前版本1.11.2升级到最新的1.13版本,但是我需要一个可以在cron下运行的简单脚本来删除所有映像悬挂与否,超过1个月大。 我不需要担心容器,因为这是来自只存储图像的回购。 如果docker图像报告“4周”为“1个月”,这将是简单的,我可以使用类似的东西 docker images | grep " [months]* " 并输出到docker rmi命令。 然而,由于它似乎是在“星期”到11个星期内报告,而且一旦形象是3个月或更长时间,只有“月”,我不能这样做。 docker images | grep " [months|weeks]* ago" | awk '{print $3,$4,$5}' 会给我这个输出:: 6828f152f9cc 2 weeks 52a7412befd3 2 weeks 04c2b29e5e08 2 weeks cdfb37d22663 2 weeks ca38a8cabb2b 3 weeks 8b043f2395ba 3 weeks 2aa8b20380a0 3 weeks 1ac7dcf35935 9 weeks f80873c4845b 9 […]