Tag: 文件

在Dockerfile中手动运行时遇到的问题。 出了什么问题?

我正在尝试为CiviCRM创build一个可靠的Docker镜像,因为Docker中心没有与README或可读的Dockerfile构build代码捆绑在一起。 唯一有文档logging的图片不符合标准的Docker约定。 这是项目: https : //github.com/djcf/civibuild-docker 所以,我写了这个Dockerfile,它使用CiviCRM buildkit安装标准安装。 唯一的问题是它不起作用。 我曾经在一个星期左右的时间里工作过,但现在我没有做任何工作来成功。 (我甚至尝试在我第一次尝试在Docker中安装Civi时重新运行buildkit commit current – https://raw.githubusercontent.com/civicrm/civicrm-buildkit/666d74d1e862957986e3b91c3206e3717d7058a1/bin/civi-download-tools – – 没有运气。 Dockerfile非常简单。 FROM colstrom/fish:ubuntu # (this adds the Friendly Interactive Shell to Ubuntu 14.04 ENV CIVITYPE drupal-clean ENV CMS_ROOT /buildkit/build ENV SITE_NAME "Civi" ENV SITE_ID "civi" ENV TMPDIR /buildkit/tmp RUN apt-get update; apt-get install -y curl links ssmtp […]

Docker RUN不保留文件

我有一个Docker的问题,它不会通过“RUN”持续启动命令。 这是我的Dockerfile: FROM jenkins:latest RUN echo "foo" > /var/jenkins_home/toto ; ls -alh /var/jenkins_home RUN ls -alh /var/jenkins_home RUN rm /var/jenkins_home/.bash_logout ; ls -alh /var/jenkins_home RUN ls -alh /var/jenkins_home RUN echo "bar" >> /var/jenkins_home/.profile ; cat /var/jenkins_home/.profile RUN cat /var/jenkins_home/.profile 这里是输出: Sending build context to Docker daemon 373.8 kB Step 1 : FROM jenkins:latest —> fc39417bd5fb […]

如何通过terminal或DockerFile来设置Docker容器的RAM内存

我需要一个具有6GB内存的Docker容器。 我试过这个命令: docker run -p 5311:5311 –memory=6g my-linux 但是它不起作用,因为我login到Docker容器,并检查了可用的内存量。 这是显示只有2GB可用的输出: >> cat /proc/meminfo MemTotal: 2046768 kB MemFree: 1747120 kB MemAvailable: 1694424 kB 我尝试设置首选项 – >在Docker应用程序中前进。 如果我设置6GB的,它的工作原理…我的意思是,我有一个6GB的MemTotal容器。 这样我所有的容器将有6GB … 我想知道如何使用一些命令或者在Docker文件中设置一些东西来为一个容器分配6GB的内存。 任何帮助?

Docker使用gosu和USER

Dockertypes总是有一个USER命令来运行一个特定用户的进程,但总的来说很多东西都必须作为ROOT来运行。 我已经看到很多使用ENTRYPOINT的图像去ENTRYPOINT进程运行。 我对gosu的需求还是有点困惑。 用户不够用? 我知道Docker 1.10在安全性方面已经发生了很大的变化,但我仍然不清楚在docker容器中运行一个进程的推荐方式。 有人可以解释我什么时候使用gosu vs. USER吗? 谢谢 编辑: Docker 最佳实践指南并不十分清楚:它说如果进程可以无特权运行,使用USER ,如果需要sudo,则可能需要使用gosu 。 这是令人困惑的,因为可以在Dockerfile各种东西安装为ROOT,然后创build一个用户并给予适当的权限,最后切换到该用户并以该用户身份运行CMD 。 那么为什么我们需要sudo或gosu ?

如何在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指令。 这有什么有效的用例吗?