我有一个 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/