์์ผ (Socket)์ด๋?
โ์์ผโ์ ํ๋ก์ธ์ค A์ ํ๋ก์ธ์ค B๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ๋ ๋ฌธ(ํต๋ก)
๊ทธ ๋ฌธ์ด ํ์ผ ์์คํ
์์ ์๋๋, IPยทํฌํธ ์ฃผ์๋ก ๋
ธ์ถ๋๋๋์ ๋ฐ๋ผ ๋ ๊ฐ์ง๋ก ๋๋จ
์ ์์ผ์ ์จ์ผ ํ ๊น?
ํ์ค IPC API
socket() โ bind() โ listen() โ accept()ํธ์ถ๋ง ์๋ฉด ๋ด๋ถยท์ธ๋ถ ํต์ ์ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์์
์๋ฐฉํฅ ์คํธ๋ฆผ
- ํ์ชฝ์ด
send()ํ๋ฉด ์๋๊ฐrecv()๋ก ๋ฐ๋ก ์ฝ์. ํ์ดํยท๋ฉ์์ง ํ๋ณด๋ค ์ ์ฐ
์ธ์ดยทํ๋ซํผ ๋ ๋ฆฝ
- C, Python, Go, Java ๋ฑ ๋ญ๋ก ๋ง๋ค์ด๋ ์๋ก ๋ถ์ผ ์ ์์
์์ผ์ ์ข ๋ฅ
์ ๋์ค ๋๋ฉ์ธ ์์ผ (UDS, .sock)
| ํน์ง | ์ค๋ช |
|---|---|
| ์ฃผ์ | ํ์ผ ๊ฒฝ๋ก(AF_UNIX), ์: /var/run/docker.sock |
| ๋ฒ์ | ๊ฐ์ ๋จธ์ |
| ์๋ | TCP๋ณด๋ค ๋น ๋ฆ (์ปค๋ ๋ด๋ถ ๋ณต์ฌ ํ ๋ฒ) |
| ๊ด๋ฆฌ | ํ์ผ ๊ถํ์ผ๋ก ์ ๊ทผ ์ ์ด |
| ์ฌ์ฉ์ฒ | Docker CLI โ dockerd, Nginx โ PHP-FPM, MySQL ๋ก์ปฌ ์ ์ ๋ฑ |
# Docker ๋ฐ๋ชฌ์ ์ง์ REST ์์ฒญ
curl --unix-socket /var/run/docker.sock http://localhost/containers/json๋คํธ์ํฌ ์์ผ (TCP/UDP)
| ํน์ง | ์ค๋ช |
|---|---|
| ์ฃผ์ | IP:ํฌํธ(AF_INET), ์: 127.0.0.1:8080, 0.0.0.0:443 |
| ๋ฒ์ | ๋ก์ปฌ โ LAN โ ์ธํฐ๋ท ์ด๋๋ |
| ํ๋กํ ์ฝ | TCP(์ฐ๊ฒฐ ์งํฅ), UDP(๋ฉ์์ง ์งํฅ) |
| ๋ณด์ | ๋ฐฉํ๋ฒฝยทTLSยทmTLS ํ์ |
| ์ฌ์ฉ์ฒ | ์น ์๋ฒ, REST API, ๊ฒ์ ์๋ฒ, IoT |
# ํ์ด์ฌ ๋ฏธ๋ TCP ์๋ฒ
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", 8888))
s.listen()
conn, _ = s.accept()
conn.sendall(b"Hello over TCP!\n")๋น๊ต
| ํญ๋ชฉ | ์ ๋์ค ๋๋ฉ์ธ ์์ผ | ๋คํธ์ํฌ ์์ผ |
|---|---|---|
| ์ฃผ์ ํํ | ํ์ผ ๊ฒฝ๋ก | IP:Port |
| ํต์ ๋ฒ์ | ๋ก์ปฌ ๋จธ์ | ๋ก์ปฌ โ ์๊ฒฉ |
| ์ค๋ฒํค๋ | ๋ฎ์ | ๋์ |
| ์ ๊ทผ ์ ์ด | ํ์ผ ํผ๋ฏธ์ | ๋ฐฉํ๋ฒฝยทTLS |
| ์ฃผ์ ์ฌ์ฉ์ฒ | ๋ฐ๋ชฌ โ CLI, IPC | HTTP, gRPC, ๊ฒ์ |
์ธ์ ๋ฌด์์ ์ฐ๋ฉด ์ข์๊น?
| ์ํฉ | ์ถ์ฒ ์์ผ |
|---|---|
| ๊ฐ์ ์๋ฒ ์ ๋ ํ๋ก์ธ์ค | UDS |
| ์ปจํ ์ด๋ โ ํธ์คํธ ๋ฐ๋ชฌ | UDS |
| ๋ค๋ฅธ ๋จธ์ ๊ณผ ํต์ | TCP/UDP |
| ๋ชจ๋ฐ์ผยท๋ธ๋ผ์ฐ์ ์ ๊ทผ | TCP/UDP |
์ฒ์์ UDS๋ก ๊ฐ๋ฐํ๊ณ , ๋ฐฐํฌ ๋จ๊ณ์์ ๋คํธ์ํฌ ์์ผ์ผ๋ก ์ ํํ๋ ํจํด๋ ์์ฃผ ์ฌ์ฉ
๋ณด์ ๋ฌธ์
UDS๋ โ๋ฃจํธ ์ด์ โ๊ฐ ๋ ์ ์์
/var/run/docker.sock์ฐ๊ธฐ ๊ถํ์ ๋์ปค ๋ฐ๋ชฌ ์ ๊ถ์ ์๋ฏธ
TCP 2375(๋ฌดTLS) ๋ ธ์ถ ๊ธ์ง
dockerd -H tcp://0.0.0.0:2375๊ทธ๋๋ก ๋์ฐ๋ฉด ๋๊ตฌ๋ ์ปจํ ์ด๋ ์คํ ๊ฐ๋ฅ
TLS/mTLS, SSH ํฐ๋ ํ์
- ์๊ฒฉ ์์ผ์ ๋ฐ๋์ ์ํธํ + ์ธ์ฆ ๊ณ์ธต์ ์น์ด์ผ ํจ
๋ง๋ฌด๋ฆฌ
์์ผ์ โํ๋ก์ธ์ค ๊ฐ ๋ํ ์ฐฝ๊ตฌโ
- UDS๋ ๊ฐ์ ์๋ฒ ์์ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ,
- TCP/UDP๋ ์ธ์ ์ด๋์๋ ์ฐ๊ฒฐํ ์ ์์
ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ(๋ฒ์, ์ฑ๋ฅ, ๋ณด์)์ ๋ง์ถฐ ๋ ์ข ๋ฅ๋ฅผ ์ ์ ํ ์ ํํด์ผ ํจ