技術討論區 > DevOps 討論版

[docker]一次執行多個指令

(1/1)

duncanlo:
用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:
我也貼一下前陣子弄出來的結果


--- 代碼: ---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:
有用nohup的,最後一行也要取消的樣子!

Yamaka:
有試過用 nohup,不過無效,container 也是開啟後就直接 exit  :P

導覽

[0] 文章列表

前往完整版本