ubuntu - 存放应用程序文件的位置 - Docker

标签 ubuntu docker

我有一个 docker 主机。我还有一个通过运行 run 命令创建的容器。我还没有使用 docker 文件,因为我还没有到那里学习 docker。

我的问题是,如果我打算在基于 ubuntu 镜像的容器中运行应用程序,我应该从容器内部克隆该应用程序的 git 文件(当我以交互方式进入它时)还是应该容器以某种方式从 docker 主机读取文件,因此将我的文件克隆到 docker 主机上的目录中?容器应该如何运行应用程序文件以及这些文件应该克隆到哪里?

最佳答案

I didn't use a docker file yet, because I'm just not there yet, learning docker.



这是个错误。 docker 容器不是虚拟机。实际上,创建一个镜像并从该镜像运行容器就是 docker 的意义所在。 Dockerfile reference 是一个非常易读的介绍,底部有一些优秀、简单的示例。

话虽这么说:如果这是您的代码,那么它可以存在于您构建 docker 镜像的任何位置,然后在 Dockerfile 中使用 ADD 将您的代码(或二进制文件)复制到镜像中(如果您正在开发应用程序并使用容器进行测试,然后使用 VOLUME 安装应用程序很常见)。

如果这是“只是一些 git repo”并且您只是想将其构建到镜像中,则可以在 Dockerfile 中使用 RUN git clone,就像在本地使用 git clone 一样(假设您的镜像中已经有 git,如果没有的话)不要像往常一样使用 RUN 命令安装 git - 尽管您通常希望确保传递 -y--noconfirm 或操作系统包管理器所需的任何内容
'不要问我,就去做' 标志)。

Dockerfile 只是构建操作系统镜像的步骤列表:如果您可以在运行该操作系统的 VM 中执行此操作,您可以使用 Dockerfile 中的 RUN 执行此操作:如果源在 git 中,您可以 git clone(如果它是源需要编译的,你甚至可以直接在你的 Dockerfile 中运行编译),或者如果它是作为 zip 分发的,你可以简单地 curl 并安装。

我没有 Dockerfile 进行克隆的示例,但是为了向您展示您可以在 Dockerfile 中执行的一些操作,这是我的一个,它使用操作系统包管理器安装 tar,然后通过 java 和操作系统下载并安装 curl包管理器,然后下载并解压缩两个 tar 文件:
FROM centos:centos6

RUN set -x             && \
    yum install -y tar && \
    yum clean all

RUN set -x       && \
    curl -sOL 'http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.rpm' \
         -H 'Cookie: oraclelicense=accept-securebackup-cookie' && \
    rpm -i jdk-7u51-linux-x64.rpm && \
    rm jdk-7u51-linux-x64.rpm && \
    echo 'export JAVA_HOME=/usr/java/jdk1.7.0_51/' >> ~/.bashrc

ENV HBASE_VERSION 0.94.24
RUN set -x         && \
    curl -L http://archive.apache.org/dist/hbase/hbase-$HBASE_VERSION/hbase-$HBASE_VERSION.tar.gz | \
    tar zvx --null && \
    echo "export HBASE_HOME=/hbase-$HBASE_VERSION" >> ~/.bashrc

ADD hbase-site.xml /hbase-$HBASE_VERSION/conf/hbase-site.xml
ADD run.sh /hbase-$HBASE_VERSION/bin/LOCAL-run.sh

ENV PHOENIX_VERSION 3.2.0
RUN set -x && \
    curl -L http://archive.apache.org/dist/phoenix/phoenix-$PHOENIX_VERSION/bin/phoenix-$PHOENIX_VERSION-bin.tar.gz | \
    tar zvx --null && \
    cp /phoenix-$PHOENIX_VERSION-bin/common/phoenix-core-$PHOENIX_VERSION.jar /hbase-$HBASE_VERSION/lib/


CMD ["/hbase-0.94.24/bin/LOCAL-run.sh"]

关于ubuntu - 存放应用程序文件的位置 - Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583729/

相关文章:

java - Eclipse 在 ubuntu 14.04 上看不到 java.time 库

ruby-on-rails - Integrity CI 服务器在使用 Passenger/Apache 网络服务器时不运行构建

docker - Kubernetes - 如何制作简单的 Linux 容器镜像而无需永久运行应用程序

docker - 如何强制 'docker login'命令忽略现有的凭据帮助程序?

docker - 无法通过 TLS 推送到私有(private) docker 注册表

ubuntu - 使用 alien 将 RPM 转换为 DEB。设置 DEB 特定元数据

Apache 2 : Cannot access Userdir - Forbidden

apache - 如何在具有不同端口的apache2/ubuntu14.04中的Flask上安装ssl证书

powershell - docker机器在创建时卡住了

hadoop - 未建立连接