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}
答案 0 :(得分:0)
我无法运行多个具有相同名称的容器。我可以在3个不同的端口上运行具有相同名称的docker服务。如果是,我需要在上面的shell文件中进行哪些修改?
这将是三个docker run
,每个使用相同的内部端口,但映射到不同的主机端口,具有三个不同的名称
docker run -p ${EXTERNAL_PORT_NUMBER1}:${INTERNAL_PORT_NUMBER} --name ${SERVICE_NAME1}
docker run -p ${EXTERNAL_PORT_NUMBER2}:${INTERNAL_PORT_NUMBER} --name ${SERVICE_NAME2}
docker run -p ${EXTERNAL_PORT_NUMBER3}:${INTERNAL_PORT_NUMBER} --name ${SERVICE_NAME3}
我想为服务执行LoadBalance
群组管理器使用入口负载平衡来公开您希望在群组外部提供的服务。
群组管理器可以自动为服务分配PublishedPort
,也可以为服务配置PublishedPort
。您可以指定任何未使用的端口。如果您未指定端口,则群组管理器会为服务分配30000-32767
范围内的端口。
示例:
以下命令将nginx容器中的端口80发布到端口8080,用于群中的任何节点
$ docker service create \
--name my-web \
--publish 8080:80 \
--replicas 2 \
nginx