Tag: bash

如何快速切换Docker环境进行开发?

我有多个项目,我需要定期切换。 这些项目是通过docker-compose设置的,但有些需要外部容器可用。 所以为了在项目中运行docker-compose up -d ,我必须先切换到不同的目录,并在那里启动一些基本的服务容器(共享mysql,redis等实例)。 我不想并行运行所有容器,对于某些人来说,这是不可能的,因为他们在同一个端口上收听。 我也发现某些容器需要一个脚本才能在其中运行,以便在开发中正确运行,而且我发现自己为了切换到一个项目而重复执行相同的命令。 我认为这可以是自动的,我只是不确定如何解决这个问题。 我如何能够快速切换docker环境? 我的目标是只有一个class轮。

如何将环境variables设置为构build中的泊坞窗图像名称

当使用文件circle.yml文件来构build一个泊坞窗镜像时,我正在尝试传递一个环境variables$CIRCLE_PROJECT_USERNAME这样这个文件就没有特定的项目了。 不幸的是Docker使用标签参数-t失败: docker build -t CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:$CIRCLE_BRANCH . returned exit code 1 repository name component must match "[a-z0-9]+(?:[._-][a-z0-9]+)*" Action failed: docker build -t CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:$CIRCLE_BRANCH . Circle.yml文件: machine: environment: services: – docker dependencies: override: – docker info – docker build -t CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:$CIRCLE_BRANCH . test: override: – docker run -d $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:$CIRCLE_BRANCH deployment: hub: branch: master commands: – docker […]

使用shell脚本在Docker容器内运行脚本

我是新来的Docker技术,我正在尝试创build一个shell脚本来设置一个docker容器,我的脚本文件看起来像下面 #!bin/bash docker run -t -i -p 5902:5902 –name "mycontainer" –privileged myImage:new /bin/bash 运行这个脚本文件将在一个新调用的bash中运行容器。 现在我需要运行一个脚本文件(test.sh),它已经在上面给出的shell脚本的容器里了(例如:cd /path/to/test.sh && ./test.sh)请问怎么做随意问,如果情况不明确。

通过图像名称停止Docker容器,如果没有容器正在运行,请不要错误

这个问题解释了如何停止从映像启动的Docker容器。 但是,如果没有正在运行的容器,我得到的错误docker停止需要至less一个参数 。 这意味着我不能在一个很长的.sh脚本中运行这个命令而不会中断。 即使没有find结果,我如何更改这些命令来工作? docker stop $(docker ps -q –filter ancestor="imagname") docker rm `docker ps -aq` && (我正在寻找一个纯粹的Docker答案,如果可能的话,不是一个bashtesting,因为我通过SSH运行我的脚本,所以我不认为我有权访问正常的脚本testing)

docker exec命令的结果

我需要在我的shell脚本中知道一些docker exec命令的输出,例如我有一个nginx容器,并在我的脚本中运行: docker exec -it containerName /etc/init.d/nginx configtest 我只想在nginxconfigurationtesting成功时才继续执行脚本执行,而不是失败。 我试过使用$? ,但是即使在configtest输出失败的情况下也是0 (因为docker exec被成功执行,据我所知)。

Docker:RUN touch不会创build文件

在尝试debuggingDockerfile中的RUN语句时,我试图将输出redirect到绑定卷( ./mongo/log )中的文件。 令我惊讶的是,我无法通过RUN命令创build文件,或者使用redirect/附加( > , >> )操作符将另一个命令的输出传送到文件。 然而,我可以通过docker exec -ti mycontainer /bin/shlogin正在运行的容器并从那里发出命令来执行上述任务。 为什么会发生这种行为? 如何将Dockerfile / redirect输出中的文件与文件或运行Dockerfile的控制台联系起来? 这是我的Dockerfile: FROM mongo:3.4 #Installing NodeJS RUN apt-get update && \ apt-get install -y curl && \ curl -sL https://deb.nodesource.com/setup_6.x | bash – && \ apt-get install -y nodejs #Setting Up Mongo WORKDIR /var/www/smq COPY ./mongo-setup.js mongo-setup.js ##for testing […]

Docker容器无法看到串口设备

我正在尝试运行一个docker容器,以访问主机中的“serialport”。 这是我做的: 我使用MAC 在主机上安装驱动程序( http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41 ) 插入设备 运行返回/dev/tty.usbserial ls /dev/t* – 所以它工作 运行容器docker run -it –privileged -v /dev:/dev node:4.4.0 /bin/bash ,然后在容器里面的ls /dev/t*里面没有返回/dev/tty.usbserial设备… 我玩了很多不同的参数的变化,但还没有find工作之一:)另外, – 设备标志不适合我,因为该设备可能会重新连接,名称可能不同于/dev/tty.usbserial

docker-compose的环境variables在Jenkins里面

我有以下设置: jenkins环境运行docker-compose,但我需要将环境variables传递给yml文件: 示例docker-compose.yml version: '2' services: logon_server: build: . image: my_server:0.0.1 ports: – "9200:9200" command: ${DOCKER_CMD_EXEC} networks: – my_ntwrk networks: my_ntwrk: 当我从我的Mac上的shell提示符下运行以下脚本时,我可以传递不同的命令来执行,一切正常。 exec-tests.sh #!/bin/bash chmod 755 docker/exec-*.sh # Setup env variables export DOCKER_CMD_EXEC=/ci_e2e.sh # Optional: record current versions docker -v && docker-compose -v echo `whoami` echo `sudo -E -u admin printenv` # Build, deploy and […]

我怎样才能运行一个docker容器,并提交脚本完成后的变化?

我想设置一个cron作业来在Docker容器中运行一组命令,然后将更改提交到Docker镜像。 我可以运行容器作为守护进程,并使用此命令获取容器ID: CONTAINER_ID=$(sudo docker run -d my-image /bin/sh -c "sleep 10") 但是我在第二部分遇到了麻烦 – 一旦sleep 10命令完成,就会对图像进行更改。 有没有一种方法可以告诉我什么时候docker集装箱将要被杀死,然后再运行另一个命令呢? 编辑:作为替代,有没有办法通过在容器中的shell脚本来触发ctrl-pq离开容器运行,但返回到主机?

从Docker容器获取环境variables

从Docker容器中获取未在Dockerfile中声明的环境variables的最简单方法是什么 ? 例如,通过一些docker exec container /bin/bash会话设置的环境variables? 我可以做docker exec container env | grep ENV_VAR docker exec container env | grep ENV_VAR ,但我更喜欢的东西,只是返回值。 我已经尝试使用docker exec container echo "$ENV_VAR" ,但替代似乎发生在容器外,所以我没有从容器中获得env var,而是从我自己的计算机中获得env var。 谢谢。