Moby: ๊ธฐ๋ณธ "docker ps" ์ถœ๋ ฅ์ด ๋„ˆ๋ฌด ๋„“์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2014๋…„ 08์›” 08์ผ  ยท  83์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moby/moby

screenshot 2014-08-07 16 27 38

docker ps ์ถœ๋ ฅ์€ 80์ž ๋„ˆ๋น„์˜ ํ„ฐ๋ฏธ๋„์—์„œ ์ฝ๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

/bin/ps ๋Š” ์ข์€ ํ„ฐ๋ฏธ๋„์—์„œ ์ถœ๋ ฅ์„ ๋ž˜ํ•‘ํ•˜๋Š” ์ž‘์—…์„ ๊ฝค ์ž˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋จผ์ € ๋„ฃ๊ณ , ๋งˆ์ง€๋ง‰์— ๋ช…๋ นํ•˜๊ณ , ์ž˜๋ฆผ). ์šฐ๋ฆฌ๊ฐ€ ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

arecli exbeginner kinenhancement kinfeature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ˜ธ์ถœ๊ธฐ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

docker ps | less -S

๋ชจ๋“  83 ๋Œ“๊ธ€

๋งŽ์€ ์‚ฌ๋ž‘๊ณผ ๋งŽ์€ +1. ๋‚˜๋Š” 80x24 ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ๋™๋ฃŒ๋“ค) ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๊ฝค ์˜ค๋žซ๋™์•ˆ ๋‚˜๋ฅผ ์•ฝ๊ฐ„ ์ž๊ทนํ–ˆ์Šต๋‹ˆ๋‹ค.
์‹œ๊ฐ.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‚˜์—๊ฒŒ๋„ ์ž์ฃผ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•œ๋‹ค.

์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋” ์ข์€ ํ„ฐ๋ฏธ๋„์— ๋” ์ž‘์€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ID๋Š” ์‹ค์ œ๋กœ ๊ฑฐ๊ธฐ์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฑด ์–ด๋•Œ์š”:

NAME               IMAGE              STATUS      PORTS             COMMAND
prickly_perlman    ubuntu:14.04       Up 15s      8000->8000/tcp    sleep 30000

