如何用docker exec运行2个命令

我需要用docker exec运行2个命令。 我正在从Docker容器中复制一个文件,不想处理凭据来使用类似ssh的东西。 这个命令复制一个文件: sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x 但是它创build了一个子目录var / log,我想避免这个,所以如果我可以在Docker容器中做这些,我应该是好的: cd /var/log ; tar -cv ./file.log 我怎样才能使docker执行运行2命令?

使用docker设置开发环境

我在为我的团队设置一个开发环境的docker时遇到了一些问题。 至今: 1)我用一个基本的图像来启动一个容器 docker run -t -i ubuntu:latest "/bin/bash" 2)我安装了所有的编译和构build工具3)我承诺这个图像,并将其推送到我们的本地docker服务器 docker commit e239ab… 192.168.10.100:5000/team-dev:beta 到现在为止还挺好。 现在,作为一名团队成员: 1)我拉我的电脑上的开发环境图像 docker pull 192.168.10.100:5000/team-dev:beta 2)我启动一个容器: docker run -t -i 5cca4… "/bin/bash" 在这一点上,我正在考虑将我的容器作为一种远程机器,我可以通过SSH进入和运行。 我尝试从容器内部做一个git clone ,但是由于公钥问题而失败了。 我手动将id_rsa *文件复制到docker中,并且克隆工作。 然后我尝试编辑一些源文件,但是我的vimconfiguration,bashconfiguration,一切都被抛弃了,因为这是一个全新的操作系统环境。 什么工作得很好是我的整个依赖版本化的生成环境。 这些是我想要帮助我解决这个问题的可能解决scheme。 1)拉出基本图像后,使用dockerfile将所有环境variables从主机添加到泊坞窗。 缺点:每次我的主机环境改变bash / vim / git我需要更新dockerfile 2)使用从主机到容器的卷。 Git克隆和编辑主机中的文件。 在Docker中运行构build脚本和编译。 缺点:如果需要,数据卷中的内容不能用于更新图像。 我不知道这是否是我应该关心的东西。 还是我以错误的方式接近?

在RHEL7上安装Docker CE 17.03

是否可以在RHEL7特定版本17.03上安装DockerCE? 这里有信息: https://docs.docker.com/engine/installation/linux/rhel/#install-using-the-repository关于在RHEL上安装Docker,但没有版本信息。 在这里与Docker 17.03,但只在Docker EE而不是Docker CE https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.0_Release_Notes/sect-Red_Hat_Enterprise_Linux-7.0_Release_Notes-Linux_Containers_with_Docker_Format-Using_Docker.html,但他们谈论了Docker v 0.12

如何将项目添加到.dockerignore?

我无法find一个.dockerignore文件应该是什么样子的很多例子。 使用puppet在Docker容器上安装一些包会导致图像从600MB扩展到3GB。 我试图使用.dockerignore文件来保持.dockerignore的大小 $ cat Dockerfile FROM centos:centos6 #Work around selinux problem on cent images RUN yum install -y –enablerepo=centosplus libselinux-devel RUN yum install -y wget git tar openssh-server; yum -y clean all Add Puppetfile / RUN librarian-puppet install RUN puppet apply –modulepath=/modules -e "class { 'buildslave': jenkins_slave => true,}" RUN librarian-puppet clean 如果我运行docker images […]

使用Ansible在OS X上运行docker任务的问题

我只是想告诉Ansible在我的OS X机器上build立一个docker镜像,这是我得到的错误: $ ansible-playbook main.yml PLAY [localhost] ************************************************************** GATHERING FACTS *************************************************************** ok: [localhost] TASK: [Build docker image from dockerfiles] *********************************** failed: [localhost] => {"changed": false, "failed": true} msg: ConnectionError(ProtocolError('Connection aborted.', error(2, 'No such file or directory')),) FATAL: all hosts have already failed — aborting PLAY RECAP ******************************************************************** to retry, use: –limit @/Users/ronny/main.retry localhost : ok=1 […]

为什么在写入标准输出时,PHP-FPM为前缀添加警告?

