docker - 如何在 docker 容器之间链接二进制文件

标签 docker

是否可以使用 docker 将二进制文件从一个容器公开到另一个容器?

例如,我有 2 个容器:

  • centos6
  • sles11

我需要这两个容器来安装相似版本的 git。不幸的是,sles 容器没有我需要的 git 版本。

我想像这样启动一个 git 容器:

$ cat Dockerfile
FROM ubuntu:14.04
MAINTAINER spuder

RUN apt-get update
RUN apt-get install -yq git
CMD /usr/bin/git
# ENTRYPOINT ['/usr/bin/git'] 

然后将 centos6 和 sles11 容器链接到 git 容器,以便它们都可以访问 git 二进制文件,而无需安装它。

我遇到了以下问题:

  • 您不能将一个容器链接到另一个未运行的容器
  • 我不确定 docker 容器是否应该这样使用。

docker documentation, it appears that linked containers具有共享的环境变量和端口,但不一定可以访问彼此的入口点。

如何链接 git 容器,以便 cent 和 sles 容器可以访问此命令?这可能吗?

最佳答案

您可以创建一个专用的 git 容器并将其下载的数据公开为 volume ,然后与其他两个容器(centos6 和 sles11)共享该卷。即使容器未运行,卷也可用。

如果您希望其他两个容器能够从专用 git 容器运行 git,那么您需要将该 git 二进制文件安装(或复制)到共享卷上。

请注意,卷不是图像的一部分,因此当您 docker savedocker export 时,它们不会被保留或导出.它们必须单独备份。

示例

Dockerfile:

FROM ubuntu
RUN apt-get update; apt-get install -y git
VOLUME /gitdata
WORKDIR /gitdata
CMD git clone https://github.com/metalivedev/isawesome.git

然后运行:

$ docker build -t gitimage .
# Create the data container, which automatically clones and exits
$ docker run -v /gitdata --name gitcontainer gitimage
Cloning into 'isawesome'...
# This is just a generic container, but what I do in the shell
# you could do in your centos6 container, for example
$ docker run -it --rm --volumes-from gitcontainer ubuntu /bin/bash
root@e01e351e3ba8:/# cd gitdata/
root@e01e351e3ba8:/gitdata# ls 
isawesome
root@e01e351e3ba8:/gitdata# cd isawesome/
root@e01e351e3ba8:/gitdata/isawesome# ls
Dockerfile  README.md  container.conf  dotcloud.yml  nginx.conf

关于docker - 如何在 docker 容器之间链接二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275119/

相关文章:

docker - kubernetes仪表板v1.10.0登录不起作用/

linux - Ubuntu 20.04 : sudo apt-get update not Working

docker - 无法在 Jenkins 的 docker 镜像中克隆子模块

docker - Kubernetes Calico节点 'XXXXXXXXXXX'已使用IPv4地址XXXXXXXXX,CrashLoopBackOff

docker - 无法使用马拉松运行Docker容器

wordpress - Docker 化 WordPress

docker - 设置docker-compose环境变量以使用自定义java System.Property正确启动Jenkins

ruby - 如何从 Ruby 镜像在 Docker 容器中运行 cron

Dockerfile 中的 Jboss 5.1 - 如何在浏览器中访问服务器

docker - nuxt pm2-runtime 未找到页面目录