์„ค๋ช…:

  • ์ปจํ…Œ์ด๋„ˆ์—๋Š” ํ•ญ์ƒ ์ด๋ฆ„์ด ์žˆ์œผ๋ฏ€๋กœ ID๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ด๋ ค ์žˆ๋Š” ๋ชจ๋“  ํฌํŠธ์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์•„๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•ด ๋ณด์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ๋ช…๋ น์€ /bin/ps ์™€ ๊ฐ™์ด ํ„ฐ๋ฏธ๋„ ๋„ˆ๋น„๋กœ ์ž˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@bfirsh :thumbsup: ์ด ๋ฉ”๋ชจ์™€ ํ•จ๊ป˜;

  • ํฌํŠธ๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์–ด๋–ค ํฌํŠธ๊ฐ€ ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€
  • --no-trunc , ์ด์ œ ์ปจํ…Œ์ด๋„ˆ ID๊ฐ€ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๋Š” ๋งŽ์€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • (๊ธฐ๋ณธ) ์ •๋ ฌ ์ˆœ์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ƒ์„ฑ ๋‚ ์งœ(ํ•ด๋‹น ์—ด์ด ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋…ผ๋ฆฌ์ ์ด์ง€ ์•Š์Œ)? ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์— ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ?
  • ํ–ฅํ›„ ๊ฐœ์„ ์„ ์œ„ํ•ด; ํ‘œ์‹œํ•˜๊ณ  ์ •๋ ฌํ•  ์—ด ์ง€์ • ํ—ˆ์šฉ(์˜ˆ: --columns=a,f,g --sort=a,e
  • ํ–ฅํ›„ ๊ฐœ์„ ์„ ์œ„ํ•ด; ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ํ‘œ์‹œํ•˜๊ณ  ์ •๋ ฌํ•  ์—ด์„ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํ–ฅํ›„ ๊ฐœ์„ ์„ ์œ„ํ•ด; ๊ธฐ๋ณธ ํ•„ํ„ฐ ์˜ต์…˜ ์„ค์ • ํ—ˆ์šฉ(๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ํ‘œ์‹œ/ํ‘œ์‹œ ์•ˆํ•จ( -a ))

ํ˜ธ์ถœ๊ธฐ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

docker ps | less -S

@benjamin-thomas ๋˜๋Š” docker ps ๋Š” TTY๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ less -S ๋กœ ํŒŒ์ดํ•‘ํ•ฉ๋‹ˆ๊นŒ?

์ข‹์€ ํŠธ๋ฆญ @benjamin-thomas , ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฏธ๋ž˜์— ํ™•์‹คํžˆ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ •๋ณด์ธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ƒ๋žตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ CREATED ๋ฐ STATUS ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

IMO ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ STATUS ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ฌ์ „ํžˆ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ๋˜๋Š” 'ํ›„ํ›„์‹œ'๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๋Š” ๋ฐ _is_ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ps ์ถœ๋ ฅ์˜ ๋Œ€๊ทœ๋ชจ ์žฌ๊ตฌํ˜„์ด ๋˜์–ด์•ผ ํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ข€ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•˜์—ฌ ํ‘œ์‹œํ•  ์—ด์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋” ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก _start_ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ ํ•„ํ„ฐ๋ง.

@nathanleclaire , less ์•ˆ์— ์žˆ์œผ๋ฉด ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋‹น์‹ ์„ ์˜คํ•ด ํ–ˆ์Šต๋‹ˆ๊นŒ?

@grahamc ์™œ

@thaJeztah ์Šค์œ„์น˜๋กœ ์—ด ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์‹œ์Šคํ…œ ps ๋ช…๋ น /bin/ps -o pid,ruser=RealUser -o comm=Command ์ฒ˜๋Ÿผ ๋‚˜์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@benjamin-thomas ์˜ค, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊นจ๋‹ซ์ง€๋„ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ‹์ง„! ๋‚˜๋Š” ์ด ์†”๋ฃจ์…˜์„ ์•„์ฃผ ์ข‹์•„ํ•œ๋‹ค.

@benjamin-thomas /bin/ps ๋Š” ์ด ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด cat ํ†ตํ•ด ํŒŒ์ดํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker ps ์ถœ๋ ฅ ๋„ˆ๋น„ ๊ด€๋ จ: ์ฃผ์–ด์ง„ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์—ฐ๊ฒฐ ์ฒด์ธ์„ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒˆ ์ด๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด A, B, C, D, E๋ผ๋Š” ์ด๋ฆ„์˜ 5๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๊ณ  A๊ฐ€ B์— ์—ฐ๊ฒฐ๋˜๊ณ  B๊ฐ€ C์— ์—ฐ๊ฒฐ๋˜๋Š” ์‹์ด๋ผ๋ฉด E๋Š” E, D/E, C/๋ผ๋Š” 5๊ฐœ์˜ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. D/E, B/C/D/E ๋ฐ A/B/C/D/E.

๊ทธ๋Ÿฐ ๋‹ค์Œ B๋„ D์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ E๋Š” B/D/E ๋ฐ A/B/D/E์™€ ๊ฐ™์€ ๋” ๋งŽ์€ ์ด๋ฆ„์„ ์–ป์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด 17๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ชจ๋‘ 31๊ฐœ์˜ ์ข…์†์„ฑ ๊ด€๊ณ„๋กœ ์ธํ•ด _387๊ฐœ์˜ ์ด๋ฆ„์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์•„๋ฌด๋ฆฌ ๋„“๊ฒŒ ๋งŒ๋“ค์–ด๋„ ํ˜ธ์ถœ๊ธฐ๊ฐ€ ์—†์œผ๋ฉด docker ps ์˜ ์ถœ๋ ฅ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ˆ˜์—์„œ ์ด๋ฆ„ ์ˆ˜๊ฐ€ _2์ฐจ๋ณด๋‹ค ๋” ๋‚˜์˜๋‹ค๋Š” ๊ฒƒ์ด ์ •๋ง ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ํ˜„ํ•™์  ์ˆ˜์ค€์˜ ์—ด๊ฑฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ ์–ด๋„ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mraccident :+1: docker ps ๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชจ๋“  ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ ์ด๋ฆ„๋งŒ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Salut, ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ๊ดด๋กญํžˆ๊ณ  ์žˆ์—ˆ๊ณ  ๋ฐฉ๊ธˆ ๋„์ปค์— '--short'์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํ•œ ํฌํŠธ ์—ด์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/ChristianKniep/docker/tree/7477-short_ps

$ docker run --name fd1 -d -p 80 -p 22 -p 53 fedora sleep 600
af6599f9b1178b237f6c2524f14cada45a46b234168e5270b99b16d1ce0be295
$ docker run --name fd2 --link fd1:fd1  -d -p 80 -p 22 -p 53 fedora sleep 600
ec2b2afc72dae7e62b197dc5adbcdeb548435ac495b8c935c728eb7aff658004
$ docker run --name fd3 --link fd2:fd2  --link fd1:fd1  -d -p 80 -p 22 -p 53 fedora sleep 600
ac57921063cc6afbe1cf715872dc33df45147ef1f464859c0912261b88e6bb4b
$ docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                                                                 NAMES
ac57921063cc        fedora:latest   sleep 600           3 seconds ago       Up 2 seconds        0.0.0.0:49159->22/tcp, 0.0.0.0:49160->53/tcp, 0.0.0.0:49161->80/tcp   fd3                               
ec2b2afc72da        fedora:latest   sleep 600           11 seconds ago      Up 10 seconds       0.0.0.0:49156->22/tcp, 0.0.0.0:49157->53/tcp, 0.0.0.0:49158->80/tcp   fd2,fd3/fd2                       
af6599f9b117        fedora:latest   sleep 600           31 seconds ago      Up 30 seconds       0.0.0.0:49153->22/tcp, 0.0.0.0:49154->53/tcp, 0.0.0.0:49155->80/tcp   fd1,fd2/fd1,fd3/fd1,fd3/fd2/fd1                    
$ ./docker-1.1.2-dev ps -S
CONTAINER ID        IMAGE                       PORTS                                                                 NAMES
ac57921063cc        fedora:latest   0.0.0.0:49159->22/tcp, 0.0.0.0:49160->53/tcp, 0.0.0.0:49161->80/tcp   fd3                               
ec2b2afc72da        fedora:latest   0.0.0.0:49156->22/tcp, 0.0.0.0:49157->53/tcp, 0.0.0.0:49158->80/tcp   fd2,fd3/fd2                       
af6599f9b117        fedora:latest   0.0.0.0:49153->22/tcp, 0.0.0.0:49154->53/tcp, 0.0.0.0:49155->80/tcp   fd1,fd2/fd1,fd3/fd1,fd3/fd2/fd1             
$ ./docker-1.1.2-dev ps -h

Usage: docker ps [OPTIONS]

List containers

  -a, --all=false       Show all containers. Only running containers are shown by default.
  --before=""           Show only container created before Id or Name, include non-running ones.
  -f, --filter=[]       Provide filter values. Valid filters:
                          exited=<int> - containers with exit code of <int>
  -l, --latest=false    Show only the latest created container, include non-running ones.
  -n=-1                 Show n last created containers, include non-running ones.
  --no-trunc=false      Don't truncate output
  -q, --quiet=false     Only display numeric IDs
  -S, --short=false     Skip command created and status
  -s, --size=false      Display sizes
  --since=""            Show only containers created since Id or Name, include non-running ones.
$

๋‚˜๋Š” ๋‰ด๋น„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ฝ”๋“œ๊ฐ€ ... ์ตœ์ ํ™” ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ...
๊ทธ๋Ÿฌ๋‚˜ 1๋…„ ๋™์•ˆ ํŒŒ์ด์ฌ ์‚ฌ์šฉ์ž๋กœ์„œ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š”!

ํŽธ์ง‘ : ์•„๋งˆ๋„ ํ„ฐ๋ฏธ๋„์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์—ด์„ ์ œ๊ฑฐํ•˜์—ฌ ์ค„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

EDIT2: fd3->fd2->fd1๋„ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์ง€๋งŒ NAMES๋ฅผ ์ค„์ด๊ณ  count(CHILDREN)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ ~/bin/docker-1.1.2-dev ps -S
CONTAINER ID        IMAGE                       PORTS                                                                 NAME                #CHILDREN
9b382826657c        fedora:latest   0.0.0.0:49168->22/tcp, 0.0.0.0:49169->53/tcp, 0.0.0.0:49170->80/tcp   fd3                 0
93f5a7b13d8b        fedora:latest   0.0.0.0:49165->22/tcp, 0.0.0.0:49166->53/tcp, 0.0.0.0:49167->80/tcp   fd2                 1
4c6f3564612c        fedora:latest   0.0.0.0:49162->80/tcp, 0.0.0.0:49163->22/tcp, 0.0.0.0:49164->53/tcp   fd1                 3

EDIT3: ์ด์ œ ์˜ฌ๋ฐ”๋ฅธ ์ด๋ฆ„์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

$ ./docker-1.1.2-dev ps -S
CONTAINER ID        IMAGE                       PORTS                                                                 NAME                #LINKS
71d9d03bba50        fedora:latest   0.0.0.0:49177->22/tcp, 0.0.0.0:49178->53/tcp, 0.0.0.0:49179->80/tcp   fd3                 0
cf67008f418f        fedora:latest   0.0.0.0:49174->22/tcp, 0.0.0.0:49175->53/tcp, 0.0.0.0:49176->80/tcp   fd2                 1
5549c65007b5        fedora:latest   0.0.0.0:49171->22/tcp, 0.0.0.0:49172->53/tcp, 0.0.0.0:49173->80/tcp   fd1                 3

ํฌํŠธ ์ •์˜์™€ ์‹œ๊ฐ„์˜ ์žฅํ™ฉํ•จ์ด docker ps ์ถœ๋ ฅ ๋„ˆ๋น„์˜ ํฐ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ณ  ํฌํŠธ ์ •์˜๋ฅผ ์ค„๋กœ ๊ฐ์‹ธ๋ฉด ๋งŽ์€ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์—ด์„ ์„ ํƒ/์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์™ธ์—๋„).

