Tag: 贝壳

Shell文件无法使用docker correclty

我有三个.sh文件,我为了构build和运行docker镜像而运行。 截至昨天,我似乎无法创造任何新的工作。 这很奇怪,因为即使我复制工作的完全不工作。 我可以在terminal中运行shell脚本中的行,他们将工作。 我不知道如何或为什么这是行不通的。 编辑:我可以运行的文件,但他们吐出类似的东西 Error response from daemon: No such container: foo-container 这是不正确的,因为我可以看到dockerps的容器 例: 这是一个可以工作的旧脚本 #! /bin/bash docker stop cb-server docker rm cb-server docker rmi couchbase.server.container docker build -t couchbase.server.container . 但是如果我使用完全相同的代码创build一个新代码,并运行它,我可以得到: Error response from daemon: No such container: cb-server Error response from daemon: No such container: cb-server Error response from daemon: invalid […]

Docker exec需要最less2个参数

我在Linux上使用shell脚本来执行一些Docker命令: docker exec -t -i test1 passwd … docker exec -t -i test2 passwd 并在第二个exec命令我收到以下错误: docker: "exec" requires a minimum of 2 arguments. 我做错了什么,或者我错过了什么? 先谢谢你。

错误:Dockerfile中shell脚本的意外结束(期待“执行”)

我不想有一个脚本的另一个.sh文件,并要在Dockerfile中及时添加一个shell脚本代码。 但是,我在图像生成过程中收到一条错误消息: / bin / sh:语法错误:意外的文件结尾(期待“do”) 下面是一个脚本的Dockerfile的一部分: RUN cat .env | while [ read LINE ] \ do \ envName=$(echo "$LINE" | grep -o "^[^\=]*") \ echo "PassEnv $envName" >> httpd.conf \ done 任何想法有什么不对?

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 CMD评估与ENTRYPOINT

我有一个Dockerfile属于理解CMD和ENTRYPOINT如何交互的matrix中的exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd类别。 行为不是我所期待的。 我期待/bin/sh -c exec_cmd p1_cmd先评估,然后传递到exec_entry p1_entry 。 我正在观察的是/bin/sh -c exec_cmd p1_cmd从字面上被传递到exec_entry p1_entry ,我认为这很有趣。 为了提供更多的上下文,我特别从现有的Dockerfile中派生出一个新的Dockerfile,其中父代有: ENTRYPOINT ["/bin/registrator"] 我想从我的Dockerfile传递特定的命令行参数: FROM gliderlabs/registrator:v7 CMD echo "-ip=$EXTERNAL_IP consul://$CONSUL_HOST" 当我在一个容器中运行我的Docker镜像时: $ docker run –rm –name=test-registrator –volume=/var/run/docker.sock:/tmp/docker.sock -e "EXTERNAL_IP=<some-ip>" -e "CONSUL_HOST=<some-consul-hostname>:8500" my/registrator 我得到以下错误: 2016/12/28 19:20:46 Starting registrator v7 … Extra unparsed arguments: -c echo "-ip=$EXTERNAL_IP consul://$CONSUL_HOST" […]

如果我们运行具有.sh文件的dockerfile,“docker build”和“docker run”之间的区别

这是我的Dockerfile # This Dockerfile describes the standard way to build FROM centos:latest MAINTAINER praveen # Run a root to allow "rpm" USER root WORKDIR /root/ # Get the ACE-TAO rpm from seachange repo COPY TAO-1.7.7-0.x86_64.rpm /root/TAO-1.7.7-0.x86_64.rpm # Insatall the rpm RUN rpm -ivh /root/TAO-1.7.7-0.x86_64.rpm #Start the TAO service #CMD /etc/init.d/tao start COPY namingServiceConfig.sh / RUN […]

Mesos Marathon Docker容器 – CommandInfo

