์์ผ (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๋ ์ธ์ ์ด๋์๋ ์ฐ๊ฒฐํ ์ ์์
ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ(๋ฒ์, ์ฑ๋ฅ, ๋ณด์)์ ๋ง์ถฐ ๋ ์ข ๋ฅ๋ฅผ ์ ์ ํ ์ ํํด์ผ ํจ