作者 主題: [docker]一次執行多個指令  (閱讀 1338 次)

0 會員 與 1 訪客 正在閱讀本文。

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
[docker]一次執行多個指令
« 於: 2016-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

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4905
    • 檢視個人資料
    • http://www.ecmagic.com
Re: [docker]一次執行多個指令
« 回覆 #1 於: 2016-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


duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
Re: [docker]一次執行多個指令
« 回覆 #2 於: 2016-02-28 22:09 »
有用nohup的,最後一行也要取消的樣子!

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4905
    • 檢視個人資料
    • http://www.ecmagic.com
Re: [docker]一次執行多個指令
« 回覆 #3 於: 2016-02-29 12:10 »
有試過用 nohup,不過無效,container 也是開啟後就直接 exit  :P