1
dangyuluo 2022-09-23 01:13:02 +08:00
something like https://github.com/danielsuo/libdocker
|
2
dangyuluo 2022-09-23 01:13:29 +08:00
|
3
Jirajine 2022-09-23 01:30:09 +08:00
https://docker-py.readthedocs.io/en/stable/
当然,之前版本的 docker-compose 就是 Python 写的,自然不缺 docker api 的 SDK 。 |
4
edis0n0 OP @Jirajine #3 对,想找的就是这个,docker.from_env().get("container1_name").restart() 感觉一行代码就够。
|
5
MengiNo 2022-09-23 01:52:11 +08:00 via Android
之前看过一个在 php 容器里随时重启 nginx 容器。大概是通过 --pid 的方式让 nginx 容器与 php 容器共享一部分 proc 信息,这样两个容器内 ps 出来的内容就是一模一样的。然后只要在 php 容器里 pkill 掉 nginx 的进程,nginx 容器就会因为 "1 号进程" 没了而重启。 虽然有点暴力但是好像可以实现 op 要的效果。 但是缺点是一旦 php 容器停了,则会导致两个容器就一起停掉。
|
6
neilp 2022-09-23 06:36:03 +08:00 via iPhone
可以, 用 curl 直接 post 就可以。 Restful 的 api
|
7
rrfeng 2022-09-23 07:35:13 +08:00 via Android
第二个容器启动时把主机上的 docker cli 和 sock 映射进去就行了。不用单独安装。
这才是标准方式。 |
8
julyclyde 2022-09-23 08:23:21 +08:00
1 按说,容器就没有重启这一说法吧。内容应该都复原了,其实是销毁另建?
2 用 HTTP 协议访问那个 sock 就行了 0 你的需求是“暴露一个 API”似乎并不是说暴露 dockerd sock 吧? |
9
zliea 2022-09-23 09:19:10 +08:00
docker 需要监听 2375 端口,可以在 systemd 文件 ExecStart 添加-H tcp://0.0.0.0:2375
然后就可以使用 docker api 了。 |
10
edis0n0 OP @julyclyde 我的场景是容器 1 的服务运行时会缓存一些内容,restart 就没了,需要做一个 HTTP API 给后台调用重启。
|
15
ragnaroks 2022-09-23 11:22:11 +08:00
|
16
my3157 2022-09-23 20:57:26 +08:00 via Android
mount docker cli 和 sock 进去,想干啥干啥,
|
17
noparking188 2022-09-23 22:43:28 +08:00
@edis0n0 #10 不重启容器里的服务,而是选择重启容器,是因为考虑实现更简单吗?
|
18
edis0n0 OP @noparking188 #17 是
|