Docker Swarm新手咨询:能否在docker service create中使用自定义构建镜像?
使用自定义构建镜像创建Docker Swarm服务
完全没问题!你可以直接用自己构建的testing镜像来执行docker service create命令,不过得根据你的Swarm集群情况注意几个细节:
单节点Swarm集群场景
如果你的Swarm只有一个节点,直接运行docker service create [OPTIONS] testing就能正常工作——毕竟镜像已经存在于本地节点上了,Swarm调度时直接就能用到。多节点Swarm集群场景
这种情况要特别注意:Swarm里的其他工作节点必须能获取到这个testing镜像,否则服务调度到这些节点时会失败。你有两种可行的方案:- 把镜像推送到镜像仓库(公共的比如Docker Hub,或者你自己搭建的私有仓库都可以),然后创建服务时使用完整的镜像路径,比如
docker service create [OPTIONS] your-registry-address/testing:latest - 手动将镜像导出为tar包,拷贝到所有Swarm节点后再导入,但这种方式操作繁琐,后续镜像更新时维护成本很高,只适合临时测试场景。
- 把镜像推送到镜像仓库(公共的比如Docker Hub,或者你自己搭建的私有仓库都可以),然后创建服务时使用完整的镜像路径,比如
如果创建服务后遇到镜像拉取失败的问题,可以用docker service ps <你的服务名>命令查看服务实例的状态和错误信息,方便快速排查问题。
内容的提问来源于stack exchange,提问作者Seng Foong




