首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CMD或Dockerfile中运行两个命令

如何在CMD或Dockerfile中运行两个命令
EN

Stack Overflow用户
提问于 2014-07-30 06:56:00
回答 1查看 6K关注 0票数 2

Dockerfile生成器中,ENTRYPOINTCMD通过在back中使用/bin/sh -c运行一次。

有没有简单的解决方案可以在没有额外脚本的情况下在内部运行两个命令?

在我的示例中,我希望在jenkins从节点中的docker中设置停靠器,因此我将docker.sock传递到容器中,并且我希望更改由普通用户执行的权限,因此它应该在sshd命令之前完成。

正常情况类似于jenkins,它将通过ssh命令登录到容器中。

代码语言:javascript
复制
$ docker run -d -v /var/run/docker.sock:/docker.sock larrycai/jenkins-slave

larrycai/jenkins-slave Dockerfile中,我希望运行

代码语言:javascript
复制
CMD chmod o+rw /docker.sock && /usr/sbin/sshd -D

当前,jenkins被授予sudo权限,请参阅larrycai/jenkins-奴隶

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 19:11:08

我在詹金斯奴隶码头经营码头:

第一:我的奴隶知道跑码头。

第二:我准备了一个码头形象谁知道在码头运行码头。见一个dockerfile片段

代码语言:javascript
复制
RUN echo 'deb [trusted=yes] http://myrepo:3142/get.docker.io/ubuntu docker main' > /etc/apt/sources.list.d/docker.list
RUN apt-get update -qq
RUN apt-get install -qqy iptables ca-certificates lxc apt-transport-https lxc-docker
ADD src/wrapdocker /usr/local/bin/wrapdocker
RUN chmod +x /usr/local/bin/wrapdocker
VOLUME /var/lib/docker

第三:在这个从服务器中运行的jenkins作业包含一个.sh文件,其中包含一组命令来运行应用程序代码,如下所示:

代码语言:javascript
复制
export RAILS_ENV=test
# Bundle install
bundle install

# spec_no_rails
bundle exec rspec spec_no_rails -I spec_no_rails
bundle exec rake db:migrate:reset
bundle exec rake db:test:prepare
etc...

第四:使用这样的操作运行shell步骤作业

代码语言:javascript
复制
docker run --privileged -v /etc/localtime:/etc/localtime:ro -v `pwd`:/code myimagewhorundockerindocker /bin/bash -xec 'cd /code && ./myfile.sh'

-在码头经营码头所必需的特权

-v /etc/localtime:/etc/localtime:用于同步主机时钟和容器时钟的ro

-v pwd:/用于共享jenkins工作区的代码(应用程序代码),它以前是从/code容器中的VCS克隆的。

注意:如果您有服务依赖项,则可以使用图中类似的策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25030468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档