ç§ã¯ Docker ã®ã¹ã¿ãã ãœãªã¥ãŒã·ã§ã³ ã¢ãŒããã¯ãã§ãã Mike Coleman ã§ãããã®åœ¹å²ã§ã¯ãAI ã®å°å ¥ã«ã€ããŠäŒæ¥ã®ã客æ§ãšè©±ãããšã«å€ãã®æéãè²»ãããŠããŸããç§ãäœåºŠãè³ã«ããããšã® 1 ã€ã¯ããããã®äŒæ¥ã¯ AI ããŒã«ã®å°å ¥ã«é¢ããŠé©åãªã¬ãŒãã¬ãŒã«ã確å®ã«æŽåãããŠããããšãæãã§ãããšããããšã§ããÂ
ããšãã°ãå€ãã®çµç¹ã¯ãéçºè ã AI ã¢ã·ã¹ã¿ã³ãã Docker ã®ã¢ãã« ã³ã³ããã¹ã ãããã³ã« (MCP) ããŒã«ãä»ããŠã¢ã¯ã»ã¹ã§ããããŒã«ãããå³å¯ã«å¶åŸ¡ããããšèããŠããŸããDocker Hub ããã€ã¡ãŒãžãçŽæ¥ãã«ããããšãçŠæ¢ãã峿 Œãªã»ãã¥ãªã㣠ããªã·ãŒããããã®ããããŸãããŸããä¿¡é Œã§ãã MCP ãµãŒããŒã®å³éžãããã»ãããããŒã ãé¡§å®¢ã«æäŸãããã ãã®äŒæ¥ããããŸãã
ãã®æçš¿ã§ã¯ãç¬èªã®MCPã«ã¿ãã°ãäœæããæ¹æ³ã«ã€ããŠèª¬æããŸããæ¬¡ã®æ¹æ³ã«ã€ããŠèª¬æããŸãã
- ãã©ãŒã¯ Docker ã®å
¬åŒ MCP ã«ã¿ãã°
- ç¬èªã®ã³ã³ãããŒã»ã¬ãžã¹ããªã§MCPãµãŒããŒã»ã€ã¡ãŒãžããã¹ããã
- ãã©ã€ããŒãã»ã«ã¿ãã°ã®å
Ž
- MCP ã²ãŒããŠã§ã€ã䜿çšããŠããããã®ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«å
¬éãã
Docker ã® MCP ã«ã¿ãã°ããæ¢åã® MCP ãµãŒããŒããã«ããå Žåã§ããç¬èªã® MCP ãµãŒããŒãæ§ç¯ããå Žåã§ããçµç¹ã«é©ããã¯ãªãŒã³ã§å¶åŸ¡ããã MCP ç°å¢ãåŸãããŸãã
Docker ã® MCP ããŒã«ã®ç޹ä»
Docker ã® MCP ãšã³ã·ã¹ãã ã«ã¯ã次㮠3 ã€ã®ã³ã¢éšåããããŸãã
MCPã«ã¿ãã°
MCP ãµãŒããŒå®çŸ©ã® YAML ããŒã¹ã®ã€ã³ããã¯ã¹ããããã¯ãåãµãŒããŒã®å®è¡æ¹æ³ãšãããã«é¢é£ä»ããããŠããã¡ã¿ããŒã¿ (説æãã€ã¡ãŒãžããªããžããª) ãèšè¿°ããŸããMCPã«ã¿ãã°ã¯ã220+ã³ã³ããåãããMCPãµãŒããŒããã¹ãããã¯ãªãã¯ããã ãã§ããã«å®è¡ã§ããŸããÂ
å ¬åŒã®docker-mcpã«ã¿ãã°ã¯èªã¿åãå°çšã§ãããã ãããã©ãŒã¯ãããããšã¯ã¹ããŒãããããç¬èªã®ãã«ããè¡ã£ããããããšã¯ã§ããŸãã
MCP Gateway
MCP ã²ãŒããŠã§ã€ã¯ãã¯ã©ã€ã¢ã³ãã MCP ãµãŒããŒã«æ¥ç¶ããŸããäœãããã¹ããããããã§ã¯ãªãããµãŒããŒã¯éåžžã®Dockerã³ã³ãããŒã«ãããŸããããã ããHTTP SSE ãŸã㯠STDIO ãä»ããŠã«ã¿ãã°ããè€æ°ã®ãµãŒããŒãå ¬éããããã® 1 ã€ã®æ¥ç¶ãã€ã³ããæäŸããŸãã
åŸæ¥ãX ãµãŒããŒãš Y ã¯ã©ã€ã¢ã³ãã§ã¯ãX * Y æ§æãšã³ããªãå¿ èŠã§ãããMCP ã²ãŒããŠã§ã€ã¯ãããã Y ãšã³ã㪠(ã¯ã©ã€ã¢ã³ãããšã« 1 ã€) ã«æžãããŸãããµãŒããŒã¯ãéžæããã«ã¿ãã°ã«åºã¥ããŠããã¯ã°ã©ãŠã³ãã§ç®¡çãããŸãã
ã²ãŒããŠã§ã€ã¯ãç¹å®ã®ã«ã¿ãã°ã䜿çšããŠèµ·åã§ããŸãã
docker mcp gateway run âcatalog my-private-catalog
MCP Gatewayã¯ãªãŒãã³ãœãŒã¹ã§ã: https://github.com/docker/mcp-gateway
å³ 1: MCP ã²ãŒããŠã§ã€ã¯ãè€æ°ã® MCP ãµãŒããŒãå ¬éããããã® 1 ã€ã®æ¥ç¶ãã€ã³ããæäŸããŸã
MCP ããŒã«ããã (GUI)
Docker Desktop ã«çµã¿èŸŒãŸããŠãã MCP Toolkit ã¯ãMCP ã«ã¿ãã°ãš MCP ã²ãŒããŠã§ã€ãã°ã©ãã£ã«ã«ã«æäœããæ¹æ³ãæäŸããŸããããã«ãããæ¬¡ã®ããšãå¯èœã«ãªããŸãã
- è±å¯ãªGUIãä»ããDockerã®MCPã«ã¿ãã°ãžã®ã¢ã¯ã»ã¹
- ã·ãŒã¯ã¬ããã®å®å
šãªåŠç (GitHub ããŒã¯ã³ãªã©)
- MCPãµãŒããŒãç°¡åã«æå¹ã«
- éžæããMCPãµãŒããŒãã¯ã³ã¯ãªãã¯ã§ãClaudeã³ãŒããClaudeãã¹ã¯ããããã³ãŒããã¯ã¹ãã«ãŒãœã«ãContinue.dev ãªã©ã®ããŸããŸãªã¯ã©ã€ã¢ã³ãã«æ¥ç¶ããŸããããã³ Gemini CLI
ã¯ãŒã¯ãããŒã®æŠèŠ
以äžã®ã¯ãŒã¯ãããŒã¯ãã«ã¹ã¿ã MCPã«ã¿ãã°ãäœæããŠäœ¿çšããããã«å¿ èŠãªæé ã瀺ããŠããŸããÂ
åºæ¬çãªæé ã¯æ¬¡ã®ãšããã§ãã
- å
¬åŒã®MCPã«ã¿ãã°ããšã¯ã¹ããŒãããŠããã®å
容ã調ã¹ãŸã
- ã«ã¿ãã°ããã©ãŒã¯ããŠç·šéã§ããããã«ãã
- ç¬èªã®ãã©ã€ããŒãã«ã¿ãã°ãäœæãã
- ç¹å®ã®ãµãŒããŒãšã³ããªã远å ãã
- ã€ã¡ãŒãžããã« (ãŸãã¯åæ§ç¯) ããŠã¬ãžã¹ããªã«ããã·ã¥ãã
- ã€ã¡ãŒãžã䜿çšããããã«ã«ã¿ãã°ãæŽæ°ãã
- ã«ã¿ãã°ã䜿çšã㊠MCP ã²ãŒããŠã§ã€ãå®è¡ãã
- ã¯ã©ã€ã¢ã³ããæ¥ç¶ãã
ã¹ããããã€ã¹ãããã¬ã€ã:ã«ã¹ã¿ã MCPã«ã¿ãã°ã®äœæãšäœ¿çš
ãŸãããã®ããã»ã¹ãç¹°ãè¿ãå¯èœã«ããåŸã§ç°¡åã«å€æŽã§ããããã«ããããã«ãããã€ãã®ç°å¢å€æ°ãèšå®ããŸãã
ãã®äŸã§ã¯ãæ¢åã® MCP ãµãŒã㌠(DuckDuckGo) ããã©ã€ããŒã ã¬ãžã¹ã㪠(ghcr.io/mikegcoleman) ã«ç§»è¡ãããšããŸããç¬èªã®ã«ã¹ã¿ã MCP ãµãŒã㌠ã€ã¡ãŒãžãã«ã¿ãã°ã«è¿œå ããããšãã§ããŸãããããã«ã€ããŠã¯ä»¥äžã§ã説æããŸããÂ
export MCP_SERVER_NAME="duckduckgo"
export GHCR_REGISTRY="ghcr.io"
export GHCR_ORG="mikegcoleman"
export GHCR_IMAGE="${GHCR_REGISTRY}/${GHCR_ORG}/${MCP_SERVER_NAME}:latest"
export FORK_CATALOG="my-fork"
export PRIVATE_CATALOG="my-private-catalog"
export FORK_EXPORT="./my-fork.yaml"
export OFFICIAL_DUMP="./docker-mcp.yaml"
export MCP_HOME="${HOME}/.docker/mcp"
export MCP_CATALOG_FILE="${MCP_HOME}/catalogs/${PRIVATE_CATALOG}.yaml"
ã¹ããã 1:å ¬åŒMCPã«ã¿ãã°ããšã¯ã¹ããŒãããÂ
å ¬åŒã®Docker MCPCatalogããšã¯ã¹ããŒããããšããã¹ãŠã®ãµãŒããŒãäžèŠ§è¡šç€ºããèªã¿åãå¯èœãªããŒã«ã«YAMLãã¡ã€ã«ãåŸãããŸããããã«ãããç»åã説æããªããžããªãœãŒã¹ãªã©ã®ã¡ã¿ããŒã¿ã CLI ã®å€éšã§ç°¡åã«æ€æ»ã§ããŸãã
docker mcp catalog show docker-mcp --format yaml > "${OFFICIAL_DUMP}"
ã¹ããã 2: å ¬åŒMCPã«ã¿ãã°ããã©ãŒã¯ãã
å ¬åŒã«ã¿ãã°ããã©ãŒã¯ãããšã倿Žå¯èœãªã³ããŒãäœæãããŸããçµã¿èŸŒã¿ã® Docker ã«ã¿ãã°ã¯èªã¿åãå°çšã§ããããããã®ãã©ãŒã¯ã¯ç·šéå¯èœãªããŒãžã§ã³ãšããŠæ©èœããŸãã
docker mcp catalog fork docker-mcp "${FORK_CATALOG}"
docker mcp catalog ls
ã¹ããã 3: æ°ããã«ã¿ãã°ãäœæãã
次ã«ãæç€ºçã«ãµããŒããããµãŒããŒã®ã¿ãä¿æããæ°ããã«ã¿ãã°ãäœæããŸããããã«ãããçµç¹ã¯ãå®å šã«ææããã¯ãªãŒã³ã§å¶åŸ¡ãããã«ã¿ãã°ã確å®ã«å®è¡ã§ããŸãã
docker mcp catalog create "${PRIVATE_CATALOG}"
ã¹ããã 4: ç¹å®ã®ãµãŒã㌠ãšã³ããªã远å ãã
ãã©ãŒã¯ããã«ã¿ãã°ããã¡ã€ã«ã«ãšã¯ã¹ããŒãããŠãå¿ èŠãªãšã³ããªã ããã³ããŒã§ããããã«ããŸããããã§ã¯ãduckduckgoãµãŒããŒã®ã¿ãååŸãããã©ã€ããŒãã«ã¿ãã°ã«è¿œå ããŸãã
docker mcp catalog export "${FORK_CATALOG}" "${FORK_EXPORT}"
docker mcp catalog add "${PRIVATE_CATALOG}" "${MCP_SERVER_NAME}" "${FORK_EXPORT}"
ã¹ããã 5: ã€ã¡ãŒãžããã« (ãŸãã¯åæ§ç¯) ããã¬ãžã¹ããªã«ããã·ã¥ãã
ãã®æç¹ã§ã¯ã次㮠2 ã€ã®ãªãã·ã§ã³ããããŸãã
Docker Hub ãããã«ã§ããå Žåã¯ãåã«ãšã¯ã¹ããŒããã YAML ãã¡ã€ã«ãèŠãŠãç®çã®ãµãŒããŒã®ã€ã¡ãŒãž ããŒãèŠã€ããŸããæ¬¡ã«ããã®ã€ã¡ãŒãžãããŒã«ã« ãã·ã³ã«ãã«ããŠã³ããŸãããã«ããŠã³ãããã䜿çšãããªããžããªã«ã¿ã°ãä»ãçŽããŸããÂ
Example for duckduckgo
vi "${OFFICIAL_DUMP}" # look for the duckduck go entry and find the image: key which will look like this:
# image: mcp/duckduckgo@sha256:68eb20db6109f5c312a695fc5ec3386ad15d93ffb765a0b4eb1baf4328dec14f
# pull the image to your machine
docker pull \
mcp/duckduckgo@sha256:68eb20db6109f5c312a695fc5ec3386ad15d93ffb765a0b4eb1baf4328dec14f
# tag the image with the appropriate registry
docker image tag mcp/duckduckgo@sha256:68eb20db6109f5c312a695fc5ec3386ad15d93ffb765a0b4eb1baf4328dec14f ${GHCR_IMAGE}
# push the image
docker push ${GHCR_IMAGE}
ãã®æç¹ã§ã次ã®ã»ã¯ã·ã§ã³ã§MCPã«ã¿ãã°ãã¡ã€ã«ã®ç·šéã«é²ãããšãã§ããŸãã
Â
Docker Hub ããããŠã³ããŒãã§ããªãå Žåã¯ããã€ã§ã GitHub ãªããžããªãã MCP ãµãŒããŒãåæ§ç¯ã§ããŸãããããè¡ãã«ã¯ããšã¯ã¹ããŒãããã YAML ãéããã¿ãŒã²ãã ãµãŒããŒã® GitHub ãœãŒã¹ ãªããžããªãæ¢ããŸããviãcatãgrep ãªã©ã®ããŒã«ã䜿çšããŠèŠã€ããããšãã§ããŸã â éåžžã¯ãœãŒã¹ããŒã®äžã«ãªã¹ããããŠããŸããÂ
Example for duckduckgo:
source: https://github.com/nickclyde/duckduckgo-mcp-server/tree/main
export SOURCE_REPO="https://github.com/nickclyde/duckduckgo-mcp-server.git"
次ã«ãå ã® GitHub ãªããžããªãã MCP ãµãŒã㌠ã€ã¡ãŒãžãåæ§ç¯ããç¬èªã®ã¬ãžã¹ããªã«ããã·ã¥ããŸããããã«ãããã€ã¡ãŒãžãå®å šã«å¶åŸ¡ã§ããDocker Hub ã¢ã¯ã»ã¹ãžã®äŸåãæé€ãããŸãã
echo "${GH_PAT}" | docker login "${GHCR_REGISTRY}" -u "${GHCR_ORG}" --password-stdin
docker buildx build \
--platform linux/amd64,linux/arm64 \
"${SOURCE_REPO}" \
-t "${GHCR_IMAGE}" \
--push
ã¹ããã 6: ã«ã¿ãã°ãæŽæ°ããÂ
ã€ã¡ãŒãžã GHCR ã«å ¬éããåŸããã©ã€ããŒã ã«ã¿ãã°ãæŽæ°ããŠãDocker Hub ããŒãžã§ã³ã§ã¯ãªãæ°ããã€ã¡ãŒãžãæãããã«ããŸãããã®æé ã§ã¯ãã«ã¿ãã°ãšã³ããªãäœæããã€ã¡ãŒãžã«çŽæ¥ãªã³ã¯ããŸãã
vi "${MCP_CATALOG_FILE}"
# Update the image line for the duckduckgo server to point to the image you created in the previous step (e.g. ghcr.io/mikegcoleman/duckduckgo-mcp)
äžèŠã«ãªã£ãã«ã¿ãã°ã®ãã©ãŒã¯ãããããŒãžã§ã³ãåé€ããŸã
docker mcp catalog rm "${FORK_CATALOG}"
ã¹ããã 7: MCP ã²ãŒããŠã§ã€ãå®è¡ããÂ
ãµãŒããŒãæå¹ã«ãããšãMCP ç°å¢å ã§ãµãŒããŒãã¢ã¯ãã£ãåãããŸããæå¹ã«ãããšãã²ãŒããŠã§ã€ã¯ãããããŒãããæ¥ç¶ãããã¯ã©ã€ã¢ã³ãã䜿çšã§ããããã«ãªããŸããåããµãŒããŒã 2 ã€ã®å Žæ (ã«ã¿ãã°ãšå ã®ã«ã¿ãã°) ã«ãªã¹ããããŠããããããéè€ãããµãŒããŒãã«é¢ããèŠåã衚瀺ãããŸã
docker mcp server enable "${MCP_SERVER_NAME}"
docker mcp server list
ã¹ããã 8: 人æ°ã®ããã¯ã©ã€ã¢ã³ãã«æ¥ç¶ããÂ
次ã«ãMCP ã²ãŒããŠã§ã€ãéžæããã¯ã©ã€ã¢ã³ããšçµ±åããŸããã²ãŒããŠã§ã€ãå®è¡ããããã®çã®ã³ãã³ãã¯æ¬¡ã®ãšããã§ããÂ
docker mcp gateway run --catalog "${PRIVATE_CATALOG}"
ããããããã¯ããŒã«ã«ãã·ã³äžã§ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããã ãã§ãããããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšçµ±åãããå Žåã«çºçããŸããÂ
ãããè¡ãã«ã¯ã䜿çšããã¯ã©ã€ã¢ã³ãã§æ©èœããããã« raw ã³ãã³ãããã©ãŒãããããå¿ èŠããããŸããããšãã°ãVS Code ã§ã¯ã次ã®ããã«mcp.jsonãæŽæ°ããŸãã
"servers": {
"docker-mcp-gateway-private": {
"type": "stdio",
"command": "docker",
"args": [
"mcp",
"gateway",
"run",
"--catalog",
"my-private-catalog"
]
}
}
æåŸã«ãã²ãŒããŠã§ã€ãæ°ãã GHCR ã€ã¡ãŒãžã䜿çšããŠããããšãããã³ãµãŒããŒãé©åã«æå¹ã«ãªã£ãŠããããšã確èªããŸãããã®ã¯ã€ã㯠ãã§ãã¯ã§ã¯ãã¯ã©ã€ã¢ã³ããæ¥ç¶ããåã«ããã¹ãŠãæåŸ ã©ããã«èšå®ãããŠããããšã確èªããŸãã
docker mcp server inspect "${MCP_SERVER_NAME}" | grep -E 'name|image'
ããŒã³ãã³ãã®æŠèŠ
次㮠CLI ã³ãã³ãã䟿å©ãªå ŽåããããŸãã
docker mcp catalog show docker-mcp --format yaml > ./docker-mcp.yaml
docker mcp catalog fork docker-mcp my-fork
docker mcp catalog export my-fork ./my-fork.yaml
docker mcp catalog create my-private-catalog
docker mcp catalog add my-private-catalog duckduckgo ./my-fork.yaml
docker buildx build --platform linux/amd64,linux/arm64 https://github.com/nickclyde/duckduckgo-mcp-server.git \
-t ghcr.io/mikegcoleman/duckduckgo:latest --push
docker mcp server enable duckduckgo
docker mcp gateway run --catalog my-private-catalog
çµè«
Docker ã® MCP ããŒã«ããããã«ã¿ãã°ãã²ãŒããŠã§ã€ã䜿çšãããšãéçºè ã顧客ããŸã㯠AI ãšãŒãžã§ã³ããå©çšã§ããããŒã«ãå®å šã«å¶åŸ¡ã§ããŸãã1 åéãã®ã»ããã¢ãããæ£åšããç»åããŸãã¯ã¯ãã¹ã¯ã©ã€ã¢ã³ãæ¥ç¶ã®é çã®çš®ã¯ãããããŸããã
次ã®ã¹ããã:
- ã«ã¿ãã°ã«ãµãŒããŒã远å ãã
- æ°ãããµãŒããŒã€ã¡ãŒãžãåæ§ç¯ããŠå
¬éããããã® CI ã®èšå®
- ã«ã¿ãã°ã瀟å
ãŸãã¯é¡§å®¢ãšå
±æãã
ããã¥ã¡ã³ãïŒ
ãã¥ã¬ãŒã·ã§ã³ã楜ããã§ãã ãããÂ
ã«ã¹ã¿ã ã«ã¿ãã°ã®äœæãããã«ç°¡åã«ããããã«ãããã€ãã®ãšããµã€ãã£ã³ã°ãªæ©èœåŒ·åã«åãçµãã§ããŸããææ°æ å ±ã«ãæåŸ ãã ãã!
ããã«è©³ãã
- MCP ã«ã¿ãã°ã®æ¢çŽ¢: ã³ã³ããåãããã»ãã¥ãªãã£åŒ·åããã MCP ãµãŒããŒãæ€åºãã
- Docker Desktop ãéãã MCP Toolkit ã®äœ¿çšãéå§ããŸã (MCP Toolkit ãèªåçã«èµ·åããã«ã¯ãããŒãžã§ã³ 448 以éãå¿ èŠã§ã)
- Open Source GeniusãDocker MCP ToolkitãšClaude Desktopã§ãšã³ããããŒè² åµãã«ããããæ¹æ³ã«ã€ããŠèªã