简化脚本文件以便进行实验:
#!/bin/sh
if test -f /home/vl/docker-test/envvars; then . /home/vl/docker-test/envvars; fi
envvars文件内容:
export APACHE_RUN_USER=www-data
运行脚本后什么都不会发生,没有输出,也没有错误。检查env是否包含来自envvars的变量,不,它不包含:
$ env | grep -i apache
输出为空。
但是:
$ if test -f /home/vl/docker-test/envvars; then . /home/vl/doc
我正试图通过以下步骤在码头容器中运行一个挂载的shell脚本:
构建阶段:构建码头形象。
测试阶段:在运行时将一个目录挂载到容器中,其中包含一个shell脚本文件。
测试阶段:从坞内运行shell脚本文件。
有人能解释一下该怎么做吗?
见行: #- ?? HERE I SHOULD RUN THE TEST: /test/check.sh ??
services:
- docker:dind
stages:
- build
- test
before_script:
- docker info
# Build the docke
使用Linux终端,我运行包含我想要执行的命令序列的bash脚本(.sh文件)。
问题是我无法从我的shell脚本中运行Docker命令。当我以root权限直接在终端输入这个Docker命令时,我可以运行它,但当我将它包含在shell脚本文件中时,我就不能运行它了。
我以普通用户身份从命令行执行的脚本如下所示:
#!/usr/bin/env bash
cd /home/user/docker_backup
# remove /home/user/docker_backup/data
rm -rf data
# Switch to root privileges. my system is se
当当前工作目录不包含空格时,我的Docker包装器脚本将按预期工作,但是当它包含时会出现错误。
我简化了一个示例,以使用我能找到的最小的官方Docker映像和一个众所周知的GNU核心实用程序。当然,这个例子不是很有用。在我的实际用例中,打包了一个更加复杂的环境。
Docker包装器脚本:
#!/usr/bin/env bash
##
## Dockerized ls
##
set -eux
# Only allocate tty if one is detected
# See https://stackoverflow.com/questions/911168/how-to-detect
我试图在AWS EMR集群的主节点上执行一个脚本。其目的是创建一个新的conda env并将其链接到jupyter。我正在跟踪AWS的文档。问题是,无论脚本的内容是什么,我都会得到相同的错误:在执行bash: /home/hadoop/scripts/bootstrap.sh: No such file or directory时执行sudo docker exec jupyterhub bash /home/hadoop/scripts/bootstrap.sh。我已经确保sh文件位于正确的位置。
但是,如果我在容器中复制bootstrap.sh文件,然后运行相同的docker,它就会正常工
我有一个SSH服务器,负责通过X转发运行dwm二进制文件,在我的客户端计算机上,我有一个shell脚本来替换/usr/local/bin上的dwm二进制文件,在该脚本中,我只调用服务器请求它运行原始的dwm:
ssh -q -tt user@172.17.0.2 dwm $@
只有一个-t,我得到以下错误:
Pseudo-terminal will not be allocated because stdin is not a terminal
在SSH服务器端,我使用ForceCommand传递通过container_runner脚本接收到的参数,如下所示:
#!/bin/sh
/usr/l