最近,我在几个节点上安装了Marathon,Mesos和Docker。 一切工作正常,除了我遇到一个问题时,启动Docker容器。 特别是,当Marathon执行一个启动Docker容器的任务时,marathon会追加/bin/sh -c ' '作为默认的Docker命令。 这导致我的容器启动,然后立即退出(我可以看到他们使用docker ps -a ) 我看了一下Mesos文档,其中指出: Docker镜像当前支持有入口点和/或默认命令。 要使用默认命令(即:docker run image)运行docker镜像,不能设置CommandInfo的值。 如果该值被设置,那么它将覆盖默认命令。 要运行定义了入口点的Docker镜像,CommandInfo的shell选项必须设置为false。 如果将shell选项设置为true,则Docker Containerizer将运行用/ bin / sh -c打包的用户命令,该命令也将成为映像入口点的参数。 这是很好的信息(我看到Mesos的预期行为),但是在Marathon中没有看到closuresCommandInfo shell的选项。 我的问题是: 如何将CommandInfo Shell选项(在Marathon或Mesos中)设置为false? 哪里需要设置? 当我在机器上运行我的ghost-blog-test镜像(使用标准/entrypoint.sh npm s docker run命令)时,它使用/entrypoint.sh npm s作为默认命令。 我想在使用Mesos + Marathon的时候也是这样。 提前致谢!

为什么我的docker退出后执行我的shell脚本?

为什么我的docker退出后执行我的shell脚本? 谢谢。 Docker版本: docker –version Docker version 1.12.4, build 1564f02 我的图片: docker pull lw96/ubuntu-16.04-lnmp1.3 运行后: docker run -it -d –name test -p 8080:80 lw96/ubuntu-16.04-lnmp1.3 sh /root/run.sh 我检查了: docker ps -a root@ubuntu:/home/liwei# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 68c0ce4c59f7 a57b0c1a60cf "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp test 这里是run.sh: #! […]

jenkins工作的壳和bashdocker工人容器的不同的小组

我已经在Docker容器上安装了jenkins master,并在docker容器中使用Swarm插件运行一个slave。 我在docker slave中创build了一个组。 一旦我使用docker exec -it <container> bashinputslave容器并键入groups我创build的组被正确列出。 但是,当我将groups键入工作描述shell并在创build的从属服务器上执行作业时,我的组不会显示。 编辑 :奴隶容器:简单地启动一个jenkins奴隶作为用户jenkins 。 启动时,通过CMD [ "/startup.sh" ]执行以下代码(脚本:startup.sh)。 jenkins-slave.sh提供在https://gist.github.com/sfrehse/02c7d57fad862c71c20f07c59caba240下。 DOCKER_SOCKET=/var/run/docker.sock DOCKER_GROUP=dockergrp JENKINS_USER=jenkins if [ -S ${DOCKER_SOCKET} ]; then DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET}) sudo groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP} sudo usermod -aG ${DOCKER_GROUP} ${JENKINS_USER} fi /usr/local/bin/jenkins-slave.sh 从bash启动后: docker exec -it 8b85afe2b360 groups输出jenkins dockergrp 。 触发包含以下代码的作业: whoami groups […]

Jenkinsfile:在Docker容器中运行sh步骤时拒绝了权限

我运行一个简单的Jenkinsfile有困难 – 例如 pipeline { agent { label 'ssh-slave' } stages { stage('Shell Test') { steps { sh 'echo "Hello World"' } } } } 主人Jenkins的日志文件显示容器已成功启动,但构build作业崩溃,并显示一条消息 sh: 1: /home/jenkins/workspace/pipeline@tmp/durable-34c21b81/script.sh: Permission denied 这里是我们configuration/计算出来的一些额外的东西: 我们正在使用RHEL的虚拟机上运行代理 我们使用Jenkins的Docker Plugin来启动/pipe理单独的Jenkins代理上的容器 我们在Jenkins插件中使用Connect with ssh方法启动Docker容器,并使用jenkinsci / ssh-slave Docker镜像 Jenkins在Docker容器中使用root用户(至less/home/jenkins/…所有文件都是以root身份创build的 当我们在pipe道和docker exec…添加一个sleep步骤到正在运行的容器时,如果我们试图用./script.sh来运行它(即使我们设置了正确的文件模式与之前的chmod +x script.sh ) – 我们也得到sh: 1: permission denied 。 但是我们可以运行脚本,如果我们使用sh script.sh […]