在http://docs.docker.com/engine/reference/builder/#arg中,它建议秘密不通过ARGS传递.
注意:建议不要使用构建时变量来传递github密钥,用户凭据等秘密.
什么时候秘密通过构建时变量传递到危险之中?
请帮助我理解docker compose中'image'和'build'之间的区别
我在CentOS docker主机上有一个CentOS docker容器.当我使用此命令运行docker镜像时docker run -d --net=host -p 8777:8777 ceilometer:1.x,docker容器获取主机的IP,但没有为其分配端口.
如果我在没有"--net = host"的情况下运行相同的命令,则docker会docker run -d -p 8777:8777 ceilometer:1.x公开端口但使用不同的IP.docker版本是1.10.1.我希望docker容器与暴露端口的主机具有相同的IP.我也在Dockerfile指令中提到EXPOSE 8777但在docker run命令中提到"--net = host"时没有用.
我在Dockerfile中尝试了以下命令:COPY * /并且对结果感到非常惊讶.似乎天真的docker代码遍历glob中的目录,然后将每个文件转储到目标目录中,同时忽略我的目录结构.
至少这就是我理解这张票的方式,它肯定对应于我得到的结果.
我想这种行为仍然存在的唯一原因必须是应该采取其他一些方法.但对于一只脑力很小的熊来说,了解如何,有谁知道呢?
我正在尝试使用docker自动化maven构建.我想要构建的项目花了将近20分钟来下载所有依赖项,所以我尝试构建一个可以缓存这些依赖项的docker镜像,但它似乎并没有保存它.我的Dockerfile是
FROM maven:alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD pom.xml /usr/src/app
RUN mvn dependency:go-offline
Run Code Online (Sandbox Code Playgroud)
图像构建,它确实下载了所有内容.但是,生成的图像与基本maven:alpine图像的大小相同,因此它似乎没有缓存图像中的依赖项.当我尝试使用图像时,mvn compile它会经历整整20分钟的重新下载所有内容.
是否可以构建一个缓存我的依赖项的maven图像,这样每次我使用图像执行构建时都不必下载它们?
我正在运行以下命令:
docker build -t my-maven .
docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven my-maven mvn compile
Run Code Online (Sandbox Code Playgroud)
我的理解是,RUN在docker构建过程中的任何内容都会成为生成的图像的一部分.
我正在尝试在基于python:alpine的Docker容器中运行Python的Scrapy .它以前工作过,但现在我想使用Scrapy的Image Pipeline,它需要我安装Pillow.
作为简化示例,我尝试了以下方法Dockerfile:
FROM python:alpine
RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev curl
RUN apk add libjpeg zlib tiff freetype lcms libwebp tcl openjpeg
RUN pip install Pillow
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试构建它时,我得到一个错误,其中包含以下内容:
Traceback (most recent call last):
File "/tmp/pip-build-ft5yzzuv/Pillow/setup.py", line 744, in <module>
zip_safe=not debug_build(), )
File "/usr/local/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/local/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/local/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.6/site-packages/setuptools/command/install.py", line 61, in …Run Code Online (Sandbox Code Playgroud) 我尝试在我的docker镜像中安装mcrypt php:7.2-apache.因此,我使用文档中的RUN-Command并在此处回答,但是我收到此错误:
error: /usr/src/php/ext/mcrypt does not exist
usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
ie: /usr/local/bin/docker-php-ext-install gd mysqli
/usr/local/bin/docker-php-ext-install pdo pdo_mysql
/usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop
if custom ./configure arguments are necessary, see docker-php-ext-configure
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql …Run Code Online (Sandbox Code Playgroud) 我正在使用Windows 10 x64并刚刚下载了 Docker,我尝试运行一个简单的“hello-world”dockerfile,但我不断收到错误:
docker: Error response from daemon: error creating temporary lease: file resize error: truncate /var/lib/desktop-containerd/daemon/io.containerd.metadata.v1.bolt/meta.db: read-only file system: unknown.
每次我尝试时,都会遇到相同的文件只读错误。
我怎样才能最好地表明有多个使用Dockerfile?构建的docker镜像的作者/维护者?如果我包含多个单独的MAINTAINER命令,则只有最后一个命令才会生效.
MAINTAINER Me Myself "myself@example.com"
MAINTAINER My Colleague "mycolleague@example.com"
Run Code Online (Sandbox Code Playgroud)
只mycolleague显示在输出中docker inspect.
我应该在MAINTAINER一行中使用逗号分隔列表吗?是想为列举两个维护打了水漂,我应该只是armwrestle我的同事看到其电子邮件我们把文件?
是否有一个命令/选项来显示或列出发送到Docker守护程序以构建映像的上下文?
$ docker build -t "image-name"
Sending build context to Docker daemon 8.499 MB
...
Run Code Online (Sandbox Code Playgroud)
通过指定.dockerignore文件中的模式,可以从构建上下文中排除文件和目录.我想我正在寻找的东西等于测试.dockerignore除了Docker在确定上下文时使用的任何其他利基规则.
docker ×10
dockerfile ×10
alpine-linux ×1
credentials ×1
docker-build ×1
ip ×1
java ×1
maven ×1
mcrypt ×1
php ×1
pillow ×1
python ×1