我尝试使用官方的php-fpm映像在Docker容器中运行基于Yii的PHP应用程序 。 Docker容器将所有日志消息写入stdout / stderr是很常见的做法。 所以我从我的容器中做了相同的代码,基本上看起来像这样: $fp = @fopen('php://stdout','w'); fwrite($fp, $message); fclose($fp); 不幸的是,PHP-FPM现在将我所有的日志消息加上丑陋的警告: [21-Mar-2016 14:10:02]警告:[pool www] child 12表示inputstdout:“2016-03-21 14:10:02 [xxxx] [ – ] [ – ] [trace] [yii \基地\应用程序::引导]引导用yii \debugging\模块:: bootstrap()“[21-Mar-2016 14:10:02]警告:[池www]孩子12说到标准输出:”2016-03-21 14:10:02 [xxxx] [ – ] [ – ] [info] [yii \ web \ Session :: open]会话开始“… 为什么是这样的,有没有办法阻止PHP-FPM做到这一点? 更新: 我也在docker-library / php项目网站上打开了一个问题 。 他们已经在其configuration中包含了catch_workers_output […]

启动新的Docker容器,每次运行新的Bamboo build并使用容器运行构build

我是Bamboo新手,正在尝试使用Bamboo和Docker来获取以下stream程: 开发人员将代码提交给Bitbucket分支 构build计划检测到更改 构build计划然后在安装了Docker的专用AWS实例上启动Docker容器。 在Docker容器中也启动了一个远程代理。 我使用atlassian/bamboo-java-agent:latest的atlassian/bamboo-java-agent:latest容器。 远程代理向Bamboo注册 构build计划的其余部分在容器中运行 计划完成后,容器和代理将被删除 我设置了testing构build计划,并在计划中我的第一个任务是启动一个Docker实例,如下所示: sudo docker run -d –name "${bamboo.buildKey}_${bamboo.buildNumber}" \ -e HOME=/root/ -e BAMBOO_SERVER=http://xxxx:8085/ \ -i -t atlassian/bamboo-java-agent:latest 第二个任务是获取源代码并进行部署。 第三项任务是testing,第四项任务是closures容器。 Bamboo上还有其他代理在线,我的构build计划有时使用那些而不是我作为构build计划的一部分而开始的Docker容器。 有没有办法让我做到这一点? 我希望这一切都是有道理的。 我真的是新的这一点,任何帮助将不胜感激。

在docker中使用ssh-agent

我想使用ssh-agent将我的密钥转发到docker映像,并从一个私人github回购。 我在优胜美地上使用https://github.com/phusion/passenger-docker稍微修改版本的boot2docker。 ssh-add -l …key details boot2docker up 然后我使用我在很多地方看到的命令(即https://gist.github.com/d11wtq/8699521 ): docker run –rm -t -i -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent my_image /bin/bash 但是,它似乎并没有工作: root@299212f6fee3:/# ssh-add -l Could not open a connection to your authentication agent. root@299212f6fee3:/# eval `ssh-agent -s` Agent pid 19 root@299212f6fee3:/# ssh-add -l The agent has no identities. root@299212f6fee3:/# ssh git@github.com Warning: Permanently added […]

获取正在进行的泊坞窗图像拉的状态

如何获取正在运行的docker pull过程的状态? 我尝试用sudo docker pull busybox 。 但没有地位正在显示。 在ctrl + c后发出另一个拉请求它说图像已被另一个客户端拉动。我也试图取消正在进行的拉,我不能在这里是关于这个问题的错误报告。 $sudo docker pull busybox Repository busybox already being pulled by another client. Waiting. 我如何显示正在进行的docker拉的进度?

我怎样才能让我的Docker撰写“等待它”脚本调用原始容器ENTRYPOINT或CMD?

根据控制Compose中的启动顺序 ,可以通过使用“ 等待它 ”脚本来控制Docker Compose启动容器的顺序。 脚本wait-for-it.sh既需要host:port参数,也需要脚本在端口可用时执行的命令。 文档build议Docker Compose使用entrypoint:选项来调用这个脚本。 但是,如果使用此选项,则容器将不再运行其默认entrypoint: ENTRYPOINT或CMD因为entrypoint:覆盖默认值。 如何能提供这个默认命令wait-for-it.sh以便脚本可以调用默认的ENTRYPOINT或CMD当它等待的条件满足? 在我的情况下,我已经实现了一个脚本wait-for-file.sh轮询等待文件存在: #!/bin/bash set -e waitFile="$1" shift cmd="$@" until test -e $waitFile do >&2 echo "Waiting for file [$waitFile]." sleep 1 done >&2 echo "Found file [$waitFile]." exec $cmd Docker Compose调用wait-for-file.sh作为派生自tomcat:8-jre8的稍微自定义容器的入口点tomcat:8-jre8 : platinum-oms: image: opes/platinum-oms ports: – "8080:8080" volumes_from: – liquibase links: – postgres:postgres – […]