sni*_*r71 20 api ubuntu ubuntu-server docker mldb
我在docker容器中实现了一个API,我想将这个容器部署到一个远程的ubuntu服务器上.我怎么能这样做呢?我的API使用了很多资源,我使用了MLDB框架来实现它.我想在这个远程ubuntu服务器上部署包含API的容器.到目前为止,我已经找到了许多在AWS和DigitalOcean上部署API的指南,但是因为我已经可以访问远程ubuntu服务器而不需要这些服务器了吗?那么我如何部署我的容器以便其他人能够测试我的API?如果有更好的方式来部署我的API(希望免费或廉价),请告诉我.
提前致谢.
Dir*_*irk 12
自从Docker 18.09.0发布以来,这变得非常容易。此版本分别为环境变量和命令的参数添加了对ssh协议的支持。DOCKER_HOST-Hdocker ...
首先,您需要对目标计算机的SSH访问(使用任何方法都可能需要)。
然后,要么:
# Re-direct to remote environment.
export DOCKER_HOST="ssh://my-user@remote-host"
# Run a container. To prove that we are on remote-host, this will print its hostname.
docker run --rm --net host busybox hostname -f
# All docker commands here will be run on remote-host.
# Switch back to your local environment.
unset DOCKER_HOST
Run Code Online (Sandbox Code Playgroud)
或者,如果您愿意,也可以只执行一项命令:
docker -H "ssh://my-user@remote-host" run --rm --net host busybox hostname -f
Run Code Online (Sandbox Code Playgroud)
请注意,docker-composev.1.23.1(撰写本文时为最新版本)及以下版本尚不支持此功能。但是,它将成为下一发行版的一部分。
在目标计算机上设置无密码SSH
运行以下命令以远程管理目标VM上的Docker(如果需要,还可以安装Docker):
docker-machine create --driver generic --generic-ip-address = 10.123.2.74 --generic-ssh-user = docker --generic-ssh-key~/.ssh/id_rsa some_name
您可以在此处找到有关通用驱动程序的更多信息.
eval $(docker-machine env some_name)
码头工人
现在,您可以像在本地一样运行docker容器.
PS - 如果您需要通过Docker Toolbox远程管理在Windows上运行的docker实例,事情会变得有点复杂.(您需要通过VirtualBox的桥接网络适配器或通过端口转发解决docker linux VM(ssh,docker引擎,容器端口)中所需端口的网络访问;还解决Windows防火墙问题)
我建议docker-machine在您的本地开发环境中安装并使用generic driver添加remote_server,然后您可以使用eval $(docker-machine env remote_server)连接到它并部署您的 API。
\n\n\n驱动程序将在创建时执行一系列任务:
\n\n\n
\n- 如果主机上没有运行 docker,则会自动安装。
\n- 它将更新主机软件包(apt-get update、yum update\xe2\x80\xa6)。
\n- 它将生成证书来保护 docker 守护进程。
\n- docker 守护进程将重新启动,因此所有正在运行的容器将停止。
\n- 主机名将更改以适合计算机名称。
\n
将本地容器部署到remote_server:
\n\n添加后,remote_server通过docker-machine执行generic driver以下操作来部署您的 API。
获取服务器的环境:docker-machine env remote_server
将 shell 连接到服务器:eval $(docker-machine env remote_server)
构建 API 镜像:docker build -t api_image .. (Dockerfile 目录)
运行容器:docker run -d -p 1111:1111 api_image
使用curl:curl $(docker-machine ip remote_server):1111
希望您觉得这有帮助。
\n| 归档时间: |
|
| 查看次数: |
17511 次 |
| 最近记录: |