如何在远程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 driver
将docker-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
-
使用
curl
:curl $(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的特殊方式。
-
在目标机器上设置无密码的SSH
-
运行以下命令以远程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关于通用驱动程序的更多信息。
- 为新configuration的docker机器设置所需的环境variables:
eval $(docker-machine env some_name)
- 在此terminal/ cmd窗口中运行的任何Docker命令都将在远程机器上运行。 要testing运行:
docker工人
现在,您可以像在本地一样运行Docker容器。
PS – 如果您需要通过Docker Toolbox远程pipe理在Windows上运行的Docker实例,那么事情会变得复杂一些。 (您需要通过VirtualBox的桥接networking适配器或通过端口转发来解决对docker linux VM(ssh,docker引擎,容器端口)中所需端口的networking访问;也解决windows防火墙问题)