CONTAINER ID     IMAGE                 COMMAND                CREATED     STATUS              PORTS                            NAMES
8a2e6a22ae1f     me/abc-data:latest    "/bin/sh -c bash"      6 sec       Exited (0) 6 sec                                     app-without-ports
749ed051fb73     me/webserver:latest   "/opt/server/run.sh"   4 days      Up 4 days           0.0.0.0:8080->8080/tcp,          my-webserver
                                                                                              192.168.1.1:9990->9990/tcp      
2eb3c43af24f     me/app:latest         "/opt/container-star   8 days      Up 8 days           0.0.0.0:1234->1234/tcp,          some-other-app
                                                                                              0.0.0.0:4567->4567/tcp, 
                                                                                              0.0.0.0:50000->50000/tcp, 
                                                                                              0.0.0.0:50000->50000/udp  

์˜ˆ๋ฅผ ๋“ค์–ด columname:width :modifier, columname:width :modifier, ...๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ DOCKER_PS_FORMAT ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ ?
์—ฌ๊ธฐ์„œ modifier ๋Š” no-trunc , full (์˜ˆ: ์ปจํ…Œ์ด๋„ˆ ID) ๋˜๋Š” short ๋Œ€ํ•ด CREATED short ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์„ค์ •์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค full ์—ฌ๊ธฐ์„œ ~1h ๋Š” About an hour ago ์˜ ์•ฝ์‹์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker ps ์ถœ๋ ฅ์„ ๋” ์ž˜ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ด bash/zsh ํ•จ์ˆ˜๋ฅผ ~/.bashrc ์— ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ด์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์žฌ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dps()  {
  docker ps $@ | awk '
  NR==1{
    FIRSTLINEWIDTH=length($0)
    IDPOS=index($0,"CONTAINER ID");
    IMAGEPOS=index($0,"IMAGE");
    COMMANDPOS=index($0,"COMMAND");
    CREATEDPOS=index($0,"CREATED");
    STATUSPOS=index($0,"STATUS");
    PORTSPOS=index($0,"PORTS");
    NAMESPOS=index($0,"NAMES");
    UPDATECOL();
  }
  function UPDATECOL () {
    ID=substr($0,IDPOS,IMAGEPOS-IDPOS-1);
    IMAGE=substr($0,IMAGEPOS,COMMANDPOS-IMAGEPOS-1);
    COMMAND=substr($0,COMMANDPOS,CREATEDPOS-COMMANDPOS-1);
    CREATED=substr($0,CREATEDPOS,STATUSPOS-CREATEDPOS-1);
    STATUS=substr($0,STATUSPOS,PORTSPOS-STATUSPOS-1);
    PORTS=substr($0,PORTSPOS,NAMESPOS-PORTSPOS-1);
    NAMES=substr($0, NAMESPOS);
  }
  function PRINT () {
    print ID NAMES IMAGE STATUS CREATED COMMAND PORTS;
  }
  NR==2{
    NAMES=sprintf("%s%*s",NAMES,length($0)-FIRSTLINEWIDTH,"");
    PRINT();
  }
  NR>1{
    UPDATECOL();
    PRINT();
  }' | less -FSX;
}
dpsa() { dps -a $@; }

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํ•ดํ‚น. ์œ ์ง€ํ•˜๋ ค๋Š” $cols[x]๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

docker ps | perl -ne '<strong i="6">@cols</strong> = split /\s{2,}/, $_; printf "%30s %20s %20s\n", $cols[1], $cols[3], $cols[4]'

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋” ์‰ฝ์ง€ ์•Š์„๊นŒ์š”?

