Tag: shell

为什么不在MacOS中使用docker命令?

这是一个命令: docker-compose run –no-deps –rm php-bundle /bin/bash -c "useradd -u 501 docker && su -c 'phpunit tests' docker" 它适用于Linux(Ubuntu)。 但不是在MacOS上,用户,运行这个命令,落入terminal,这部分不起作用: "useradd -u 501 docker && su -c 'phpunit tests' docker" 如何解决这个问题?

使用docker文件执行shell脚本

我有一些tar文件,我想移动到泊坞窗图像,并在那里提取它们,然后运行python web应用程序脚本。 我有sh脚本来提取这些文件。 如果我使用RUN命令运行脚本,则它们会被解压缩,但它们不会出现在最终的容器中。 我也使用入口点,但它执行,然后closures容器不执行“主要Python脚本”。 有没有办法如何执行这个安装脚本,然后继续运行主脚本,而不是closures? Dockerfile # Use an official Python runtime as a parent image FROM python:2.7-slim RUN apt-get update \ && apt-get install -y curl \ && curl -sL https://deb.nodesource.com/setup_4.x | bash \ && apt-get install -y nodejs \ && apt-get install -y git \ && npm install -g bower \ && […]

Docker Toolbox上没有这样的文件或目录

有一个Windows操作系统,Docker工具箱和一个shell脚本文件。 从Docker Toolbox中运行: ./build.sh 结果是: / usr / bin / env:'python \ r':没有这样的文件或目录 试图把#!/c/Python27/python.exe放到shell脚本文件的顶部 – 没有结果。 有什么build议么? 编辑:已经尝试dos2unix修复回车 – 没有结果。 build.sh : #!/bin/bash mkdir -p build docker run \ –rm \ -v $(pwd):/shared \ -w /shared \ ${IMAGE_NAME} \ # ./pip2deb.py -r requirements.txt –output-directory build <– doesn't work python pip2deb.py -r requirements.txt –output-directory build <– […]

设置单个CLI来与多个容器连接?

我不是Docker专家,现在已经在这个问题上挣扎了好几个小时了 – 我有2个独立的图像 – 一个用于Python REPL,另一个用于Scheme REPL。 我想创build一个应用程序,提供一个包含2个运行图像的容器的CLI接口 – 这样,当我inputpython它连接到Python REPL容器并执行后面的所有内容。 而scheme连接到Scheme REPL容器。 我有2个问题 – a)使用Docker Compose可以吗? 另外,这是否真的有资格作为Docker Compose的用例? b)假设我从下面的裸机docker-compose.yml – version: '3.3' services: python: image: "python:3.6.2-alpine3.6" racket: image: "m4burns/racket" 如果我发出python或scheme命令,是否在另一个与另外两个通信的容器中设置了公共CLI(例如bash shell)? 我如何定义入口点? 我知道一个更简单的解决scheme就是制作一个Dockerfile,将Python&Scheme安装到一个图像中。 不过,我真的想把他们分开,因此正在走这条路。 任何帮助将不胜感激。

如何检查容器中的容器内存不足

我在主机上启动一个docker服务,每次启动一个容器进行一次testing。 我以前在testing结束时使用cmd以检查testing是否内存不足: dmesg | grep -F -e 'Out of memory' -e 'invoked oom-killer: gfp_mask=0x' -e ': page allocation failure: order:' 但我注意到,如果OOM在testing过程中,所有的testing运行后,它将成为OOM,因为OOM信息已经存在dmesg没有关机或重新启动。 我很难为每个testing分割dmesg信息,所以上面的cmd不能帮助。 cmd需要在容器中运行,因为它是完成testing的一个步骤。

Docker入口与REST API调用make守护进程

我有场景,我有一个Docker容器(Pid == 1)。 它在相同的容器中调用REST API,从而创build另一个subprocess。 不知何故儿童进程在后台丢失,其他容器无法通话。 基本上我需要让subprocess处理容器的主要过程。 Entrypoint.sh #!/usr/bin/env bash set -e PIDFILE="/var/run/mock.pid" /opt/mock/mock.init start #/sbin/start-stop-daemon –start –pidfile /var/log/mock_start.log \ –make-pidfile –startas mock_start.sh exec ./mock_start.sh mock_start.sh curl –request POST \ –url http://0.0.0.0:50007/8072 \ –header 'content-type: application/json' \ –data '{ "port":"8072" }' 我需要基本上是curl的subprocess,做父进程。 所以当我docker ps; 我应该能够看到容器运行。

从systemd处理(重新)启动Docker容器意外退出

