编辑如何在码头机上启动容器?
我提供了3台码头机器,并将两台作为工人加入到一台主机器上。然而,我的代码或服务似乎没有出现在机器中。如何在码头机上运行坞-组合文件?
通常,在开发过程中,我运行docker-compose up。但是,“停靠组合”在框中不可用。我不知道这台机器是在什么时候开始运行码头集装箱的,也不知道是怎么做到的。作为创建堆栈的一部分,我传递了docker-compose.prod.yml。echo docker stack deploy -c docker-compoe.prod.yml app。
这一切都是来自Heroku的新鲜事物。只是想知道这样做的唯一方法是将ssh放到每个框中,然后手动复制文件。
我希望能够docker-machine ssh host。然后在这个外壳里面能够docker-compose up。
如果我必须手动同步所有的脏文件,那么我想知道堆栈到底做了什么?
编辑
version: "3"
services:
api:
image: "api"
command: rails server -b "0.0.0.0" -e production
depends_on:
- db
- redis
deploy:
replicas: 3
resources:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
env_file:
- .env-prod
networks:
- apinet
ports:
- "3000:3000"
client:
image: "client"
depends_on:
- api
deploy:
restart_policy:
condition: on-failure
env_file:
- .env-prod
networks:
- apinet
- clientnet
ports:
- "4200:4200"
- "35730:35730"
db:
deploy:
placement:
constaints: [node.role == manager]
restart_policy:
condition: on-failure
env_file: .env-prod
image: mysql
ports:
- "3306:3306"
volumes:
- ~/.docker-volumes/app/mysql/data:/var/lib/mysql/data
redis:
deploy:
placement:
constaints: [node.role == manager]
restart_policy:
condition: on-failure
image: redis:alpine
ports:
- "6379:6379"
volumes:
- ~/.docker-volumes/app/redis/data:/var/lib/redis/data
nginx:
image: app_nginx
deploy:
restart_policy:
condition: on-failure
env_file: .env-prod
depends_on:
- client
- api
networks:
- apinet
- clientnet
ports:
- "80:80"
networks:
apinet:
driver: overlay
clientnet:
driver: overlay发布于 2017-08-16 06:53:29
你不会用一个码头来经营其他码头的。这不是作曲的用途。
您必须设置一个坞编写脚本,其中所有的机器都是"连系“,这样它们就可以互相交谈了。不管你做了什么,这取决于你想要运行的软件。(例如,如果一个主机必须使用其他节点,您将为主计算机提供一个配置文件,它将在哪里/如何找到节点)。
举个例子:
查看该文件中的我为我的麋鹿堆制作的文件,我声明了2台机器(Elasticsearch和Kibana),并将它们与(现在已被废弃的)链接在一起。(这种情况现在是半自动发生的,请参阅文档了解更多细节。)
然后,在kibana.yml文件(在第10行)中,我将Kibana机器指向Elasticsearch机器(使用它的docker-复合名称/链接名)。
这使得Kibana实例(假设这将是一个主机)能够与其各自的Elasticsearch实例(图像,这将是一个从机器)进行对话。
下面是你最后的陈述:
我希望能够对接机器ssh主机。然后里面的壳就可以对接-合成。
这在某种程度上是正确的,您可以使用以下命令访问Docker中的交互式(bash) shell:
docker exec --ti {ID/NAME of docker} /bin/bash这将不允许您运行坞-撰写,因为这肯定会导致臭名昭著的德罗斯特效应的变化:

图像源。
你的新问题
如果我必须手动同步所有的脏文件,那么我想知道堆栈到底做了什么?
不需要手动操作,您可以使用容器中的持久存储来访问来自其他文件夹的数据。基本上,您将分配一个本地文件夹来保存数据,然后将该文件夹“绑定”到停靠机器。从而允许码头工人自由访问数据。阅读文档获得更多信息。
对于堆栈,堆栈是在坞云中使用的,与坞-撰写脚本具有相同的一般用途。它确实提供了一些额外的部署选项,当您部署到对接云而不是单个对接实例时。同样,请阅读文档以获得更多信息。
你的对接者编辑
由于你最近的编辑,我觉得有义务深入到码头对接的事情更多的细节。
在码头上运行码头集装箱通常是不建议。不过,这是有可能的,甚至在码头客博客中也有它的特色。
不过,让我重申,您的用例需要同级容器,而不是嵌套容器。请再读一遍我的帖子,但要对兄弟姐妹容器的想法保持开放的心态。如果你对此有任何(具体的)问题,我会帮助你做得更好;)
设置一台“码头机”
设置码头可以做一千种方式,其中一种方式,我可以找到在这个github页面。
我为一位朋友写了那篇教程,它涵盖了对接机的安装和对接机的自动启动(同时使用了坞机运行和对接-组合)。
无论你愿意怎样,它在过去都为我服务得很好:
我强烈建议安装维护者来管理/检查容器。
https://stackoverflow.com/questions/45706432
复制相似问题