Socket是Linux跨進程通信(IPC,Inter Process Communication,詳情參考:Linux進程間通信方式總結)方式的一種。相比于其他IPC方式,Socket更牛的地方在于,它不僅僅可以做到同一臺主機內跨進程通信,它還可以做到不同主機間的跨進程通信。根據通信域的不同可以劃分成2種:Unix domain socket 和 Internet domain socket。
1. Internet domain socket
Internet domain socket用于實現不同主機上的進程間通信,大部分情況下我們所說的socket都是指internet domain socket。(下文不特殊指代的情況下,socket就是指internet domain socket。)
# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67bfc390d58f nginx "/docker-entrypoint.…" About a minute ago Up 7 seconds 80/tcp romantic_heisenberg 至此,通過Unix domain socket我們實現了客戶端進程curl與服務端進程docker daemon間的通信,并成功地調用了docker API運行了一個nginx container。