Tag: 文件

如何在Docker构build之后testing容器或图像?

我有以下的Dockerfile ############################################################ # Purpose : Dockerize Django App to be used in AWS EC2 # Django : 1.8.1 # OS : Ubuntu 14.04 # WebServer : nginx # Database : Postgres inside RDS # Python : 2.7 # VERSION : 0.1 ############################################################ from ubuntu:14.04 maintainer Kim Stacks, kimcity@gmail.com # make sure package repository is up […]

如何使用Docker的COPY / ADD指令将单个文件复制到图像

我正在尝试从构build上下文的根目录复制到泊坞窗图像中新创build的目录。 我正在使用的Dockerfile如下所示: FROM debian:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY test.txt /usr/src/app test.txt文件是一个简单的ASCII文本文件,如下所示: $ cat test.txt This is a test 但是,当我build立这个图像,我得到一个图像,说明目的地path不是一个目录。 $ docker build . Sending build context to Docker daemon 4.608 kB Sending build context to Docker daemon Step 0 : FROM debian:latest —> 9a61b6b1315e Step 1 : RUN mkdir -p /usr/src/app —> […]

Docker构build提供了“无法准备上下文:上下文必须是一个目录:/ Users / tempUser / git / docker / Dockerfile”

我有一个应该build立一个Ubuntu镜像的Dockerfile 。 但是,当我跑步 docker build -t ubuntu-test:latest ./Dockerfile 它在控制台上显示以下错误 unable to prepare context: context must be a directory: /Users/tempUser/git/docker/Dockerfile 我在Mac OsX上。 我也尝试sudo 。 没什么工作。

为什么chown增加docker图像的大小?

我不明白为什么“chown”命令应该增加我的docker镜像的大小? 以下Dockerfile创build一个大小为5.3MB的图像: FROM alpine:edge RUN adduser example -D -h /example -s /bin/sh 然而,这个例子创build一个大小为8.7MB的图像: FROM alpine:edge RUN adduser example -D -h /example -s /bin/sh && \ chown -R example.example /lib 为什么? 注意:我的实际docker文件当然比这个例子长得多,因此图像尺寸的增加也相当大。 这就是为什么我甚至在乎

Dockerfile HOSTNAME docker build的指令,如docker run -h

我正在尝试在构build期间设置docker容器内的主机名,因为某些软件安装使用发现的随机生成的主机名,并永久性地将该主机名烘焙到configuration中。 虽然可以在通过运行-h交互式运行时设置主机名,但通过使用Dockerfile生成相同的function是不可用的。 解决此问题的唯一方法是使用LD_PRELOAD黑客,以便我可以将主机名设置为localhost。 LD_PRELOAD黑客有不必要的副作用,我有麻烦解决。 在使用“docker run -it -h localhost”时,软件安装没有问题。 strace报告安装程序调用uname来确定主机名。 uname({sys="Linux", node="12b0c7c7eacb", …}) = 0 有谁知道如何解决这个限制吗? 更新1 这不是问题的重复如何处理特定的主机名像Dockerfile中的-h选项,因为这是特别谈论由dynamic生成该文件引起的“/ etc / hosts”问题。 这很容易解决,因为它是一个可写的文件。 这是关于尝试从系统调用(如uname和gethostname)parsing主机名的软件安装。 从我可以告诉这不能解决,因为主机名不能在运行的docker容器内更改。 uname系统调用可能引用/ proc / sys / kernel / hostname,这是只读的,不能改变。 通常可以运行hostname命令,但是这个命令会产生一个错误,即使你是root用户,你也必须是root用户。 解决方法是使用-h标志,这在构build中不可用。 更新2 对于任何寻找解决方法的人来说,这只是在Docker构build期间才需要使用,如果需要使用docker run自定义主机名,请使用-h标志。 这是基于别人的工作。 Dockerfile: RUN gcc -o fakehostname.o -c -fPIC -Wall fakehostname.c RUN gcc -o libfakehostname.so -shared -W1,export-dynamic fakehostname.o -ldl […]

Dockerfile FROM指令

Dockerfile参考说明了关于FROM指令的以下内容: FROM可以在单个Dockerfile中出现多次,以创build多个图像。 只需在每个新的FROM命令之前logging由提交输出的最后一个映像ID。 我不明白他们的意思是通过提交输出的最后一个图像ID输出 。 我不确定我是否有多个FROM指令。 这有什么有效的用例吗?

将Dockerfile转换为Bash脚本

有没有简单的方法将Dockerfile转换为Bash脚本,以便在真实操作系统上安装所有软件? 其原因是docker集装箱我不能改变,如果他们不工作,我想事后改变一些东西。

如何在Docker构build中使用COPY命令?

我正在尝试执行一些自动化,同时build立我的docker形象。 以下是我在Windows 8,Kitematic,Virtual Box中运行的代码: FROM node:6 # Create directory RUN mkdir -p /tempDir && mkdir -p /tempDir/built && mkdir -p /data # Setup build environment COPY . /tempDir RUN npm install -g gulp typings # Build from source WORKDIR /tempDir RUN npm install && typings install && gulp build 到目前为止,一切都很好,成功地将我的脚本打包到/ tempDir / built目录中的javascript。 我打开我的容器,它看起来像这样: tempDir/gulpfile.js […]

操作方法:Dockerfile层重用/引用

我想创build几个图像,其中每个dockerfile将包含一些常见的图层。 它的所有图像都是混合的,没有一致的顺序。 例如,有些需要在它们上面有java,我想把下面几行(从官方的java 8 dockerfile中取出)定义为一个将在其他dockerfiles中引用的构build块(层)。 在某些情况下,它可能是我想要重复使用的多个图层 – 使得这个需求在本质上是recursion的(由构build块构build的构build块)。 RUN \ echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ add-apt-repository -y ppa:webupd8team/java && \ apt-get update && \ apt-get install -y oracle-java8-installer && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /var/cache/oracle-jdk8-installer Docker今天支持吗? 这是一个很好的做法,例如像Java一样分别安装,或者我应该将它与其他安装(保持图像最小)合并? 围绕这种情况的最佳做法是什么? ===========更新============== 看起来像引用/包括的function不被支持。 但我仍然不确定最佳做法… @Sri指出了最佳实践: https ://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run 鼓励在所有软件包安装中使用“运行apt-get update && apt-get […]

在Dockerfile中parsing文件

是否有可能parsing构build上下文中的文件来收集信息? 例如,这样做会很好: EXPOSE `cat config.conf | <more commands to get the port to expose>` configuration文件属于被容器化的应用程序,并且有一些端口必须是可configuration的,这也意味着它必须以某种方式从Dockerfile访问。 任何方式来完成这个?