Tag: bash

docker图像通过terminal进行的更改不保存?

我能够运行以下命令并让我的terminal打开一个bashterminal,在那里我可以与我的docker映像进行交互: sudo docker run -i -t c5d3c4c383d1 /bin/bash 麻烦的是,当我在bashterminal中更改这个docker镜像,然后退出镜像时,镜像的更改不会保存。 我怎样才能做到这一点,所以我在bashterminal上所做的改变是为了这个形象而坚持下去的?

Laravel无法在队列中处理工作

对于初学者来说,这是我的Docker容器中的进程列表: /var/www/html # ps aux PID USER TIME COMMAND 1 root 0:00 {php-fpm.sh} /bin/sh /php-fpm.sh 6 root 0:02 /usr/sbin/crond 8 root 0:00 /sbin/syslogd -D -s 500 10 root 1:31 php /var/www/html/artisan queue:work –queue=mailer –sleep=3 –tries=3 11 root 0:00 /usr/bin/logger -t mailer 12 root 0:24 php-fpm: master process (/usr/local/etc/php-fpm.conf) 25 root 0:02 /usr/sbin/crond 30 root 0:01 […]

限制Docker容器中的cpu内核

我试图限制使用docker –cpuset-cpus选项的容器的CPU。 但由于某种原因,我没有得到理想的结果。 例如,下面的命令应该只打印1: docker run -it –cpuset-cpus=0 ubuntu:latest grep processor /proc/cpuinfo | wc -l 但是我得到的结果是4(4是我的主机中显示的cpus的数量)。 这对任何操作系统都是如此。 docker run -it –cpuset-cpus=0 centos grep processor /proc/cpuinfo | wc -l docker run -it –cpuset-cpus=0 alpine grep processor /proc/cpuinfo | wc -l Client: Version: 17.09.0-ce API version: 1.32 Go version: go1.8.3 Git commit: afdb6d4 Built: Tue Sep 26 […]

从bash脚本启动Docker容器并在其上执行命令

我有一个问题,使用他们的docker集装箱运行Fenics: 背景是:一个主虚拟机通过REST API与用户通信,并获得一个或多个任务在Fenics中进行计算。 Fenics在docker集装箱上运行。 现在,主虚拟机必须使用脚本编排不同的工作虚拟机。 例如:用户想要使用参数集x和y来计算网格A和B。 对于这两个工人,可以使用安装了Fenics容器的VM。 我怎样才能启动一个docker容器,并通过使用bash脚本传入参数? 在第一次尝试,我甚至不能使用脚本访问我自己的计算机上创build的容器,因为容器立即退出。 #!/bin/bash clear docker run -dit -v $(pwd):/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable:curre$ OUTPUT=$(docker ps -q | grep "$name") echo $OUTPUT docker exec -dit $OUTPUT /bin/bash docker exec -dit $OUTPUT echo "Hallo" docker exec -dit $OUTPUT mkdir test docker exec -dit $OUTPUT echo "Ciao" 如果我看着docker ps -a我只能看到退出的容器。 出现了两个问题:第一,这是传递命令的方式,第二,我如何保持容器运行? 可能很明显,我以前没有使用docker的经验,因此对任何帮助感激不尽。

docker工人组成卷“没有这样的文件或目录”

我是与docker工作的初学者,特别是docker工作者。 目前,创build我最初的简易docker环境,我遇到了第一个错误,我不知道为什么。 我试图在stackoverflowsearch解决scheme,但没有发现任何可以帮助我。 用“docker-compose up”启动我的docker我得到以下错误: $ docker-compose up 删除errorinstance_app_1 重新创build8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1 … 重新创build8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1 …错误 错误:对于8a358dfcb306_8a358dfcb306_8a358dfcb306_errorinstance_app_1无法启动服务应用程序:oci运行时错误:container_linux.go:265:启动容器进程导致“exec:\”./ run.sh \“:stat ./run.sh:没有这样的文件或目录” 错误:对于应用程序无法启动服务应用程序:oci运行时错误:container_linux.go:265:启动容器进程导致“exec:\”./ run.sh \“:stat ./run.sh:没有这样的文件或目录” 错误:提出项目时遇到错误。 所以。 遵循我的文件夹结构: 项目 泊坞窗,compose.yml docker Java的 Dockerfile SRC run.sh 在我的docker-compose.yml之后: version: '2' services: app: build: dockerfile: ./Docker/Java/Dockerfile context: . volumes: – ./src:/usr/local/etc/ working_dir: /usr/local/etc/ command: ./run.sh 并遵循我的docker文件: FROM java:7-jdk-alpine # WORKDIR /usr/local/etc run.sh […]

