8 Docker Remote API

    xiaoxiao2021-12-14  21

    Docker Remote API 是将会用来取代 Docker 命令的工具。本文将会用 curl 操作 Docker Remote API。

    准备:

    示例系统是 Ubuntu,配置文件在 /etc/default/docker。 需要把此文件的 DOCKER_OPTS 改为 DOCKER_OPTS="-H 127.0.0.1:5555 -H unix:///var/run/docker.sock"。 修改完毕后,重启 Docker。

    Docker 常用端口为 4243,本文遵照原文,改为 5555,生产环境一定要注意该端口不要被未授权 IP 访问。

    1 操作容器的api:

    列出所有容器

    GET /containers/json

    创建新容器

    POST /containers/create

    检查容器

    GET /containers/(id)/json

    用于获取容器底层信息。

    进程列表

    GET /containers/(id)/top

    获取容器内运行进程的列表。

    容器日志

    GET /containers/(id)/logs

    获取容器内 stdout 和 stderr 的输出。

    导出容器

    GET /containers/(id)/export

    相当于 docker export,可以直接 curl 到一个镜像文件。

    启动容器

    POST /containers/(id)/start

    停止容器

    POST /containers/(id)/stop

    重启容器

    Restart a Container

    KILL容器

    POST /containers/(id)/kill

    2 用于操作镜像的 Docker Remote API:

    创建一个镜像

    镜像可以从两个方式获取:

    从 registry 中 pull 一个。导入一个。

    用法:

    POST /images/create POST /images/create?fromImage=base 获取名叫 base 的镜像。 POST /images/create?fromSrc=url 从 url 导入镜像。

    Flux7 这里就有一个 BUG。 shell操作中带有 & 的情况下,是需要非常小心的。 图片中的命令需要改正为:curl -v -X POST "http://localhost:5555/images/create?fromImage=base&tag=latest"

    从容器创建镜像

    POST /commit

    列出镜像

    GET /images/json

    插入文件

    POST /images/(name)/insert POST /images/test/insert?path=/usr&url=myurl

    如图,将 url 提供的文件插入到 name 对应的镜像的 path 目录中。

    删除镜像

    DELETE /images/(name)

    推送镜像到 registry

    POST /images/(name)/push

    为镜像做标签

    POST /images/(name)/tag

    搜索镜像

    GET /images/search

    查看镜像历史

    GET /images/(name)/history

    构建镜像

    POST /build

    这个需要解释一下:POST 传入的 Dockerfile 文件必须是 tar.gz 格式。或者不传入 Dockerfile,而是用 remote 参数指定一个,这种情况下不要求格式。

    使用 POST 传入文件的用法:

    再例如使用 remote 传入 Dockerfile 的 url 用法:

    命令 # curl localhost/Dockerfile #用于展示存储Dockerfile的URI FROM ubuntu RUN mkdir /myvol RUN echo "hello world" > /myvol/greating VOLUME /myvol 命令 # curl -X POST "127.0.0.1:4243/build?t=asd&remote=http://localhost/Dockerfile" 命令 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE asd latest 1946f0511bda 36 seconds ago 188.3 MB

    转载请注明原文地址: https://ju.6miu.com/read-969353.html

    最新回复(0)