$ docker ps --columns=name,id,status,image

๋ชจ๋‘ docker ps ๋ณ„์นญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@caiguanhao ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฆฌํ•œ ์ž„์‹œ ์†”๋ฃจ์…˜. ๋ฌผ๊ณ ๊ธฐ ๊ป๋ฐ๊ธฐ์— ๋Œ€ํ•œ ํƒœํด ํ”Œ๋Ÿฌ๊ทธ์ธ ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ํ‘œ์‹œํ•  ์—ด์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก @caiguanhao ์˜ ์ฝ”๋“œ๋ฅผ ์•ฝ๊ฐ„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํฌํŠธ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: 5 ๋˜๋Š” 6๊ฐœ์˜ ํฌํŠธ๋ฅผ ๋…ธ์ถœํ•˜๊ณ  300์ž ๋„ˆ๋น„์˜ ํ™”๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” Consul ์„œ๋น„์Šค) ํ•ด๋‹น ํฌํŠธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์—ด์„ ํ‘œ์‹œํ•˜๋Š” ๋ช…๋ น์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ปจํ…Œ์ด๋„ˆ์™€ ํ•ด๋‹น ํฌํŠธ์˜ ์ด๋ฆ„๋งŒ ํ‘œ์‹œํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜(์ด ์˜ต์…˜์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ ๋ช…๋ น์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค):

https://github.com/jpmelos/dotfiles/commit/457a9c68f87eb5bd455aa22bdadab81c2651c2ea

์•ฝ๊ฐ„์˜ ๋„์›€์ด ๋  ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋Š” CONTAINER ID์™€ IMAGE ์—ด ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์—ด์€ ๋ชจ๋‘ 3๊ฐœ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์ง€๋งŒ ์ด ๋‘ ์—ด์€ 8๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

'docker ps'๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ 5์„ผํŠธ:

https://github.com/t0mk/dosk#dops

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์–ด๋–ค ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๊นŒ?
docker ps ๋Š” ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ํ‘œ์‹œํ•  ์—ด์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
(๋‚˜๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์„ ๊ธฐ๋Œ€ ํ•œ๋‹ค )

๋ˆ

@AntouanK๊ฐ€ ๋งํ–ˆ๊ณ  @wpp๊ฐ€ ์ด๋ฏธ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์—ด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.

#10255 ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@duglin ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด ๋” ์งง์•„์ง‘๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด๊ฒƒ์„ ์—ด์–ด๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@bfirsh ์ข‹์€ ์ , ์•„๋‹ˆ์š” ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ v2๊นŒ์ง€ ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•˜๋ฉด ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์†์ƒ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€. ENV['COLUMNS']์— ์ž„๊ณ„๊ฐ’์„ ์ ์šฉํ•˜์—ฌ ํ‘œ์‹œ๋˜๋Š” ๊ธฐ๋ณธ ์—ด์„ ์„ ํƒํ•˜๋Š” ์ง€๋Šฅํ˜• ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

https://github.com/docker/docker/issues/7477#issuecomment -70243594์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ด์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜๋งŒ ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ https://github.com/docker/docker/issues/7477#issuecomment -70243594 ์˜ต์…˜์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค.
docker ps ๋Š” docker ps --columns=id,image,command,created,status,ports,name ์ด๊ณ  ์ผ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ip ์™€ ๊ฐ™์€ ๋” ๋งŽ์€ ์—ด์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/docker/docker/issues/8786

--์—ด์˜ ๊ฒฝ์šฐ +1

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ docker ps -q ์™€ docker inspect --format .

docker ps -q | xargs docker inspect --format '{{printf "%.12s\t%s" .Id .Config.Cmd}}'

docker inspect ๋ฐ golang ํ…œํ”Œ๋ฆฟ์˜ ์ถœ๋ ฅ์„ ํŒŒํ—ค์ณ์•ผ ํ•˜์ง€๋งŒ ๊ฑฐ์˜ ๋ฌดํ•œ๋Œ€๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jafcrocker ๋ฉ‹์ง€๋„ค์š” . ์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” ์ด์™€ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๋ชจ์Œ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœ ์š”์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ถœ๋ ฅ์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€...

docker ps --format ... ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ps ์ถœ๋ ฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” #14699๋ฅผ ๋ฐฉ๊ธˆ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ํ˜•์‹์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฐ์ƒท์„ ํ™•์ธํ•˜์„ธ์š”.

image

์ด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋œ ๊ฒƒ์œผ๋กœ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ถ€๋‹ด ์—†์ด ์‹œ๋„ํ•ด ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์‹œ๋„ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด https://master.dockerproject.org ์—์„œ "๋งˆ์Šคํ„ฐ" ๋นŒ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์€ ๊ณง ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค(์•„์ง ์—†๋Š” ๊ฒฝ์šฐ).

--format ๋Š” ์ •๋ง ์ข‹์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งค์ผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ํ„ฐ๋ฏธ๋„์„ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ $COLUMNS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณด๊ณ  ์ ์ ˆํ•œ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 80x24 ํ„ฐ๋ฏธ๋„์˜ ps aux :
screenshot from 2015-07-23 00 47 35

๊ทธ๋ฆฌ๊ณ  137x24 ํ„ฐ๋ฏธ๋„์—์„œ:
screenshot from 2015-07-23 00 49 35

