Tag: bash

使用docker运行容器时出错

我已经在我的机器上安装了docker,我可以成功地从存储库中拉出图像,当我看到拉出的图像列表时,清晰地列出了拉出的图像。 docker服务也开始使用 sudo service docker start 但是,当我尝试运行相同的命令, sudo docker run -it ubuntu:12.04 我收到以下错误 docker:来自守护进程的错误响应:容器命令'/ bin / bash'未find或不存在 这个问题仍然是我曾尝试过的任何图像相同这可能是这个问题的原因?

Bash脚本来设置Docker失败,但个别命令的工作

我创build了一个bash脚本来为Docker准备一个Ubuntu机器并安装Docker。 但是,在运行脚本时,其中一个sudo apt-get update命令会使脚本在Reading package lists…挂起很长一段时间(可能会永远)。 它是在命令“apt-cache policy docker-engine”之后的那个。 通过这个唯一的方法是按回车 ,这将使得sudo apt-get update继续。 我主要关心的是,当我手动运行这些命令时,它们工作正常,我没有遇到这个问题。 我只在遇到这个问题时才在.sh脚本中运行。 以下是脚本: sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee -a /etc/apt/sources.list.d/docker.list sudo apt-get update sudo apt-get purge lxc-docker apt-cache policy docker-engine sudo apt-get update echo […]

在Docker容器中的MySQL连接

这真让我抓狂 … 我正在Mac上用Docker构build一个简单的LEMP栈。 这是我的docker-compose文件: nginx: image: tutum/nginx ports: – "3333:80" links: – phpfpm – db volumes: – ./nginx/default.conf:/etc/nginx/sites-available/default – ./nginx/default.conf:/etc/nginx/sites-enabled/default – ./logs/nginx-error.log:/var/log/nginx/error.log – ./logs/nginx-access.log:/var/log/nginx/access.log phpfpm: build: ./phpfpm ports: – "9000:9000" volumes: – ./code:/usr/share/nginx/html db: image: mysql tty: true restart: always volumes: – /Users/mauo/local/mysql/data:/var/lib/mysql ports: – "3308:3306" environment: MYSQL_DATABASE: 'docker' MYSQL_ROOT_PASSWORD: 'root' MYSQL_USER: 'root' MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' […]

Docker中的variablescgroups参数

我与Docker合作设置cgroup有一个问题。 我有我自己的可运行的Docker镜像 docker run exp 但是我想要的是,每个想要运行我的图像的用户都必须在图像中的脚本运行之前设置cgroups参数。 我知道存在这样的东西: $ docker run -it -m 300M exp 但这不是我要找的。 我真正想要的是这样的。 如果用户input docker run exp 然后显示: inputcgroups参数 ,然后启动图像。 我真的想强迫用户input他自己的要求cgroups。 我真的不知道如何做到这一点。 我想过一些bash脚本,它在每个想要运行我的docker镜像的用户电脑的cgroup中创build新的组,但是我仍然不确定它是否可能。 我会很高兴的任何帮助。 谢谢。

用docker启动oracle:“TNS:listener:所有适当的实例阻塞新的连接”错误

我使用docker启动一个oracle容器。 容器启动正常,数据库出现,当我尝试运行一个maven命令加载一些sql文件,但是,我得到以下错误: [ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:dropAll (default-cli) on project edacm-se: Error setting up or running Liquibase: liquibase.exception.DatabaseException: java.sql.SQLException: Listener refused the connection with the following error: [ERROR] ORA-12528, TNS:listener: all appropriate instances are blocking new connections 但是,如果我有两个maven命令,一个首先丢掉,然后一个更新,第一个会失败,上面的消息,第二个将通过,所以这显然是一个等待oracle实例可用的问题。 接下来的问题是,如何才能知道Oracle泊坞窗容器实例中的TNS侦听器是否可用于远程请求? 这可以在一个shell脚本中完成吗? 我的oracle实例正在运行: f543a59dad62 oracle "/bin/sh -c '/usr/sbi" 22 minutes ago Up 22 minutes 8080/tcp, 0.0.0.0:49160->22/tcp, […]

执行sed命令到docker集装箱

我正在尝试更改Docker容器内的configuration文件。 docker exec container_name sed -ire '/URL_BASE = /c\api.myapiurl' tmp/config.ini 在本地执行此sed命令工作得很好,但是当我尝试在容器中执行此操作时,我收到以下错误消息。 sed: cannot rename tmp/config.ini: Operation not permitted 我需要做的是在将容器部署到我的服务器之前,从'config.ini'中replace'URL_BASE =' 。 我不知道为什么sed命令试图重命名文件,当它不假设。 有任何想法吗? 我试过了 我试图用–privileged标志执行,但没有奏效。 我试图用chmod来改变文件的权限,但是我不能以同样的权限为由。 docker exec –privileged container_name sed -ire '/URL_BASE = /c\api.myapiurl' tmp/config.ini Result: sed: cannot rename tmp/config.ini: Operation not permitted CHMOD docker exec –privileged container_name chmod 755 tmp/config.ini Result: chmod: changing […]

使用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()); […]

泊坞窗目前没有安装 – 在Windows 10上的Ubuntu的bash

我已经在Windows 10上的Ubuntu的bash安装docker: sudo apt-get install -y docker 但是当我尝试使用它时: docker -v 它给了我以下错误: The program 'docker' is currently not installed. You can install it by typing: sudo apt-get install docker 当我尝试重新安装时,我收到以下消息: docker is already the newest version. 更新: 看起来像这样安装docker的先决条件之一: https : //docs.docker.com/engine/installation/linux/ubuntulinux/它在我的专用ubuntu机器上工作是: your kernel must be 3.10 at minimum 而在Ubuntu 10上的Ubuntu是3.4 有没有办法更新这个?

执行时间未结束时从命令跳转

我有像下面的脚本“docker运行”开始,它将打开tty执行其根据docker文件的命令,大约需要5-6小时报告执行结束标志,但同时我需要让它做工作,并在shell脚本行中前进,并获得一些pid,并为它制定条件。 不,我的问题是,我不能执行“docker运行”,然后从它移动到其他脚本的行。 我怎么做,而不会影响“docker运行”命令。 docker run –name=something -it –rm \ –link=postgresql:postgresql \ –publish=80:80 \ –env='something_PORT=80' \ –env='NGINX_MAX_UPLOAD_SIZE=60m' \ –volume=/srv/docker/something:/home/something/data \ –volume=/srv/docker/something/rgloader:/home/something/rgloader \ something:3.3 \ app:backup:restore #30 sec pass till process starts to unpack tar file. sleep 30 #Get PID of tar extraction process PID=`ps au | grep "tar -xf" | head -n 1 | awk '{print […]

Docker进程挂起并被杀死

像这个话题一样,docker进程暂停并被杀死。 我的python项目运行bash脚本,其中的一个部分是运行R脚本,它从influxdb中提取数据,然后处理它。 当项目获得短时间的数据,例如1-5天时,这不是问题。 整个事情从几个星期的大时间框架开始。 它只是减慢,所以它需要年龄来产生任何东西(我检查日志),最终会被杀死。 R脚本可以取消大约25MB的数据,但70MB的数据并不那么容易。 难道Flask + bash + R会立即使用太多内存吗? 在Docker之外调用时,不会出现这样的问题 Dockerfile: FROM ubuntu # Install requirements fot the flask app RUN apt-get clean && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y \ python3 \ python3-pip \ r-base \ r-base-dev \ r-cran-rgl \ mutt \ git \ texlive-fonts-recommended # […]