如何在远程Ubuntu服务器上部署Docker容器?

我在Docker容器中实现了一个API,我想将这个容器部署到远程的ubuntu服务器。 我怎样才能做到这一点? 我的API使用了许多资源,我使用MLDB框架来实现它。 我想在这个远程Ubuntu服务器上部署包含API的容器。 到目前为止,我已经find了许多指南,在AWS和DigitalOcean上部署API,但由于我已经有了一个远程的Ubuntu服务器,我不需要这些服务器吗? 那么我怎么可以部署我的容器,让其他人能够testing我的API呢? 如果有更好的方法来部署我的API(希望免费或以便宜的成本),那么请让我知道。

提前致谢。

我会build议在您的本地开发环境中安装docker-machine ,并使用generic driver来添加remote_server ,您可以使用eval $(docker-machine env remote_server)连接到它并部署您的API。

  • 安装docker机
  • 用SSH创build使用现有VM /主机的机器。

驱动程序将执行创build任务列表:

  • 如果docker没有在主机上运行,​​它将被自动安装。
  • 它将更新主机包(apt-get update,yum update …)。
  • 它将生成证书来保护docker守护进程。
  • docker守护程序将被重新启动,因此所有正在运行的容器将被停止。
  • 主机名将被更改为适合机器名称。

将本地容器部署到remote_server:

通过generic driverdocker-machine添加到remote_server ,请执行以下操作来部署您的API。

  • 获取服务器的envs:docker docker-machine env remote_server

  • 将shell连接到服务器: eval $(docker-machine env remote_server)

  • 构buildAPI图像: docker build -t api_image . 。 (Dockerfile DIR)

  • 运行容器: docker run -d -p 1111:1111 api_image

  • 使用curlcurl $(docker-machine ip remote_server):1111

希望你觉得这有帮助。

事实上,不太在乎你的容器是什么。 它可以是什么。 你只需要一个docker来部署它并打开它的访问权限。 如果你可以通过ssh访问Ubuntu服务器,或者在那里安装docker。 在Ubuntu中很简单,你可以查看这个指南:

https://docs.docker.com/engine/installation/linux/ubuntu/

在此之后,在你的服务器上部署docker容器,在docker run命令中使用-p将你的API需要的端口映射到主机。 当然,您需要将该端口打开到外部访问的机器,这取决于您的服务器configuration。

所以你可以做到“正常”。 不知道您是否正在寻找专注于AWS的特殊方式。

  1. 在目标机器上设置无密码的SSH

  2. 运行以下命令以远程pipe理目标虚拟机上的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

你可以在这里find关于通用驱动程序的更多信息。

  1. 为新configuration的docker机器设置所需的环境variables:

eval $(docker-machine env some_name)

  1. 在此terminal/ cmd窗口中运行的任何Docker命令都将在远程机器上运行。 要testing运行:

docker工人

现在,您可以像在本地一样运行Docker容器。

PS – 如果您需要通过Docker Toolbox远程pipe理在Windows上运行的Docker实例,那么事情会变得复杂一些。 (您需要通过VirtualBox的桥接networking适配器或通过端口转发来解决对docker linux VM(ssh,docker引擎,容器端口)中所需端口的networking访问;也解决windows防火墙问题)