์—ด ๋„ˆ๋น„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ช…๋ น์„ ์ค„์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ํ•œ ์ค„์— ์ž˜ ๋งž๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์ด ์žˆ๊ณ  ์‚ฌ๋žŒ์ด ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  $COLUMNS ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ˜•์‹ ์ง€์ • ์˜ต์…˜์„ ์ ์šฉํ•˜๋Š” bash ๋ž˜ํผ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ •๋ง ํ•ดํ‚น๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋ชจ๋“  ๋ช…๋ น์ค„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๋™์ž‘์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. docker์˜ ์ถœ๋ ฅ์ด ์ง€์ €๋ถ„ํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๊ฒŒ ์•ˆ ๋˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‚˜์š”? ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ œํ•œ ์‚ฌํ•ญ์ด๋‚˜ ๊ท€ํ•˜์˜ ๊ฒฐ์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด PR์—์„œ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์ž˜๋ชป๋œ ๋‚˜๋ฌด๋ฅผ ์ง–๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@nsg : ๋™์˜ํ•จ - ๊ธฐ๋ณธ ์ถœ๋ ฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ์ด์œ ๋กœ๋“  ์ด๋ฏธ์ง€ ํ•ด์‹œ๋Š” ps ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋” ์ด์ƒ ์ž˜๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ๊ณผ๊ฑฐ์— ๋„์ปค๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ„ฐ๋ฏธ๋„์„ ์šธํŠธ๋ผ ์™€์ด๋“œ(์ „์ฒด ํ™”๋ฉด ์ฐจ์ง€)๋กœ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์ง€๋งŒ ์ด์ œ๋Š” ๋” ์ด์ƒ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1.7.1์—์„œ ๊ฐ ์ค„์˜ ๋„ˆ๋น„๋Š” ์•ฝ 200์—ด์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋„“์€ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์œผ๋กœ ์ข€ ๋†€์•„๋ดค์Šต๋‹ˆ๋‹ค.

ID๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ƒ์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

NAMES                 IMAGE          STATUS                     PORTS                         COMMAND
elegant_turing        nginx          Up 13 secs                 0.0.0.0:80->80/tcp, 443/tcp   "nginx -g 'daemon off"
composedemo_web_1     composedemo_   Exited (2) 23 secs ago                                   "/bin/sh -c 'python a"
composedemo_redis_1   redis          Exited (137) 11 secs ago                                 "/entrypoint.sh redis"
elated_carson         hello-world    Exited (0) 23 mins ago                                   "/hello"

๊ทธ๋ž˜๋„ ๋„ˆ๋ฌด ๊น๋‹ˆ๋‹ค. 0.0.0.0 ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NAMES                 IMAGE          STATUS                     PORTS                 COMMAND
elegant_turing        nginx          Up 13 secs                 80->80/tcp, 443/tcp   "nginx -g 'daemon off"
composedemo_web_1     composedemo_   Exited (2) 23 secs ago                           "/bin/sh -c 'python a"
composedemo_redis_1   redis          Exited (137) 11 secs ago                         "/entrypoint.sh redis"
elated_carson         hello-world    Exited (0) 23 mins ago                           "/hello"

ํ•˜์ง€๋งŒ ์•„์ง ์กฐ๊ธˆ ๊ธธ๋‹ค. ์ƒํƒœ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์ฐฝ์˜์„ฑ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ๊ตฌ๋ฌธ ๋ถ„์„/์Šค์บ”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์งง์Šต๋‹ˆ๋‹ค... Exit (2) 23s ago ์•„๋งˆ๋„?

๋ช…๋ น์„ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช…๋ น์˜ ์ ์–ด๋„ _์ผ๋ถ€_๊ฐ€ ํ‘œ์‹œ๋˜๋„๋ก ๋‹ค๋ฅธ ๊ฒƒ๋„ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์ค„์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์ž˜๋ฆด ๋•Œ "..."๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธด ํฌํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ƒ๊ฐ?

์ผ๋ถ€ ํ•ดํ‚น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/docker/docker/compare/master...bfirsh :7477-shorter-ps

@bfirsh ๋ญ”๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

์ƒํƒœ(๋งํ–ˆ๋“ฏ์ด)๋ฅผ 23์ดˆ ๋Œ€์‹  23์ดˆ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ด๋ฏธ์ง€์™€ ํฌํŠธ ์—ด์„ ๋ชจ๋‘ ์ž๋ฅด๋ฉด ์ถฉ๋ถ„ํžˆ ์งง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@bfirsh ๊ธฐ๋ณธ ๋ณด๊ธฐ์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ๋งํ•˜๋Š” --format ์˜ต์…˜์„ ์ƒ๊ฐํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

๋˜ํ•œ s ๋Œ€์‹  sec , m ๋Œ€์‹  mins

@aanm ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ docker 1.8์— --format ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ ps ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "psFormat": "table {{ .ID }}\\t{{ .Status }}"
}

๋” ์ข‹์•„ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ docker exec ์— ์ฒจ๋ถ€ํ•  ์‹คํ–‰์„ ์œ„ํ•ด ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๋‚˜๋Š” ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํฌ๋ง NAMES ํ›„ IMAGE , ๊ทธ๊ฒƒ์€ ์ข‹์€, ๋‚œ ๋” ์ด์ƒ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ํ•˜์ง€ ์•Š์•„๋„๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

๋„์ปค 1.8.1์˜ ๋ฌธ์ œ(fc21)
--format์€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

docker ps --format "{{.ID}}t{{.Image}}t{{.CreatedAt}}t{{.RunningFor}}t{{.Status}}t{{.Name}}" -a
ํ…œํ”Œ๋ฆฟ ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜: ํ…œํ”Œ๋ฆฟ: :1:64: <.Name>์—์„œ "" ์‹คํ–‰: ์ด๋ฆ„์ด *ps.containerContext ๊ตฌ์กฐ ์œ ํ˜•์˜ ํ•„๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉ:
๋„์ปค PS -a | perl -ne 'chomp; @cols = ๋ถ„ํ•  /s{2,}/, $_; $name=ํŒ @cols; printf "%-28s %-20s %-20s %-30sn", $name, $cols[1], $cols[3], $cols[4]'

@parf ์ž๋ฆฌ ํ‘œ์‹œ์ž๋Š” ์‹ค์ œ๋กœ Names .

https://github.com/calavera/docker/blob/missing_ps_placeholder/docs/reference/commandline/ps.md#formatting

์˜๊ฐ์„ ์ค€ @caiguanhao ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์—ฌ๊ธฐ์— ๋‚จ๊ฒจ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :

IMAGE                                NAMES                     STATUS              PORTS
xxxxx:x.x                            xx_xxxxxxxx_xxxxx         Up About an hour    10.23.123.111:26002->6379/tcp
xxxxxxxxx:x.x                        xx_xxxxxxxx_xxxxxxxxx     Up About an hour    29015/tcp
                                                                                   10.23.123.111:26001->8080/tcp
                                                                                   10.23.123.111:26000->28015/tcp
xxxxxxxx_xx_xxxxxxxx                 xx_xxxxxxxx               Up About an hour    127.0.0.1:8086->8080/tcp
xxxxxx_xx                            xx_xxx_xxx                Up About an hour    127.0.0.1:8082->8888/tcp
xxx_xx                               xx_xxx                    Up About an hour    127.0.0.1:8083->8080/tcp
xxxx/xxxxxxxxx-xxxxxx                xx_xxx_xxxxxxxxx_xxx      Up 2 hours          10.23.123.111:25002->25565/tcp
xxxx/xxxxxxxxx-xxxxxx                xx_xxx_xxxxxxxxx_xxxxxx   Up 2 hours          10.23.123.111:25001->25565/tcp
xxxxxx/xxxxxxxx:xxxxxx               xxx_xxxxxxxx              Up 3 hours          127.0.0.1:8080->8080/tcp
xxxxxxxxxx/xxxxxxx                   xxx_xxxxxxx               Up 3 hours          10.23.123.111:25->25/tcp
                                                                                   10.23.123.111:587->587/tcp
xx_xxx                               xx_xx                     Up 3 hours          10.23.123.112:9987->9987/tcp
                                                                                   10.23.123.112:10011->10011/tcp
                                                                                   10.23.123.112:30033->30033/tcp
                                                                                   10.23.123.112:9987->9987/udp
xxxx.xx/xxxxxxxxx/xxxxxx:x.x.x       xxx_xxxxxx                Up 3 hours          10.42.241.123:22->22/tcp
                                                                                   443/tcp
                                                                                   127.0.0.1:8000->80/tcp
xxxxxx/xxxxxx-xxxxxx:xxxxxx          xxx_xxxxxx_xx_xxxxxx      Up 3 hours
xxxx.xx/xxxxxxxxx/xxxxxxxxxx:x.x-x   xxx_xxxxxx_xxxxxxxx       Up 3 hours          5432/tcp
xxxx.xx/xxxxxxxxx/xxxxx:xxxxxx       xxx_xxxxxx_xxxxx          Up 3 hours          6379/tcp

/etc/profile.d/dps.sh: https://gist.github.com/GottZ/4a6c2af314d73cd8b71d

์ข‹์€ @GottZ , ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@thaJeztah ๋” ๋‚˜์€ ๊ฐ€์‹œ์„ฑ์„ ์œ„ํ•ด ๊ฐ ์ง์ˆ˜ ๋ผ์ธ์„ ๊ตต๊ฒŒ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ๊ฒ๊ฒŒ ๋ณด๋‚ด์„ธ์š” :์Šค๋งˆ์ผ:

ํ•œํŽธ awk ๋Œ€ํ•œ ๋‚ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ alias my_docker_ps="docker ps | awk 'BEGIN{FIELDWIDTHS = \"20 33 23 20 20 70 20\"}{print \$1,\$2,\$5,\$7}'"

$ my_docker_ps         
CONTAINER ID         IMAGE                             STATUS               NAMES
b83fe9a6a06e         kibana                            Up 32 minutes        kibana              
4d78b9cd2bed         elasticsearch                     Up About an hour     evil_feynman        
fbbc40a49569         mattermost/platform               Up 9 weeks           mattermost-dev      
3b4dd9d00305         outcoldman/splunk:latest          Up 9 weeks           boring_yalow           

@danidelvalle ๊ฐ„๋‹จํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"

์ด๊ฒƒ์€ ์ด๋ฏธ ์ปค๋ฐ‹๋˜์–ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š”๋ฐ ์ด๊ฒŒ ์™œ ์•„์ง ์—ด๋ ค์žˆ๋‚˜์š”?

@thaJeztah ๋„ค ๋ง์ด ๋งž์•„, ๊ณ ๋งˆ์›Œ :)

@ovidiub13 ์ฃผ๋กœ https://github.com/docker/docker/issues/7477#issuecomment -123898874 ๋•Œ๋ฌธ์—

๋„ค ์งœ์ฆ๋‚˜๋„ค์š”..

๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ„ฐ๋ฏธ๋„ ์—ด ๋„ˆ๋น„์—์„œ ๊ธฐ๋ณธ ps๋ฅผ ์ž๋ฅด๋Š” ๊ฒƒ์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

dps() {
  docker ps | cut -c-$(tput cols)
}

--columns=name,id,status,image +1

์ด ๋ฌธ์ œ๋Š” ๋ถˆํ–‰ํžˆ๋„ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ .bashrc ์•„๋ž˜(Ubuntu์—์„œ ํ…Œ์ŠคํŠธ๋จ)๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CMD_WATCHDOCKER="watch \"docker ps -q | xargs docker inspect --format '{{.Id}} @{{.Config.Image}} @{{.Config.Cmd}} @{{range \\\$p, \\\$conf := .NetworkSettings.Ports}}{{\\\$p}}->{{(index \\\$conf 0).HostPort}}{{end}} @{{.NetworkSettings.IPAddress}}' | column -t -s='@' | cut -c 1-5,64-\""
alias watchdocker='eval $CMD_WATCHDOCKER'

watchdocker ํ•˜๋ฉด ๋‹ค์Œ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

4596c3   ruby:2.2.2   [bash]                        172.17.0.82
827ca9   postgres     [postgres]   5432/tcp->5432   172.17.0.72