我有一个docker集装箱。在linux服务器docker容器的重新启动过程中,因此在systemd中停止了脚本文件,为容器重新启动添加脚本文件。此脚本也停止了chef-client。 但是脚本只执行了一半的命令。我不知道为什么在主客户端停止之后它会停止。之后它不会继续。 重新启动脚本: [root@server01 user1]# more /apps/service-scripts/docker-container-restart.sh #!/bin/bash echo "Starting to stop the chef-client automatic running.." service chef-client stop echo "Completed the stopping the chef-client automatic running" echo "Restart check… the Applicaiton Container $(date)" IsAppRunning=$(docker inspect -f '{{.State.Running}}' app-prod) echo "IsAppRunning state $IsAppRunning" if [ "$IsAppRunning" != "true" ]; then IsAppRunning=$(docker inspect -f '{{.State.Running}}' app-prod) […]

在Bashvariables赋值中找不到命令错误

我有这个脚本叫做test.sh: #!/bin/bash STR = "Hello World" echo $STR 当我运行sh test.sh我得到这个: test.sh: line 2: STR: command not found 我究竟做错了什么? 我在网上看到极其基本的/初学者的bash脚本教程,这就是他们如何声明variables…所以我不知道我在做什么错了。 我在Ubuntu服务器9.10。 是的,bash位于/bin/bash 。

Docker Compose – 启动后自动启动shell脚本

我有一个docker-compsose.yml文件,用kml文件的共享文件夹启动postgis服务。 我也是一个脚本,可以导出我的postgis数据库中的所有这些kml。 不过我想在启动后自动这样做。 docker-compose如何读取该文件并在启动后运行shell命令? 谢谢你的帮助,我是使用Docker的新手。 version: '2' services: postgis: image: mdillon/postgis volumes: – ~/test/dataPostgis:/var/lib/postgresql/data/pgdata – ./postgresql:/docker-entrypoint-initdb.d – ./KML_Data:/var/lib/postgresql/data/KML_Data environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_PASSWORD: password POSTGRES_DB: db ports: – 5432:5432 pgadmin: image: chorss/docker-pgadmin4 ports: – 5050:5050 volumes: – ~/test/dataPgadminBackUp:/var/lib/postgresql/data/pgdata – ./scripts/pgadmin:/tmp/scripts links: – postgis depends_on: – postgis

如何使用shell脚本在dockerfile中设置环境variables的dynamic值

我的情况如下 我需要添加“项目”文件夹docker容器为生产build设,但对于开发生成我想将本地卷装载到容器的项目文件夹,例如。 ADD project /var/www/html/project 没有发展(我可以在开发中复制一个虚拟文件夹) 如果我将整个项目文件夹复制到开发中的容器中,那么项目文件夹中的任何更改都将使add命令之后的dockercaching器无效。 开发Docker镜像需要时间。 我想为这两个环境使用相同的docker文件 为了达到这个目的,我在docker文件中使用了ADD $PROJECT_DIR /var/www/html/project ,其中$ PROJECT_DIR是环境variables 在像ENV PROJECT_DIR project或ENV CONFIG_FILE_PATH dummy-folderdocker文件中设置环境variables将正确的文件ENV CONFIG_FILE_PATH dummy-folder添加到容器,但它需要我每次更改docker文件。 build造docker图像时,我也可以传递“build-arg”参数 docker build -t myproject –build-arg "BUILD_TYPE=PROD" –build-arg "PROJECT_DIR=project" . 由于variablesBUILD_TYPE和PROJECT_DIR是相关的,我想根据BUILD_TYPE设置CONFIG_FILE_PATHvariables。 这将防止我忘记更改一个参数的情况。 为了设置我写下的脚本“set_config_path.sh”的PROJECT_DIRvariables, if [ $BUILD_TYPE="PROD" ]; then PROJECT_DIR="project"; else PROJECT_DIR="dummy-folder"; fi 然后我使用dockerfile运行脚本 RUN . /root/set_project_folder.sh 这样做,set_project_folder.sh脚本可以访问BUILD_TYPEvariables,但PROJECT_DIR不反映在docker文件中 在本地机器的terminal上运行set_project_folder.sh时,PROJECT_DIRvariables被改变了,但是它不能和dockerfile一起工作 有无论如何,我们可以从子shell脚本更改环境variables,例如上面的问题中的“set_config_path.sh”? 如果可能的话,它可以在许多用例中使用,使dockerbuild设dynamic 我在这里做错了什么? 要么 有没有另外一个好方法来达到这个目的?