在主机上从Docker容器内部创建Docker容器



给出一个简短的背景:对于一个学校项目,我必须构建一个简单版本的AWS RDS。

简化为:Postgres和Redis的实例可以为用户提供,这些实例可以运行在一个服务器/docker集群节点上。

我目前面临的最大障碍是,这个应用程序将在一个docker集群内运行,因此在一个docker容器内,我找不到/想到一个好的方法来为我的数据库在集群节点上创建容器,从原来的容器内的应用程序运行。

所以我的问题是:

是否有办法在我的主机系统上创建docker容器,从该系统上的docker容器内部?

您可以将主机的docker套接字映射到容器中,然后-如果您在容器中安装了docker cli -您可以访问主机的docker环境。

docker安装了一个标准镜像,名为docker

如果你运行它并启动一个shell,像这样(注意docker套接字的映射)

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker:latest sh

现在你在一个容器中,但是你可以对主机的docker运行命令。

作为一个例子,你可以用

开始一个nginx图像
docker run --rm -d nginx

当你退出shell和容器时,nginx容器将在主机上运行。

可以通过挂载/var/run/Docker来访问Docker引擎API。从主机到你的容器。

当你在docker swarm上运行时,值得注意的是,处理容器、镜像和卷的api端点只会影响当前节点。但是处理服务、栈和任务的api端点必须在管理节点上执行,并且会影响整个集群。

所以如果你想在一个特定的节点上创建一个运行postgres的容器,你自己也需要在那个节点上运行一个你可以寻址的容器。

,但你可以有一个单一的容器运行在一个管理节点上,创建一个postgres服务实例,这将根据标签和其他放置约束,在集群的某个地方创建。

如果直接调用API,或者使用curl太麻烦,那么按照@Hans kilian的答案使用docker容器是更好的方法,但是,您的容器需要在管理节点上执行群级操作。

最新更新