@Pithikos docker ps--format '{{ .ID }}\t{{ .Image }}\t{{ .Command }}\t{{ .Ports }}' ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋ชจ๋“  API ํ˜ธ์ถœ ์—†์ด ์ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด๊ฒƒ์„ ~/.docker/config.json ์— ๋„ฃ์–ด ๊ธฐ๋ณธ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cpuguy83 ์–ด๋–ค ๋ฒ„์ „์ด ์ด๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ง์žฅ์—์„œ๋‚˜ ์ง‘์—์„œ๋‚˜ ์ด๊ฒƒ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ ์—์„œ ์–ด๋–ค ๋ฒ„์ „์ด ๋ฌด์—‡์„ ์ง€์›ํ•˜๋Š”์ง€ ์–ธ๊ธ‰๋œ๋‹ค๋ฉด

@Pithikos 1.8 ๋˜๋Š” 1.9, ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

docker ps/images๋ฅผ 80์—ด์— ๋งž์ถฅ๋‹ˆ๋‹ค.

screenshot94

https://github.com/rhoit/my-config/blob/e374a3cf28f3bc461766ce32f823207692c74f83/shell/shellrc.d/docker.sh#L10 -L28

๋ˆ

์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ๋ฒ•์€ ํ˜•์‹ ๋ฌธ์ž์—ด์˜ "table" ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข‹์€ ๊ฐ„๊ฒฉ ํ˜•์‹์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. docker ps -a --format="table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Command}}\t{{.Status}}"

ps ๋Œ€ํ•œ --format ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ด ํ•ญ๋ชฉ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ๋ฌธ์ œ์˜ ์ด๋ฆ„์ด ์ž˜ ์ง€์ •๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์˜ _default_๋Š” ์—ฌ์ „ํžˆ 80์ž ๋„ˆ๋น„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋‹ซํ˜€์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

--format ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://docs.docker.com/engine/reference/commandline/ps/#/formatting

MySQL์˜ select * from foobar\G ์™€ ๊ฐ™์ด ๊ฒฐ๊ณผ๋ฅผ ์„ธ๋กœ๋กœ ํ‘œ์‹œํ•˜๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ณดํ†ต ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€(๊ทธ๋ฆฌ๊ณ  ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์‹คํ–‰๋˜๋Š”์ง€) ์•Œ๊ณ  ์‹ถ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ docker ps --format "table {{.Names}}\t{{.Status}}"

๋”๊ตฐ๋‹ค๋‚˜ ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฌ์šด ๋ณ„์นญ์œผ๋กœ ๋ž˜ํ•‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

alias dps='docker ps --format "table {{.Names}}\t{{.Status}}"'

๋‹ค์Œ์€ ์ถœ๋ ฅ ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค.

NAMES                     STATUS
projectxyz_chrome_1       Up 11 minutes
projectxyz_web_1          Up 11 minutes
projectxyz_app_1          Up 11 minutes
projectxyz_phpmyadmin_1   Up 11 minutes
projectxyz_memcached_1    Up 11 minutes
projectxyz_db_1           Up 11 minutes

์—ฌ๊ธฐ์—์„œ --format ๋ช…๋ น์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://docs.docker.com/engine/reference/commandline/ps/

๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿ˜ƒ

@joshmedeski ๋˜ํ•œ ๊ธฐ๋ณธ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ ํŒŒ์ผ์— ์›ํ•˜๋Š” ํ˜•์‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://docs.docker.com/engine/reference/commandline/cli/#/configuration -files

์—ฌ๊ธฐ ์— ํ‚ค ์ž…๋ ฅ์„ ์ €์žฅํ•˜๋Š” ์ •์‹ ์œผ๋กœ ์ธ์ˆ˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๊ณ  go ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๊ณ  docker ps ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์›ํ•˜๋Š” ์—ด์„ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์ฆ‰์‹œ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ ์ž‘์€ bash ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์— ๊ตฌ์„ฑ์„ ๋„ฃ๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ๋™์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ ์—ด ์„ธํŠธ๋ฅผ ํ•œ ์ˆœ๊ฐ„์— ๊ฐ–๊ณ  ์ž ์‹œ ํ›„์— ๋‹ค๋ฅธ ์„ธํŠธ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ-์•ค๋””

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import subprocess

show_all = False
fields = [
  "Names",
  "Command",
  "Image",
  "CreatedAt",
  "Status",
]

cmd = ['docker', 'ps']
if show_all:
  cmd += ['-a']
cmd += ['--format', '\t'.join([('{{ .'+field+' }}') for field in fields])]
response = subprocess.check_output(cmd)

dataset = [fields]
dataset_widths = [0] * len(fields)
for idx, line in enumerate(response.split('\n')[:-1]):
  fieldvalues = line.decode('utf-8').replace(u"\u2026", u"_").split('\t')
  dataset.append(fieldvalues)
  for jdx, fieldvalue in enumerate(fieldvalues):
    if dataset_widths[jdx] < len(fieldvalue):
      dataset_widths[jdx] = len(fieldvalue)

for idx, items in enumerate(dataset):
  output_line = ['{:>3d}'.format(idx)]
  for jdx, item in enumerate(items):
    output_line.append(('{:'+str(dataset_widths[jdx])+'s}').format(item))
  print '   '.join(output_line)

์ด๊ฒƒ์„ ~/.docker/config.json์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
{ "psFormat": "table {{.Names}}\\t{{.Image}}\\t{{.RunningFor}} ago\\t{{.Status}}\\t{{.Command}}", "imagesFormat": "table {{.Repository}}\\t{{.Tag}}\\t{{.ID}}\\t{{.Size}}" }

๊ทธ๋ฆฌ๊ณ  ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋ฌธ์ œ๋Š” ํ•ญ์ƒ ๊ธด ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด์—ˆ์Šต๋‹ˆ๋‹ค (๋‚ด ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๊ฐœ์ธ ์ €์žฅ์†Œ ์ด๋ฆ„์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—)

๋” ๋‚˜์€ docker ps๋ฅผ ์ฐพ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์ด๊ฒƒ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/moncho/dry

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํ•ดํ‚น. ์œ ์ง€ํ•˜๋ ค๋Š” $cols[x]๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

