如何将Docker运行命令转换为Swarm命令?

我有一个运行我的Docker容器的设置。

run-docker.sh

docker build -t wordpress-gcloud container=$(docker run -d wordpress-gcloud) ipOfContainer=$(docker inspect "$container" | jq -r '.[0].NetworkSettings.IPAddress') 

但是现在我已经build立了一个Docker Swarm(1个经理+2个工人)。

我应该如何转换上面的bash脚本来运行群上的容器?

通常,您可以通过Swarm API访问Swarm集群,Swarm API与Docker API类似。 要访问Swarm API,可以在docker命令中使用-H参数。 例如,如果您的本地计算机上运行了swarm manager,并且端口号是3376,那么您可以通过以下方式获取swarm群集信息:

 docker -H 127.0.0.1:3376 info 

您还可以通过以下方式检查群集容器:

 docker -H 127.0.0.1:3376 inspect <container ID> 

有关与Swarm集群进行通信的更多详细信息,请访问: https : //docs.docker.com/swarm/install-manual/#/step-6-communicate-with-the-swarm

但在你的情况下,我认为docker build命令可能是一个问题。 在我的理解中,Swarm会从你的集群中find一个随机节点来执行这个docker的构build过程,所以如果dockerfile不存在于执行docker build的节点上,你将会得到错误信息。 我的想法是考虑在特定位置构build图像,然后将图像推送到图像registry ,然后在任何需要的位置拉出图像并运行。