docker 활용 팁
1. dockerd remote 접속 가능하도록 설정하는 방법
# Ubuntu 16.04의 경우
$ sudo vi /lib/systemd/system/docker.service
[수정전]
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
[수정후]
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2375
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo netstat -antpl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2375 0.0.0.0:* LISTEN 1197/dockerd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1135/sshd
2. dockerd remote 접속 alias 활용
# 임시 적용 방법
$ alias docker="docker -H remote_dockerd_ip:2375" # default port: 2375, ":2375" 생략 가능
# 영구 적용 방법
$ vi /etc/profile
alias docker="docker -H remote_dockerd_ip:2375"
3. dockerd remote 통신은 http 프로토콜을 사용한다.
# 원격에서 명령 실행
$ docker -H localhost:2375 ps
# 트래픽 덤프
$ sudo tcpdump -nn -i lo
00:08:53.548704 IP 127.0.0.1.37034 > 127.0.0.1.2375: Flags [P.], seq 1:91, ack 1, win 342, options [nop,nop,TS val 1389036 ecr 1389036], length 90
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 008e d37f 4000 4006 68e8 7f00 0001 7f00 ....@.@.h.......
0x0020: 0001 90aa 0947 d30d 80a8 d24c 1c42 8018 .....G.....L.B..
0x0030: 0156 fe82 0000 0101 080a 0015 31ec 0015 .V..........1...
0x0040: 31ec 4845 4144 202f 5f70 696e 6720 4854 1.HEAD./_ping.HT
0x0050: 5450 2f31 2e31 0d0a 486f 7374 3a20 6c6f TP/1.1..Host:.lo
0x0060: 6361 6c68 6f73 743a 3233 3735 0d0a 5573 calhost:2375..Us
0x0070: 6572 2d41 6765 6e74 3a20 446f 636b 6572 er-Agent:.Docker
0x0080: 2d43 6c69 656e 742f 3139 2e30 332e 3133 -Client/19.03.13
0x0090: 2028 6c69 6e75 7829 0d0a 0d0a .(linux)....
00:08:53.549002 IP 127.0.0.1.2375 > 127.0.0.1.37034: Flags [P.], seq 1:282, ack 91, win 342, options [nop,nop,TS val 1389037 ecr 1389036], length 281
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 014d a5fd 4000 4006 95ab 7f00 0001 7f00 .M..@.@.........
0x0020: 0001 0947 90aa d24c 1c42 d30d 8102 8018 ...G...L.B......
0x0030: 0156 ff41 0000 0101 080a 0015 31ed 0015 .V.A........1...
0x0040: 31ec 4854 5450 2f31 2e31 2032 3030 204f 1.HTTP/1.1.200.O
0x0050: 4b0d 0a41 7069 2d56 6572 7369 6f6e 3a20 K..Api-Version:.
0x0060: 312e 3430 0d0a 4361 6368 652d 436f 6e74 1.40..Cache-Cont
0x0070: 726f 6c3a 206e 6f2d 6361 6368 652c 206e rol:.no-cache,.n
0x0080: 6f2d 7374 6f72 652c 206d 7573 742d 7265 o-store,.must-re
0x0090: 7661 6c69 6461 7465 0d0a 436f 6e74 656e validate..Conten
0x00a0: 742d 4c65 6e67 7468 3a20 300d 0a43 6f6e t-Length:.0..Con
0x00b0: 7465 6e74 2d54 7970 653a 2074 6578 742f tent-Type:.text/
0x00c0: 706c 6169 6e3b 2063 6861 7273 6574 3d75 plain;.charset=u
0x00d0: 7466 2d38 0d0a 446f 636b 6572 2d45 7870 tf-8..Docker-Exp
0x00e0: 6572 696d 656e 7461 6c3a 2066 616c 7365 erimental:.false
0x00f0: 0d0a 4f73 7479 7065 3a20 6c69 6e75 780d ..Ostype:.linux.
0x0100: 0a50 7261 676d 613a 206e 6f2d 6361 6368 .Pragma:.no-cach
0x0110: 650d 0a53 6572 7665 723a 2044 6f63 6b65 e..Server:.Docke
0x0120: 722f 3139 2e30 332e 3133 2028 6c69 6e75 r/19.03.13.(linu
0x0130: 7829 0d0a 4461 7465 3a20 5475 652c 2030 x)..Date:.Tue,.0
0x0140: 3120 4465 6320 3230 3230 2031 353a 3038 1.Dec.2020.15:08
0x0150: 3a35 3320 474d 540d 0a0d 0a :53.GMT....
00:08:53.550375 IP 127.0.0.1.37034 > 127.0.0.1.2375: Flags [P.], seq 91:196, ack 282, win 350, options [nop,nop,TS val 1389037 ecr 1389037], length 105
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 009d d381 4000 4006 68d7 7f00 0001 7f00 ....@.@.h.......
0x0020: 0001 90aa 0947 d30d 8102 d24c 1d5b 8018 .....G.....L.[..
0x0030: 015e fe91 0000 0101 080a 0015 31ed 0015 .^..........1...
0x0040: 31ed 4745 5420 2f76 312e 3430 2f63 6f6e 1.GET./v1.40/con
0x0050: 7461 696e 6572 732f 6a73 6f6e 2048 5454 tainers/json.HTT
0x0060: 502f 312e 310d 0a48 6f73 743a 206c 6f63 P/1.1..Host:.loc
0x0070: 616c 686f 7374 3a32 3337 350d 0a55 7365 alhost:2375..Use
0x0080: 722d 4167 656e 743a 2044 6f63 6b65 722d r-Agent:.Docker-
0x0090: 436c 6965 6e74 2f31 392e 3033 2e31 3320 Client/19.03.13.
0x00a0: 286c 696e 7578 290d 0a0d 0a (linux)....
00:08:53.550705 IP 127.0.0.1.2375 > 127.0.0.1.37034: Flags [P.], seq 282:487, ack 196, win 342, options [nop,nop,TS val 1389037 ecr 1389037], length 205
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 0101 a5fe 4000 4006 95f6 7f00 0001 7f00 ....@.@.........
0x0020: 0001 0947 90aa d24c 1d5b d30d 816b 8018 ...G...L.[...k..
0x0030: 0156 fef5 0000 0101 080a 0015 31ed 0015 .V..........1...
0x0040: 31ed 4854 5450 2f31 2e31 2032 3030 204f 1.HTTP/1.1.200.O
0x0050: 4b0d 0a41 7069 2d56 6572 7369 6f6e 3a20 K..Api-Version:.
0x0060: 312e 3430 0d0a 436f 6e74 656e 742d 5479 1.40..Content-Ty
0x0070: 7065 3a20 6170 706c 6963 6174 696f 6e2f pe:.application/
0x0080: 6a73 6f6e 0d0a 446f 636b 6572 2d45 7870 json..Docker-Exp
0x0090: 6572 696d 656e 7461 6c3a 2066 616c 7365 erimental:.false
0x00a0: 0d0a 4f73 7479 7065 3a20 6c69 6e75 780d ..Ostype:.linux.
0x00b0: 0a53 6572 7665 723a 2044 6f63 6b65 722f .Server:.Docker/
0x00c0: 3139 2e30 332e 3133 2028 6c69 6e75 7829 19.03.13.(linux)
0x00d0: 0d0a 4461 7465 3a20 5475 652c 2030 3120 ..Date:.Tue,.01.
0x00e0: 4465 6320 3230 3230 2031 353a 3038 3a35 Dec.2020.15:08:5
0x00f0: 3320 474d 540d 0a43 6f6e 7465 6e74 2d4c 3.GMT..Content-L
0x0100: 656e 6774 683a 2033 0d0a 0d0a 5b5d 0a ength:.3....[].
4. A Python library for Docker Engine API
# 설치 방법
$ pip install docker
# 참고 URL
https://docker-py.readthedocs.io/en/stable/
'Docker' 카테고리의 다른 글
Docker container/image 에 ps 명령어 설치하기 (1) | 2022.09.09 |
---|---|
Ubuntu 22.04 LTS 에 docker 설치하기 (0) | 2022.09.02 |
proxy(프록시) 환경에서 Docker 사용하기 (0) | 2022.08.24 |
댓글