如何在远程ubuntu服务器上部署docker容器?

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(撰写本文时为最新版本)及以下版本尚不支持此功能。但是,它将成为下一发行版的一部分


Ser*_*rie 9

  1. 在目标计算机上设置无密码SSH

  2. 运行以下命令以远程管理目标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

您可以在此处找到有关通用驱动程序的更多信息.

  1. 为新配置的docker机器设置所需的环境变量:

eval $(docker-machine env some_name)

  1. 在此终端/ cmd窗口中运行的任何Docker命令都将在远程计算机上运行.要测试运行:

码头工人

现在,您可以像在本地一样运行docker容器.

PS - 如果您需要通过Docker Toolbox远程管理在Windows上运行的docker实例,事情会变得有点复杂.(您需要通过VirtualBox的桥接网络适配器或通过端口转发解决docker linux VM(ssh,docker引擎,容器端口)中所需端口的网络访问;还解决Windows防火墙问题)


tho*_*oba 4

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

\n\n\n\n
\n

驱动程序将在创建时执行一系列任务:

\n\n
    \n
  • 如果主机上没有运行 docker,则会自动安装。
  • \n
  • 它将更新主机软件包(apt-get update、yum update\xe2\x80\xa6)。
  • \n
  • 它将生成证书来保护 docker 守护进程。
  • \n
  • docker 守护进程将重新启动,因此所有正在运行的容器将停止。
  • \n
  • 主机名将更改以适合计算机名称。
  • \n
\n
\n\n

将本地容器部署到remote_server:

\n\n

添加后,remote_server通过docker-machine执行generic driver以下操作来部署您的 API。

\n\n
    \n
  • 获取服务器的环境:docker-machine env remote_server

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

  • \n
  • 构建 API 镜像:docker build -t api_image .. (Dockerfile 目录)

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

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

  • \n
\n\n

希望您觉得这有帮助。

\n