Docker Engine API
Docker Engine 提供了 RESTful API,可以用于自动化容器管理。
API 端点
Docker Engine API 默认监听在:
- Unix Socket:
unix:///var/run/docker.sock - TCP:
tcp://localhost:2375(不加密) - TLS:
tcp://localhost:2376(加密)
启用 API
Linux
编辑 /etc/docker/daemon.json:
json
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}启用 TLS
json
{
"hosts": ["tcp://0.0.0.0:2376"],
"tls": true,
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/server-key.pem"
}使用示例
cURL
sh
# 列出容器
curl --unix-socket /var/run/docker.sock \
http://localhost/containers/json
# 创建容器
curl -X POST --unix-socket /var/run/docker.sock \
-H "Content-Type: application/json" \
-d '{"Image": "nginx:latest"}' \
http://localhost/containers/create
# 启动容器
curl -X POST --unix-socket /var/run/docker.sock \
http://localhost/containers/{id}/startPython
python
import docker
client = docker.DockerClient(base_url='unix://var/run/docker.sock')
# 列出容器
containers = client.containers.list()
# 创建容器
container = client.containers.run('nginx:latest', detach=True)
# 停止容器
container.stop()Node.js
javascript
const Docker = require('dockerode');
const docker = new Docker({ socketPath: '/var/run/docker.sock' });
// 列出容器
docker.listContainers((err, containers) => {
console.log(containers);
});
// 创建容器
docker.createContainer({ Image: 'nginx:latest' }, (err, container) => {
container.start((err, data) => {
console.log('Container started');
});
});API 参考
主要 API 端点:
GET /containers/json- 列出容器POST /containers/create- 创建容器POST /containers/{id}/start- 启动容器POST /containers/{id}/stop- 停止容器GET /images/json- 列出镜像POST /images/create- 拉取镜像POST /build- 构建镜像
完整 API 文档:https://docs.docker.com/engine/api/
安全注意事项
警告
- 不要在生产环境暴露未加密的 API
- 使用 TLS 加密 API 连接
- 配置访问控制和认证
- 限制网络访问