Docker Ubuntu环境variables

在我的docker图像的构build阶段,我想为每个后续的“运行”命令自动设置一些环境variables。 但是,我想从docker conatiner中设置这些variables,因为设置它们取决于一些内部逻辑。 使用dockerfile“ENV”命令并不好,因为不能依靠内部逻辑。 (它不能依赖docker容器内运行的命令) 通常(如果这不是docker)我会设置我的〜/ .profile文件。 但是,docker不会在非交互式shell中加载这个文件。 所以在他们这一刻,我必须运行每个docker运行命令: RUN bash -c "source ~/.profile && do_something_here" 但是,当我每次运行一个bash命令时都必须重复这个操作,这是非常单调乏味的。 是否有一些其他的“档案”文件,我可以用它来代替。

在bash脚本中激活virtualenv和envdir

我创build了一个dockerfile来安装virtualenv和virtualenvwrapper,以便在python3上运行。 FROM ubuntu:14.04 RUN apt-get update \ && apt-get install -y python3 python3-pip python3-dev \ && pip3 install –upgrade pip && apt-get install unzip # virtualenv stuff RUN mkdir -p /opt/virtualenvs ENV WORKON_HOME /opt/virtualenvs ENV VIRTUALENVWRAPPER_PYTHON /usr/bin/python3 # install pip stuff RUN pip3 install virtualenv virtualenvwrapper RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh \ && mkvirtualenv -p […]

docker工人出口多个容器

我正在使用以下命令一次导出多个容器。 –filter参数是可选的。 docker ps -a –format "{{.Names}}" –filter "name=tomcat-8" \ | xargs -I {} sh -c "docker export {} | gzip > {}.tar.gz" 展示任务进度的好方法是什么?

envvariables在运行容器中可见,但不能在bash脚本中插入

我在docker-compose中设置了一个envvariables,如下所示: cloud: build: context: foobar/. ports: – "5000:5000" depends_on: – redis – rabbitmq – postgresql links: – redis – rabbitmq – postgresql environment: – RABBITMQ_HOST=rabbitmq 我可以看到它在运行的容器中列出,我可以很好地回应它。 WORKON_HOME=/opt/virtualenvs VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHLVL=1 HOME=/root no_proxy=*.local, 169.254/16 LESSOPEN=| /usr/bin/lesspipe %s RABBITMQ_HOST=rabbitmq LESSCLOSE=/usr/bin/lesspipe %s %s _=/usr/bin/env 但是,当我尝试在运行容器中的configuration文件中使用它时,如下所示: amqp://guest:guest@${RABBITMQ_HOST} 然后我运行docker-compose,应用程序只是退出,因为它找不到RABBITMQ_HOSTvariables? 是什么赋予了? 我使用envdir像这样开始在一个bash脚本gunicorn服务器: envdir /apps/foobar/.envdir gunicorn -w 2 -b 0.0.0.0:5000 dispatch:app –reload […]

如何从docker容器中的bash检查.net核心dll的版本

我有一个运行.Net Core 1.x Web API的docker容器。 服务的打包方式存在问题,无法正常启动。 我可以通过shell进入 docker run -it –entrypoint /bin/bash my-image 在容器上运行docker export …我知道问题是Newtonsoft.Json.dll的错误版本,因为我能够在Windows 10上检查Newtonsoft.Json.dll的版本。 有没有一种方法,我可以检查我的bash提示符,而在我的docker集装箱的Newtonsoft.Json.dll的版本?