Tag: shell

docker运行脚本导出envvariables

我已经search了一些像docker ENV和RUN export这样的问题,这解释了这些命令之间的差异,但是并没有帮助解决我的问题。 例如,我有一个名为myscript的脚本: #!/bin/bash export PLATFORM_HOME="$(pwd)" 在Dockerfile中有以下几行: … COPY myscript.sh / RUN ./myscript.sh 我也尝试使用ENTRYPOINT而不是RUN或在调用脚本之前声明variables,所有这些都没有成功。 我想实现的是PLATFORM_HOME可以从其他Dockerfiles中引用,这些Dockerfiles使用那个作为基础。 怎么做 ?

为什么“/ usr / bin / env bash -x”只能在命令行中工作?

我正在玩一个docker CentOS镜像,在terminal里find执行“ /usr/bin/env bash -x ”的命令是OK的: bash-4.1# /usr/bin/env bash -x bash-4.1# exit + exit exit 但是在将这个命令写入脚本并执行后,它不起作用,并提示“ No such file or directory ”: bash-4.1# ls -lt a.sh -rwxr-xr-x. 1 root root 23 May 20 04:27 a.sh bash-4.1# cat a.sh #!/usr/bin/env bash -x bash-4.1# ./a.sh /usr/bin/env: bash -x: No such file or directory 两种方法有什么区别?

不能更改docker容器中的目录?

我正在试图从它的主机运行一个docker容器内的一些命令。 通常,当我想在主机的docker容器中执行shell命令时,我将执行如下操作: docker exec -ti myContainer ls -l 这工作正常。 但是当我尝试改变这样的目录: docker exec -ti myContainer cd myDirectory 它会抛出错误: rpc error:code = 2 desc =“oci runtime error:exec failed:exec:\”cd \“:可执行文件在$ PATH中找不到” 有没有人有任何想法,为什么会发生,我怎么能解决它?

在docker build命令中传入参数

使用Docker对于Mac,鱼壳,macOS 10.11 我尝试运行以下命令: docker run -d -it –name=my-app-container -v $(pwd):/app -p 3000:3000 myapp 我得到以下错误: $(…) is not supported. In fish, please use '(pwd)'. fish: docker run -d -it –name=my-app-container -v $(pwd):/app -p 3000:3000 myapp 通过回购阅读和SO答案,但不能得到这个工作。 有任何想法吗? 谢谢。

Docker在X时间后杀死一个容器中的无限进程

我正在使用在这个docker问题find的代码基本上启动一个容器在20秒内运行一个进程,如果进程完成 / 没有完成 / 无法执行 / 超时容器被杀死无论。 我目前使用的代码是这样的: #!/bin/bash set -e to=$1 shift cont=$(docker run -d "$@") code=$(timeout "$to" docker wait "$cont" || true) docker kill $cont &> /dev/null echo -n 'status: ' if [ -z "$code" ]; then echo timeout else echo exited: $code fi echo output: # pipe to sed simply for pretty […]

重启命令后,如何从命令重启机器后继续执行bash脚本?

我正在开发一个bash脚本来安装和设置docker并运行一个应用程序。 该脚本需要重新启动系统,并应在重新启动后继续。 我是BASH新手,请帮助我解决这个问题。 谢谢,Ketan。

如何SSH从运行docker容器从jenkins执行壳

我正在jenkins执行shell运行dind容器( dind ) CONTAINER_ID="$(sudo docker run –privileged -i -d jpetazzo/dind)" 在容器中执行docker命令我进入容器shell sudo docker exec -it –privileged ${CONTAINER_ID} bash 而我试图在dind容器内执行这些命令。 sudo docker pull hubuser/hello-world sudo docker run hubuser/hello-world sudo docker tag imageId hubuser/hello-world:123 sudo docker login –username=hubuser –password=password sudo docker push hubuser/hello-world 所有这些我在jenkins中编写的7个命令都执行shell。 下面给出的5个命令是在dind容器外执行的,而不是在里面。 如果我从terminal尝试,而不是连接到容器shell并正确执行。 我想在容器内但是从jenkins执行它们。 我也尝试在每个命令之前添加exec : sudo docker exec -it –privileged ${CONTAINER_ID} sudo docker […]

使用RUN命令在docker中执行shell脚本

新来的docker工人,请耐心等待。 我的Dockerfile包含一个入口点: ENV MONGOD_START "mongod –fork –logpath /var/log/mongodb.log –logappend –smallfiles" ENTRYPOINT ["/bin/sh", "-c", "$MONGOD_START"] 我有一个shell脚本通过python脚本添加一个条目到数据库,并启动服务器。 脚本startApp.sh chmod +x /addAddress.py python /addAddress.py $1 cd /myapp/webapp grunt serve –force 现在,所有下面的RUN命令在执行这个脚本时都是不成功的。 sudo docker run -it –privileged myApp -C /bin/bash && /myApp/webapp/startApp.sh loc sudo docker run -it –privileged myApp /myApp/webapp/startApp.sh loc 容器的docker日志是 "about to fork child process, waiting until […]

Docker – 不能转发交互式s​​hell的端口

在Docker容器中转发端口遇到了很多困难。 首先,我尝试转发现有容器的端口。 然后我意识到这是不可能的。 所以我尝试使用docker run命令(从docker镜像创build一个新的容器)。 docker run -p 8080:8080 -td <image_id> 我使用docker ps命令进行了检查,并在“Ports”标题下显示了这些端口。 但是我在这里使用了-d(在后台运行容器)选项。 所以我猜想它工作。 但我真的需要一个交互式的shell,在这里我想转发一些端口。 基本上我试图在这个容器中运行一个Ruby On Rails应用程序(需要端口3000,3306等),我安装了所有的软件和rails gem等,并在这个交互式shell中启动服务器。 但我不知道如何转发交互式s​​hell的端口。 我尝试了以下内容: docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i <image_id> /bin/bash 这里交互式shell工作,但端口不被转发。 编辑 :我遵循的步骤: $ docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i 5c62899c063f /bin/bash root@342cf0dfb5a5:/# […]

使用Java要运行shell脚本将文件复制到docker会返回错误

我试图用Java来执行触发docker copy命令的shell脚本。 我试过的所有东西都返回了代码127(找不到命令)。 public static void main(String[] args) { System.out.println("Starting shell script"); String script = "SendToDocker.sh"; String scriptPath = "/path/"; try { Process awk = new ProcessBuilder("/bin/bash", scriptPath + script).start(); awk.waitFor(); BufferedReader reader = new BufferedReader(new InputStreamReader( awk.getInputStream())); String s; while ((s = reader.readLine()) != null) { System.out.println("Script output: " + s); System.out.println("output code: "+awk.exitValue()); […]