docker ps | perl -ne '<strong i="7">@cols</strong> = split /\s{2,}/, $_; printf "%30s %20s %20s\n", $cols[1], $cols[3], $cols[4]'

๊ฐ์‚ฌ ํ•ด์š”.

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ์ „๋ถ€์˜€์Šต๋‹ˆ๋‹ค.
docker ps | perl -ne '<strong i="12">@cols</strong> = split /\s{2,}/, $_; printf "%30s %20s %20s", $cols[1], $cols[4], $cols[6]'

์ด๋ฏธ์ง€ ์ƒํƒœ ์ด๋ฆ„ ์ œ๊ณต
์ž˜ ์ •๋ ฌ๋œ ์—ด์—

ํŽธ์ง‘ํ•˜๋‹ค

๋‹ค์Œ๊ณผ ๊ฐ™์ด bash ๋ณ„์นญ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

docker ps --format="table {{.Image}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}"

"ํ‘œ" ํ˜•์‹์— ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํ•ดํ‚น. ์œ ์ง€ํ•˜๋ ค๋Š” $cols[x]๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

docker ps | perl -ne '<strong i="7">@cols</strong> = split /\s{2,}/, $_; printf "%30s %20s %20s\n", $cols[1], $cols[3], $cols[4]'

๊ต‰์žฅํ•ด, thnx

@nagracks ํ•ด๋‹น ํ˜•์‹์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด --format ์ ‘๊ทผ ๋ฐฉ์‹( ~/.docker/config.json ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

.docker/config.json ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ •์˜๋กœ ์ˆ˜์ •ํ•˜๋ฉด:

"imagesFormat": "table {{.ID}}  {{.Repository}}\t{{.Tag}}  {{.CreatedSince}}  {{.Size}}",
"psFormat": "table {{.ID}}  {{.Names}}\t{{.Image}}  {{.Command}}  {{.Status}}",

๊ทธ๋Ÿฐ ๋‹ค์Œ docker ps ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํ˜•์‹์„ ๋ณด๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? docker ps --format "" ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

docker ps --format=table ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ํ˜•์‹์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ํ˜•์‹ ์ง€์ • ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ๋˜๋Š” ํ˜•์‹ ์ง€์ • ์ปจํ…์ŠคํŠธ์—์„œ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€ ๊ธฐ์–ตํ•  ํ•„์š” ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋œ ์ž์„ธํ•œ ๋ฒ„์ „์˜ ์ถœ๋ ฅ์ด ์žˆ๋‹ค๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋”๋ผ๋„ _pre-formatted_ ๋œ ์ž์„ธํ•œ ๋ฒ„์ „์— ๋Œ€ํ•œ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋œ ์žฅํ™ฉํ•œ ๋ฒ„์ „์—์„œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”์ง€์— ๊ด€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„์˜ ์šฉ๋„์—์„œ ์ด๋ฆ„๊ณผ ์•„์ด๋””๋Š” ๊ฐ™์€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ทธ๋Ÿฌํ•œ ๊ฒƒ์€ ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ ๋‚ ์งœ ์‹œ๊ฐ„์€ ์•„๋งˆ๋„ ๋œ ์žฅํ™ฉํ•œ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์ƒ๋žตํ•ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋œ ์žฅํ™ฉํ•œ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํฌํŠธ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ๋„ ๊ฐœ์ธ์ ์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์ฐพ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์›๊ฒฉ ์„œ๋ฒ„ ๋…ธ๋“œ์—์„œ). ๋‚ด๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ •ํ™•ํ•œ ์ด๋ฆ„.

๋ณ„์นญ์ด ์ •์˜๋œ ํ™˜๊ฒฝ์—์„œ ํ•ญ์ƒ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ˜•์‹ ์ง€์ • ๊ตฌ๋ฌธ ๋ฐ ์ปจํ…์ŠคํŠธ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ๊ธฐ์—์„œ "์Šน์ธ๋œ" ์†”๋ฃจ์…˜์ด "--format ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„์นญ์„ ๊ตฌ์„ฑ"ํ•˜๋Š” ๊ฒƒ์— ๋‹ค์†Œ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ FWIW์—์„œ ๋งค์ผ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. docker ps -a ์˜ ํ˜„์žฌ ์ถœ๋ ฅ์€ _180์ž ๋„ˆ๋น„_์ž…๋‹ˆ๋‹ค. -- ์ œ 27์ธ์น˜ 4K ํ™”๋ฉด์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ž…๋‹ˆ๋‹ค!

CONTAINER ID        IMAGE                                          COMMAND                 CREATED             STATUS                    PORTS               NAMES
994be99dddd1        nvidia/cuda:10.2-devel-ubuntu18.04             "bash"                  4 days ago          Exited (0) 4 days ago                         eager_tesla
30796cc3db32        nvidia/cuda:10.2-devel-ubuntu18.04             "bash"                  4 days ago          Exited (127) 4 days ago                       laughing_maxwell
ed5f20c1cff3        gcr.io/deeplearning-platform-release/tf2-gpu   "/entrypoint.sh bash"   4 days ago          Exited (0) 3 days ago                         distracted_ardinghelli
0bb06e992ef4        gcr.io/deeplearning-platform-release/tf2-gpu   "/entrypoint.sh bash"   4 days ago          Exited (0) 4 days ago                         bold_brahmagupta

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ํ•ฉ๋ฆฌ์ ์ธ ํฌ๊ธฐ์˜ ํ„ฐ๋ฏธ๋„์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก docker ps ๋ช…๋ น์˜ ๋ณ„์นญ์„ ์ง€์ •ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. 80์ž๋งŒํผ ์ž‘์„ ํ•„์š”๋Š” ์—†์ง€๋งŒ ํ™•์‹คํžˆ 180์ž๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋นจ๊ฐฑ์ด์ฒ˜๋Ÿผ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด๊ณ  ์‹ถ์€ ์œ ํ˜น์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๐Ÿ˜

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