我可以通过docker容器中的env启动服务吗?
我有一些使用某些图像的容器,其中一部分在启动时不需要启动某些服务
所以我想dynamic启动一些服务,避免改变我的init.sh或dockerfile,并重新生成我的图像
所以我得到这个想法,当docker run
,我可以开始通过env服务,我尝试,但它不工作。
我知道我可以使用docker exec
启动服务,我想它开始,但是当我有这么多的服务启动,这是很难用这种方式
所以,我可以写命令环境variables启动服务,像这个docker run -e 'service rsyslog start' -ti container_id
或docker run --env-file=env-file -ti container_id
和像这个service rsyslog start
env文件
如何dynamic启动一些服务,避免更改我的dockerfile或添加图像?
docker背后的想法是每个容器都有一个进程/服务。
但看看https://docs.docker.com/engine/admin/using_supervisord/ ,把supervisord.conf
放在一个卷中,并使用docker exec ...
来启动/停止服务。
正如@mgansler提到的那样,Docker并不是真的被devise来做到这一点,至less不是最佳的。 您可能需要重新考虑您的应用程序环境,以便拥有某种智能控制器,根据config / envvariables根据需要调整Docker容器。
您也可以使用多个docker-compose文件来构build上下文环境并dynamic生成docker-compose up
命令,请参阅: https : //docs.docker.com/compose/production/
否则,更多以VM为中心的方法可能更适合,如Vagrant或类似的方法。
- 为什么不能合并泊坞窗图像?
- 未能执行目标com.spotify:docker-maven-plugin:1.0.0:build捕获的exception:basedir src / main / docker不存在
- Angular 2应用程序部署在AWS上运行的Docker容器中
- 在Docker容器中查找打开的套接字
- Docker日志中的Pythonexception标记为stream:stdout
- 将Hero和OpenCV的Docker应用部署到Heroku时,“找不到满足cv2 == 1.0要求的版本”
- 安装GeoIP模块,用于Docker的最新NGINX
- 在Docker容器中使用堆栈失败的Haskell安装:打开的文件太多
- DRONE_ADMIN用户的默认pipe理员密码是什么?