Tag: shell

Ansible Shell无法提取Docker镜像

我遇到了使用Ansible的Docker模块从私有DockerHub仓库中拖出Docker镜像的问题,因此为了理智,检查代码决定尝试首先使用shell抽取有问题的镜像。 这也失败了。 这里发生了什么? 如果我SSH上的框,我能够运行完全相同的命令在shell和它的作品,拉正确的形象。 孤立的例子玩法: — – hosts: <host-ip> gather_facts: True remote_user: ubuntu sudo: yes tasks: – include_vars: vars/client_vars.yml – name: Pull stardog docker image [private] shell: sudo docker pull {{stardog_docker_repo}} – name: Tag stardog docker image [private] shell: sudo docker tag {{stardog_docker_repo}} stardog_tag 正在输出的错误是: failed: [<host-ip>] => {"changed": true, "cmd": "sudo docker pull <org>/<image>:latest", […]

一个bash脚本如何在发送信号给子程序的时候重启非0退出进程

在这个问题之后: 如何编写一个bash脚本来重启一个进程,如果它死了? 我试图做一个bash脚本,只是运行一个python脚本,并重新启动脚本,如果脚本以非0输出结束。 我的bash脚本看起来像这样: #!/bin/bash trap 'kill $(jobs -p)' SIGTERM SIGKILL; until python test.py & wait; do echo "Test Critically Crashed" >&2 sleep 1; done 虽然我的python脚本(虽然不是真正相关的)看起来像: import logging,sys,signal,time def signal_term_handler(signal, frame): print("SIGTERM recieved…quitting") sys.exit(0) signal.signal(signal.SIGTERM, signal_term_handler) while True: time.sleep(1) sys.exit(1) 我想运行bash脚本,让它运行我的过程无限的,直到我发送一个sigterm或sigkill到bash脚本,它将发送到subprocess(python test.py),并最终退出代码为0打破直到循环,干净地退出。 仅供参考我正在使用无限运行的Python脚本,并使用这个bash脚本作为入口点的docker集装箱。

docker运行如何与容器中的shell运行命令有所不同

当我试图在容器中运行logstash并访问通过主机卷提供的configuration时,我遇到了拒绝权限的问题。 但是,如果我明确地运行在一个shell内的命令,它工作正常。 $ docker run -it –rm -v "$PWD/logstash/config":/etc/logstash/conf.d:Z logstash:latest logstash -f /etc/logstash/conf.d The error reported is: Permission denied – /etc/logstash/conf.d/logstash.conf $ docker run -it –rm -v "$PWD/logstash/config":/etc/logstash/conf.d:Z logstash:latest sh -c 'logstash -f /etc/logstash/conf.d' Settings: Default pipeline workers: 4 Logstash startup completed $ docker run -it –rm -v "$PWD/logstash/config":/etc/logstash/conf.d:Z logstash:latest ls -lZ /etc/logstash/conf.d total 4 […]

Docker中运算符$()是什么意思?

这可能是一个非常简单的答案。 我已经谷歌与Docker的以下命令谷歌: docker rm $(docker ps -a -q) 我在Go,Docker和Linux中寻找操作员。 从上下文可以明显看出,它是rm命令的一种pipe道,但是我很想知道它是否真的是某种pipe道,为什么它不仅仅是docker rm | docker ps -a -q docker rm | docker ps -a -q

如何追加/修改docker容器中的文件从docker运行… '

我想在Docker镜像中修改conf文件,但是我不想重新构builddocker镜像,而是想通过“docker run …. COMMAND”来执行此操作 。 我会把一个“echo XXX >> /etc/XXX.conf”放到COMMAND中。 这可能吗? 例如,我想启动一个redis sentinel集群,其中包括至less2个redis-server和1个redis-sentinel。 第二个redis服务器容器在redis.conf中需要状态“slaveof”。 我按照以下步骤做到这一点: 启动redis-server与端口6479 docker run -d -p 6479:6379 docker.io/redis 通过使用相同的docker图像启动从属redis服务器与6579,并说明它是一个奴隶在conf文件中: docker run -d -p 6579:6379 docker.io/redis "/bin/echo 'slaveof 192.168.1.149 6479' >> /etc/redis.conf && redis-server /etc/redis.conf" 这里“docker run”的命令是:“/ bin / echo'slaveof 192.168.1.149 6479'>> /etc/redis.conf && redis-server /etc/redis.conf” 开始哨兵,这是另一个docker的图像。 但是,我在第二步停了下来。 它返回如下错误消息: /entrypoint.sh:第10行:/ bin / echo'slaveof […]

使用python或bash自动安装Docker和镜像

我试图自动化安装docker-engine的过程,然后询问用户是否想要拉rhel / suse / centos映像。 使用python是我的第一个想法,但我已经添加bash脚本来使事情变得更容易,python似乎不太友好,运行cli命令。 现在,我打算扩展function和shell脚本不会扩展。 如何将此脚本转换为Python? 许多常见的命令行操作,比如“yum install”等等,都不容易使用额外的python导入。 如果您有更简单的build议,请咨询 谢谢! 这是bash脚本仍在工作中… #!/bin/sh if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi echo echo " – Installing packages" echo if [[ -e /usr/bin/yum ]]; then #Verify packages are up to date yum update […]

使用自定义configuration运行WSO2 Application Manager泊坞窗镜像

Docker还是个新手。 我已经使用这里提供的说明成功创build了WSO2泊坞窗图像。 我想用自定义的CSS文件运行它( wso2am:2.0.0 )。 我在做一些阅读,但我面临的问题。 当我执行docker run wso2am:2.0.0时,Docker镜像运行良好。 我在/home/me/Desktop/some-path复制了wso2am的目录结构,并将我的css文件放在适当的目录中。 我在Ubuntu 14下。 我面临两个问题: 我想在我的目录结构上运行我的wso2am映像,但是不会永久更改我的wso2am映像文件。 也就是说,如果我停止容器/图像,从我的目录结构中复制的文件是不是持久。 什么是确切的命令来执行? Docker文档经常提到-t -i作为访问容器的选项。 但是,当我启动docker run -it wso2am:2.0.0 bash ,我没有得到一个shell访问来探索我的容器的目录结构。 它只是转储所有的debugging语句(日志)。 为什么? 备注关于1.,似乎并不是继续下去的权利。 我应该复制我的Dockerfile并添加说明来复制我的额外文件,然后构build一个图像。

在docker构build期间执行configurationbash脚本

在docker build期间,我需要运行一个bash脚本,它设置了一些环境variables。 脚本看起来像这样: #!/bin/bash export ENVVAR=TEST export HOST=local export PORT=port 我尝试以不同的方式在我的dockerfile中调用这个脚本,但是他们都没有工作。 我试过这些: ADD ./myscript.sh RUN chmod +x /myscript.sh;\ /bin/bash -c 'source ./myscript.sh';\ /bin/bash -c 'source /myscript.sh';\ /bin/bash -c source ./myscript.sh;\ /bin/bash -c source /myscript.sh;\ source ./myscript.sh;\ source /myscript.sh;\ /myscript.sh;\ ./myscript.sh;\ ENTRYPOINT ["/bin/bash"] 当然,我在RUN中只有这些命令中的一个,我只是把它们分组在一起。 如果我运行容器,并使用source ./myscript.sh它按预期工作。 由于多种限制和其他原因,我不可能使用docker compose,-e参数,dockerfile中的ENV KEY VALUE或类似的方法。 我需要在docker构build过程中设置环境variables。

在连接到docker执行通过shell之后,mongo断开连接

在docker命令中执行以下命令后,我想closuresmongo shell: #!/bin/bash docker run -it –link sonams-mongo:mongo –rm mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"' if [ $? -eq 0 ]; then \ echo "connected to mongo successful"; \ else \ echo "mongo connection NOT successful"; \ fi; \ 当它连接到mongo中的shell提示符。 是否有一种方法可以在docker命令中或之后传递shell命令来执行退出操作? 谢谢

执行bash,然后在docker中运行命令

您可以使用在Docker容器中执行bash shell sudo docker exec -it container bash 但是我想要一个在容器中执行bash shell的命令,然后在bash提示符下执行更多的命令。 像这样的命令目前工作: sudo docker exec -it container touch test.txt | bash 但是,我想在bash提示符下运行的命令只能在docker容器中使用,所以我得到一个错误: No such file or directory 是否有可能使用docker exec执行一个在Docker容器本地的命令?