【发布时间】:2017-11-20 13:05:24
【问题描述】:
- 我有在 Docker 容器中运行的节点服务
- 我正在使用 shell 脚本来运行这些服务
- 我想在 3 个不同的端口上运行同一服务的三个不同实例。说
9011 9022 9033 - 我还希望它以这样的方式配置它,即在每次新部署后它应该停止以前的服务并将其删除
- 我正在使用
docker rm test-service删除它,但它也会删除其他实例。 - 通过这种方法,实例只能运行一次。
有什么办法可以删除特定端口上运行的 Docker 服务。
这是我的 shell 脚本
#!/bin/bash
ORGANISATION="$1"
SERVICE_NAME="$2"
VERSION="$3"
ENVIRONMENT="$4"
INTERNAL_PORT_NUMBER="$5"
EXTERNAL_PORT_NUMBER="$6"
NETWORK="$7"
docker build -t ${ORGANISATION}/${SERVICE_NAME}:${VERSION} --build-arg PORT=${INTERNAL_PORT_NUMBER} --build-arg ENVIRONMENT=${ENVIRONMENT} --no-cache .
docker stop ${SERVICE_NAME}
docker rm ${SERVICE_NAME}
sudo npm install
sudo npm install -g express
docker run -p ${EXTERNAL_PORT_NUMBER}:${INTERNAL_PORT_NUMBER} --network ${NETWORK} --name ${SERVICE_NAME} --restart always -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}
【问题讨论】:
-
您能详细解释一下您的用例吗?这听起来很混乱/不必要的自动取款机。脚本也在运行容器,而不是服务?你能粘贴你的确切命令吗?
-
docker stop ${SERVICE_NAME} docker rm ${SERVICE_NAME}这些是命令。但它也会删除服务的另一个实例,因为我想知道是否有其他方法可以根据端口删除容器 -
但是你没有运行服务。服务是 Docker 中非常具体的东西。您正在运行的是容器,并且您不能运行超过 1 个具有相同名称的容器,因此您实际上不能按照您所说的去做。请粘贴您正在运行的整组命令,并在每个命令之后输出
docker ps。 -
我只运行 shell。从 shell 文件中它将运行容器。请参阅我在上面发布的 shell 文件中的命令。
-
正如你所说,我不能运行多个同名容器。我可以在 3 个不同的端口上运行同名的 docker 服务吗?如果是,我需要在上面的 shell 文件中进行哪些修改
标签: shell docker docker-compose docker-swarm