์๋ ํ์ธ์, ์ ๋ Docker API์ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋จผ์ :
$ docker version
Client:
Version: 1.8.2-rc1
API version: 1.20
Go version: go1.4.2
Git commit: 28220ac
Built: Thu Sep 3 19:07:51 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.8.2-rc1
API version: 1.20
Go version: go1.4.2
Git commit: 28220ac
Built: Thu Sep 3 19:07:51 UTC 2015
OS/Arch: linux/amd64
$ docker info
Containers: 17
Images: 8
Storage Driver: devicemapper
Pool Name: docker-254:0-1512633-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 3.557 GB
Data Space Total: 107.4 GB
Data Space Available: 8.216 GB
Metadata Space Used: 7.848 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.14 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.104 (2015-08-10)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.1.0-1-amd64
Operating System: Debian GNU/Linux stretch/sid
CPUs: 8
Total Memory: 15.65 GiB
Name: n-pc
ID: LWBS:FFUU:5FGD:UXXH:J5FB:G4WL:WUZM:RFS4:3TEC:3IGG:K7GU:YWBV
WARNING: No memory limit support
WARNING: No swap limit support
$ uname -a
Linux n-pc 4.1.0-1-amd64 #1 SMP Debian 4.1.3-1 (2015-08-03) x86_64 GNU/Linux
API๋ฅผ ๋ช ๋ น์ค๊ณผ ํจ๊ป ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ปจํ ์ด๋์ ํต๊ณ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ API๊ฐ ์๋ฌด ๊ฒ๋ ๋ฐํํ์ง ์์ต๋๋ค.
$ echo -e "GET /containers/57d3/stats?stream=0 HTTP/1.1\r\n" | nc -U /var/run/docker.sock
HTTP/1.1 200 OK
Content-Type: application/json
Server: Docker/1.8.2-rc1 (linux)
Date: Fri, 04 Sep 2015 08:13:10 GMT
Content-Length: 0
"docker" ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ํต๊ณ๋ฅผ ์ป์ ์ ์์ง๋ง ์ค์ ๋ก API๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
docker stats --no-stream 57d3
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
57d3 1.16% 0 B/16.81 GB 0.00% 8.565 MB/1.499 MB
๊ทธ๋ฌ๋ API๊ฐ ์๋ ์ค์ ๋๋ค ...
echo -e "GET /version HTTP/1.1\r\n" | nc -U /var/run/docker.sock | tail -1 | json
{
"ApiVersion": "1.20",
"Arch": "amd64",
"BuildTime": "Thu Sep 3 19:07:51 UTC 2015",
"GitCommit": "28220ac",
"GoVersion": "go1.4.2",
"KernelVersion": "4.1.0-1-amd64",
"Os": "linux",
"Version": "1.8.2-rc1"
}
๋ด๊ฐ ๋ญ ์๋ชปํ๊ณ ์๋? ๊ฐ์ฌํฉ๋๋ค!
์ด๊ฒ์ docker๊ฐ ์๋ต ํค๋๋ฅผ ๋จผ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ ์์ต๋๋ค...
๋๋ ์ด๊ฒ์ ์ปฌ๋ก ์ฌํ ํ ์ ์์ผ๋ฉฐ ์ฌ๊ธฐ์์๋ ๊ฒ์ฒ๋ผ nc๋ก ํ์ดํํด์ผํฉ๋๋ค.
๋ํ CLI๋ ๋์ผํ ์ ํํ API๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด 'nc'์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ์๋: ... nc -q -1 -U /var/run/docker.sock
("-q -1" ์ฐธ๊ณ ).
'nc'๋ ์๋ฒ๊ฐ ์์ ์ ์ํํ๊ธฐ ์ ์ http ์์ฒญ์ ๋ซ๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก 'ํต๊ณ' ์ฒ๋ฆฌ๋ฅผ ์ค์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค. http ์์ฒญ์ ํ์ธํ์ง ์๋ ๋ค๋ฅธ ๋์ปค cmds๋ฅผ ์๋ํ๋ฉด ์๋ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
nc ๋ฌธ์ ๋งํผ ๋์ปค ๋ฌธ์ ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ซ์ ๊ฒ์ ๋๋ค. curl์ ๋์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๊ฐ์ฌํฉ๋๋ค. ์๋ํฉ๋๋ค! ๊ทธ๋ฌ๋ ๋๋ -q๋ฅผ 5๋ก ์ค์ ํ๋ ๊ฒ์ ์ ํธํ๊ณ (-1์ ์์ํ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์) 5๋ ์๊ฐ ์ ํ์ 5์ด๋ก ์ค์ ํฉ๋๋ค.
Debian Stretch์์๋ ๋์ curl์ ์ฌ์ฉํ ์ ์์ง๋ง Ubuntu 14.04์์๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. curl: option --unix-socket: is unknown
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ด๊ฒ์ด 'nc'์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ์๋:
... nc -q -1 -U /var/run/docker.sock
("-q -1" ์ฐธ๊ณ ).'nc'๋ ์๋ฒ๊ฐ ์์ ์ ์ํํ๊ธฐ ์ ์ http ์์ฒญ์ ๋ซ๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก 'ํต๊ณ' ์ฒ๋ฆฌ๋ฅผ ์ค์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค. http ์์ฒญ์ ํ์ธํ์ง ์๋ ๋ค๋ฅธ ๋์ปค cmds๋ฅผ ์๋ํ๋ฉด ์๋ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
nc ๋ฌธ์ ๋งํผ ๋์ปค ๋ฌธ์ ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ซ์ ๊ฒ์ ๋๋ค. curl์ ๋์ ์ฌ์ฉํ ์ ์์ต๋๊น?