我有一个接受作为参数的脚本;那么我的脚本必须根据这个参数创建一个具有多个端口映射的docker容器;例如,如果我跑。 /myscript.sh 10
,myscript.sh必须创建一个具有10个端口映射的Docker容器。取决于脚本参数的Bash多端口映射
这是我的myscript.sh
#!/bin/bash
NCACHES=$1
PORT_BASE=80
docker run -idt --name CONTAINER then..?
如果参数值,例如,如图5所示,我愿意的MyScript创建具有端口映射80,81,82,83,84的容器。我怎么能在bash脚本中管理这个条件?
参数值= 5时,预计会有:docker run -idt --name MYNAME -p 80:80 -p 81:81 -p 82:82 -p 83:83 -p 84:84
编辑:我已经尽我的脚本:
#!/bin/bash
echo $1
docker run -idt --name CONTAINER `for x in {80..$((80 + ${1}))}; do printf "-p ${x}:${x} "; done` pier92/balancer:latest
但这是输出:
./mapping.sh 5
5
./mapping.sh: riga 9: printf: -p: opzione non valida
printf: uso: printf [-v var] formato [argomenti]
75899b1ec4edab51530ad8c33e955a31a45fb946ecc6eb2fa3f1ba5b5537064a
[email protected]:~/Scrivania/setup-arch/webapp$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75899b1ec4ed pier92/balancer:latest "nginx -g 'daemon ..." 7 seconds ago Up 4 seconds 80/tcp, 443/tcp CONTAINER
只有映射端口80。
你如何将这些端口映射传递给'docker'? – Inian
与参数值= 5,它应该有:码头运行-idt - 名称MYNAME -p 80:80 -p 81:81 -p 82:82 -p 83:83 -p 84:84 – pier92
我认为是什么你现在问的是很容易改变一下代码,你应该自己尝试一下,这样你会学到更多! – criw