Tag: bash

Docker exec在bash脚本中

我通过bash脚本创builddynamicdocker容器: while getopts ":s:d:h" opt; do case $opt in s) for i in $(seq $2 $END); do docker run -dit –name=app_client_$i -d app:client docker exec -d app_client_$i $app_start done ;; … docker集装箱起步良好,但docker exec命令造成的问题。 当我尝试(没有-d )时: docker exec app_client_$i $app_start docker集装箱内的应用程序启动正常 – 但我附加到这个docker集装箱。 我想在后台启动泊坞窗容器内的应用程序,所以我使用-d参数: docker exec -d app_client_$i $app_start 由于该应用程序不在Docker容器内启动。 我错过了什么?

如何过滤docker客户端环境variables到docker运行命令?

假设在我的docker客户端机器上,我有以下的环境variables: myValA=B DOCKER_CONTAINER_VALUE_C=networksettingD myValE=F DOCKER_CONTAINER_VALUE_G=arbitrarySettingH 我想将这些值中的两个传入我正在运行的Docker容器中。 (包含DOCKER_CONTAINER的那些)。 现在我可以手动硬编码,如下所示: docker run -e DOCKER_CONTAINER_VALUE_C='networksettingD' -e DOCKER_CONTAINER_VALUE_G='arbitrarySettingH' –name container_name dockerhub_id/image_name 但是我想让这个过程自动化。 就像是: docker run -e ${env | grep "DOCKER_CONTAINER"} … 我的问题是: 如何筛选docker客户端环境variables到docker运行命令?

如何将几个Python脚本混合到一个shell脚本中?

我有一个本地存储库,现在我想将其部署到docker集装箱。 我想编写一个shell脚本来处理环境的设置。 shell脚本可能会按如下顺序做这样的事情: 1.安装virtualenv pip install virtualenv 2.build立一个名为new-env的新虚拟环境 virtualenv new-env 3.进入环境 cd new-env 4.activate source ./bin/activate 5.然后,我们需要安装依赖关系,使用pip freeze > requirements.txt输出的pip freeze > requirements.txt 。 注意我把这个文件放在根目录下。 所以: pip install -r ../requirements.txt 是否有可能将这些python脚本混合成一个shell脚本,以便我可以使用sh脚本进行设置? 谢谢。

Python – Docker客户端连接中的tlsv1警报协议版本错误

我使用Docker-py和dockerpty来exec使用Docker Python API的命令。 代码很简单: container = client.inspect_container(containerId)[0] dockerpty.exec_command(client, container, command) 当我想执行echo 'hello'这样的命令时,它工作正常。 但是,像/bin/bash这样的命令,即使我能够获取terminal,也会导致以下错误: ubuntu:test$ python main.py exec [containerid] /bin/bash root@so1:/opt/apache# Traceback (most recent call last): File "__main__.py", line 216, in <module> main() File "__main__.py", line 201, in main ec.execute() dockerpty.exec_command(client, container, command) File "/usr/local/lib/python2.7/site-packages/dockerpty/__init__.py", line 44, in exec_command PseudoTerminal(client, operation).start() File "/usr/local/lib/python2.7/site-packages/dockerpty/pty.py", line 334, in […]

如何在Dockerfile中设置命令历史logging

我正在本地运行docker容器来解决其状态。 我并不总是想执行RUN / ENTRYPOINT ,我经常想进入正在运行的容器,做一些事情,然后运行RUN / ENTRYPOINT 。 只要按下向上键就可以让ENTRYPOINT docker run bash之后, RUN / ENTRYPOINT将会非常方便。 所以我认为这将是很好,如果我可以在Dockerfile修改history -s …的历史history -s … 。 这样,只要我docker run bash ,我可以按下,并有RUN / ENTRYPOINT可用。 当我把这个在docker文件中,我得到这个错误: /bin/sh: 1: history: not found 有没有办法在Dockerfile中设置bash历史logging?

docker快速入门terminal – 叉:重试:没有subprocess

已安装的Docker Toolbox for Windows,但在运行Docker Quickstartterminal后,我得到错误: 机器信息: Windows 10 Home x64; Docker工具箱; Bash,Git安装;

如何到达docker-compose中的链接服务?

根据https://docs.docker.com/compose/compose-file/#links ,如果我指定docker-compose links下的另一个服务的名称,我应该能够达到该服务的主机名相同服务名称。 为了testing这个,我尝试了下面docker-compose.yml : version: '3' services: tor: build: ./tor use_tor: build: ./use_tor links: – tor tor和use_tor目录包含Dockerfile : . ├── docker-compose.yml ├── tor │ └── Dockerfile └── use_tor └── Dockerfile 对于tor : FROM alpine:latest EXPOSE 9050 RUN apk –update add tor CMD ["tor"] 和for use_tor : FROM alpine:latest CMD ["nc", "-z", "tor", "9050"] 但是,如果我执行docker-compose […]

在构build期间将别名添加到Docker

因为我正在编译一个容器的编译阶段的程序,所以我在包含.bashrc中的容器的编译过程中join了别名: RUN cat /path/to/aliases.sh >> ~/.bashrc 当我启动容器时,所有别名都可用。 这已经很好了,但不是我想要的行为。 我已经谷歌周围发现,.bashrc文件只加载时使用交互式的壳,而不是在容器的生成阶段的情况下。 我试图强制加载我的别名使用: RUN shopt -s expand_aliases 要么 RUN shopt -s expand_aliases && alias 要么 RUN /bin/bash -c "both commands listed above…" 令人惊讶的是没有达到预期的结果。 [/反讽] 现在我的问题:我怎样才能为容器的构build阶段设置别名? 问候

当运行postgres作为Docker服务时,“psql:fe_sendauth:没有提供密码”

我正在尝试使用以下docker-compose.yml运行以下Docker Compose多容器应用程序: version: '3' services: postgres: image: postgres environment: – POSTGRES_USER=iperuser – POSTGRES_PASSWORD=iperpassword – PGDATA=/var/lib/postgresql/data/apks – POSTGRES_DB=iper_apks alchemy: build: ./alchemy environment: – PGHOST=postgres – PGPORT=5432 – PGUSER=iperuser links: – postgres 我希望alchemy服务等待postgres准备接受使用wait-for-postgres.sh脚本的命令https://docs.docker.com/compose/startup-order/ : #!/bin/bash # wait-for-postgres.sh # From https://docs.docker.com/compose/startup-order/ set -e host="$1" shift cmd="$@" until psql -h "$host" -U "postgres" -c '\l'; do >&2 echo "Postgres […]

在Docker容器中的主要服务完全加载后运行bash脚本

我正在使用这个docker库来安装searchguard和searchguard searchguard需要在弹性search完全加载后运行脚本bin/init_sg.sh 。 我不喜欢每次重新创build容器时手动运行docker exec -it elasticsearch bin/init_sg.sh 。 我正在寻找在Dockerfile或docker-compose.yml中以编程方式执行的方式。 我现在的主要问题是finddockerfile中的主进程pid,并确保elasticsearch服务已完全加载。 任何人都可以给我build议如何做到这一点? 不成功的Dockerfile FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3 COPY config/ config/ COPY bin/ bin/ # Search Guard plugin # https://github.com/floragunncom/search-guard/wiki RUN elasticsearch-plugin install –batch com.floragunn:search-guard-5:5.6.3-16 \ && chmod +x \ plugins/search-guard-5/tools/hash.sh \ plugins/search-guard-5/tools/sgadmin.sh # Add your elasticsearch plugins setup here # Example: RUN elasticsearch-plugin install analysis-icu CMD bin/elasticsearch […]