我有一个创建 docker 容器的命令,来自 docker 容器 我想将一个端口绑定(bind)到主机
exec(`curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{ "Image": "strategy_baseline", "ExposedPorts": { "${PORT}/tcp": {} }, "HostConfig": { "Binds": ["strategies:/usr/src/app/strategies"], "NetworkMode": "titan_backend" }, "PortBindings": { "${PORT}/tcp": [{ "HostPort": "${PORT}" }]}, "Env": ["BOTNAME=${BOT_ID}", "PORT=${PORT}", "ASSETS=${ASSETS}"]}' -X POST http:/v1.4/containers/create?name=${BOT_ID}`,
所有变量都在文件中正确定义,因此不存在错误。
就目前而言,我通过 API 端点调用此命令,并且在运行
docker ps
的正确端口上正确创建了容器。输出:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab8e28ccd50f strategy_baseline "docker-entrypoint.s…" 2 hours ago Up 2 hours 3009/tcp defaultKeys
我期望将容器端口指定为
0.0.0.0:3009->3009/tcp
的内容。 .但唉,这行不通。我知道我可以通过指定容器名称来调用容器,因此在网络中的任何其他容器中,我都可以执行
http://container_name:3009/endpoint
但理想情况下我应该能够做到:
hhtp://vps_ip:3009/endpoint
到目前为止我做不到。非常感谢任何指针或帮助,在此先感谢!!
最佳答案
这个修改成功了
exec(`curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{ "Image": "strategy_baseline", "ExposedPorts": { "${PORT}/tcp": {} }, "HostConfig": { "Binds": ["strategies:/usr/src/app/strategies"], "NetworkMode": "titan_backend", "PortBindings": { "${PORT}/tcp": [{ "HostPort": "${PORT}" }]}}, "Env": ["BOTNAME=${BOT_ID}", "PORT=${PORT}", "ASSETS=${ASSETS}"]}' -X POST http:/v1.4/containers/create?name=${BOT_ID}`,
关于docker - 绑定(bind)通过api创建的Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62124849/