Skip to content

Docker APIs 🔌 ​

āĻĄāĻ•āĻžāϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āϟ⧁āϞ āύ⧟, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ RESTful API āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻĒāύāĻŋ āϝ⧇āϕ⧋āύ⧋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻŽāĻŋāĻ‚ āĻ˛ā§āϝāĻžāĻ™ā§āĻ—ā§ā§Ÿā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻ•āĻžāϰ āχāĻžā§āϜāĻŋāύāϕ⧇ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤


ā§§. āĻĄāĻ•āĻžāϰ āχāĻžā§āϜāĻŋāύ API āĻ•āĻŋ? ​

āĻĄāĻ•āĻžāϰ āĻ•ā§āϞāĻžā§Ÿā§‡āĻ¨ā§āϟ (CLI) āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāϰ āĻĄā§āϝāĻžāĻŽāύ (Daemon) āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻ–āύāχ docker run āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻ⧇āύ, āϤāĻ–āύ CLI āĻŽā§‚āϞāϤ āĻĄāĻ•āĻžāϰ āχāĻžā§āϜāĻŋāύ⧇āϰ āĻāĻ•āϟāĻŋ API āĻāĻ¨ā§āĻĄāĻĒā§Ÿā§‡āĻ¨ā§āĻŸā§‡ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻĒāĻžāĻ āĻžā§ŸāĨ¤

  • āĻāϟāĻŋ āĻāĻ•āϟāĻŋ HTTP REST APIāĨ¤
  • āĻāϟāĻŋ JSON āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĄā§‡āϟāĻž āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇āĨ¤
  • āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āχāωāύāĻŋāĻ•ā§āϏ āϏāϕ⧇āϟ (/var/run/docker.sock) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

⧍. āϰāĻŋāĻŽā§‹āϟ API āĻāĻ•ā§āϏ⧇āϏ (Remote Access) ​

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ…āĻ¨ā§āϝ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ āĻĄāĻ•āĻžāϰ āχāĻžā§āϜāĻŋāύ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻŦ⧇ āφāĻĒāύāĻžāϕ⧇ TCP āϏāϕ⧇āϟ āĻāύāĻžāĻŦāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

CAUTION

āϏāϰāĻžāϏāϰāĻŋ TCP āĻĒā§‹āĻ°ā§āϟ āĻ“āĻĒ⧇āύ āĻ•āϰāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āĻā§āρāĻ•āĻŋāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āϏāĻŦ āϏāĻŽā§Ÿ TLS (SSL) āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āĻžāύ⧇āĻ•āĻļāύ āϏāĻŋāĻ•āĻŋāωāϰ āĻ•āϰ⧁āύāĨ¤


ā§Š. Docker SDKs ​

āĻĄāĻ•āĻžāϰ āϏāϰāĻžāϏāϰāĻŋ API āĻ•āϞ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĄā§‡āĻ­āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĢāĻŋāϏāĻŋ⧟āĻžāϞ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŦāĻž SDK āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϕ⧋āĻĄ āϞ⧇āĻ–āĻž āĻ…āύ⧇āĻ• āϏāĻšāϜ āĻšā§ŸāĨ¤

  • Python SDK: pip install docker
  • Go SDK: go get github.com/docker/docker/client

Python āωāĻĻāĻžāĻšāϰāĻŖ: ​

python
import docker
client = docker.from_env()

# āύāϤ⧁āύ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰāĻžāύ āĻ•āϰāĻž
container = client.containers.run("nginx", detach=True)
print(f"Container {container.id} is running!")

# āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϞāĻŋāĻ¸ā§āϟ āĻĻ⧇āĻ–āĻž
for c in client.containers.list():
    print(c.name)

ā§Ē. API āĻ­āĻžāĻ°ā§āϏāύāĻŋāĻ‚ (Versioning) ​

āĻĄāĻ•āĻžāϰ āχāĻžā§āϜāĻŋāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻāϰ API-āĻāϰāĻ“ āĻ­āĻžāĻ°ā§āϏāύ āφāĻĒāĻĄā§‡āϟ āĻšā§ŸāĨ¤

  • āφāĻĒāύāĻŋ docker version āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϞ⧇ API āĻ­āĻžāĻ°ā§āϏāύ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύāĨ¤
  • āϏāĻŦ āϏāĻŽā§Ÿ āϞ⧇āĻŸā§‡āĻ¸ā§āϟ āĻŦāĻž āĻ¸ā§āĻŸā§‡āĻŦāϞ āĻ­āĻžāĻ°ā§āϏāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύāĨ¤
  • āχāωāφāϰāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāϟ: http://localhost/v1.43/containers/json

ā§Ģ. āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§āϝāĻžāϟāĻŋāĻ• āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ (Programmatic Control) ​

āϕ⧇āύ āφāĻĒāύāĻŋ API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ?

  • Automation: āĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇āĨ¤
  • Cloud Management: āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āĻŦāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻŦāĻžāύāĻžāϤ⧇āĨ¤
  • CI/CD Build: āĻĒāĻžāχāĻĒāϞāĻžāχāύ⧇āϰ āϭ⧇āϤāϰ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāύ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāϤ⧇āĨ¤

āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ (Summary) ​

āĻĄāĻ•āĻžāϰ API āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻž āĻŽāĻžāύ⧇ āĻšāϞ⧋ āĻĄāĻ•āĻžāϰ⧇āϰ āĻ—āĻ­ā§€āϰ⧇ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āϏāĻžāϧāĻžāϰāĻŖ āχāωāϜāĻžāϰ⧇āϰ āĻ—āĻŖā§āĻĄāĻŋ āĻĒ⧇āϰāĻŋā§Ÿā§‡ āĻāĻ•āϜāύ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻ…āĻĨāĻŦāĻž āϟ⧁āϞāϏ āĻĄā§‡āĻ­āϞāĻĒāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—ā§œā§‡ āϤ⧁āϞāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤


IMPORTANT

āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āĻŸā§‡ āĻĄāĻ•āĻžāϰ āϏāϕ⧇āϟ (docker.sock) āĻāĻ•ā§āϏāĻĒā§‹āϜ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύ, āĻ•āĻžāϰāĻŖ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒ⧁āϰ⧋ āĻšā§‹āĻ¸ā§āĻŸā§‡āϰ āĻāĻ•ā§āϏ⧇āϏ āĻĒāĻžāĻ“ā§ŸāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤

Released under the MIT License.