酷!學園

技術討論區 => DevOps 討論版 => 主題作者是: duncanlo 於 2016-02-26 23:21

主題: [docker]一次執行多個指令
作者: duncanlo2016-02-26 23:21
用shell
代碼: [選擇]
docker exec mycontainer /path/to/test.sh

代碼: [選擇]
docker exec mycontainer /bin/sh -c "cmd1;cmd2;...;cmdn"
Ref:
代碼: [選擇]
http://stackoverflow.com/questions/31578446/running-a-script-inside-a-docker-container-using-shell-script
主題: Re: [docker]一次執行多個指令
作者: Yamaka2016-02-27 16:16
我也貼一下前陣子弄出來的結果

代碼: [選擇]
PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /bin/bash -c date; PIPS="192.168.1.244 192.168.1.242 192.168.1.16"; for ip in $PIPS; do (ping -W 10 $ip > /dev/null 2>&1 &); sleep 0.7s; done; ping 192.168.1.18 > /dev/null 2>&1
    8 ?        S      0:00 ping -W 10 192.168.1.244
   11 ?        S      0:00 ping -W 10 192.168.1.242
   14 ?        S      0:00 ping -W 10 192.168.1.16
   16 ?        S      0:00 ping 192.168.1.18
   17 ?        Rs     0:00 ps ax

目標是一個 container 裡同時跑多個 ping
而且每次 start 或 restart 都能直接跑出上面結果

試了好多方式,最後是用這個指令跑出來

代碼: [選擇]
$ sudo docker run -e TZ=Asia/Taipei ubuntu:14.04.3 /bin/bash -c 'date; PIPS="192.168.1.244 192.168.1.242 192.168.1.16"; for ip in $PIPS; do (ping -W 10 $ip > /dev/null 2>&1 &); sleep 0.7s; done; ping 192.168.1.18 > /dev/null 2>&1'
最後一個 ping 不能放背景,如果也丟背景
整個 container 就直接 exit
觀察 stats NET I/O 可以確認是否有在 ping

引用
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O
Ping_4_Servers       0.08%               741.4 kB / 33.72 GB   0.00%               459.1 kB / 455 kB   0 B / 0 B

主題: Re: [docker]一次執行多個指令
作者: duncanlo2016-02-28 22:09
有用nohup的,最後一行也要取消的樣子!
主題: Re: [docker]一次執行多個指令
作者: Yamaka2016-02-29 12:10
有試過用 nohup,不過無效,container 也是開啟後就直接 exit  :P