ARG或ENV,在这种情况下使用哪一个?

这可能是一个微不足道的问题,但是为ARG和ENV阅读文档并没有把事情弄清楚。 我正在构build一个PHP-FPM容器,我想给用户启用/禁用一些扩展function。 如果可以在Dockerfile中添加条件并在构build命令上传递标志,可能会很好,但是AFAIK不受支持。 就我而言,我个人的方法是在容器启动时运行一个小脚本,如下所示: #!/bin/sh set -e RESTART="false" # This script will be placed in /config/init/ and run when container starts. if [ "$INSTALL_XDEBUG" == "true" ]; then printf "\nInstalling Xdebug …\n" yum install -y php71-php-pecl-xdebug RESTART="true" fi … if [ "$RESTART" == "true" ]; then printf "\nRestarting php-fpm …\n" supervisorctl restart php-fpm fi exec […]

docker用–build-arg构build多个参数

根据http://docs-stage.docker.com/v1.10/engine/reference/commandline/build/上的文档,可以为标志–build-arg定义多个参数,但是我不能找出如何。 我尝试了以下内容: docker build -t essearch/ess-elasticsearch:1.7.6 –build-arg number_of_shards=5 number_of_replicas=2 –no-cache . =>这将返回一个错误。 我也试过: docker build -t essearch/ess-elasticsearch:1.7.6 –build-arg number_of_shards=5,number_of_replicas=2 –no-cache . =>这将一个variablesnumber_of_shards设置为值“5,number_of_replicas = 2” 任何想法如何我可以定义多个参数?

运行任务时出现AWS ECS错误:您的群集中找不到容器实例

我尝试使用ECS将docker容器映像部署到AWS ,但未创buildEC2实例。 我search了互联网寻找解释为什么我收到以下错误: “调用RunTask操作时发生客户端错误(InvalidParameterException):您的群集中找不到容器实例。 这是我的步骤: 1.将Ubuntu中的Docker镜像推送到Amazon ECS仓库。 2.注册ECS任务定义: aws ecs register-task-definition –cli-input-json file://path/to/my-task.json 3.执行任务: aws ecs run-task –task-definition my-task 然而,它失败了。 这是我的任务: { "family": "my-task", "containerDefinitions": [ { "environment": [], "name": "my-container", "image": "my-namespace/my-image", "cpu": 10, "memory": 500, "portMappings": [ { "containerPort": 8080, "hostPort": 80 } ], "entryPoint": [ "java", "-jar", "my-jar.jar" ], "essential": true } […]

如何设置Docker容器内的区域设置?

我正在运行一个Ubuntu的Docker容器。 我有一个挪威的键盘,需要使用挪威的字符(øæå)。 我的terminal字符编码设置为UTF-8,并使用SSH连接到我的容器。 但是,我无法input挪威语字符,也不能复制和粘贴挪威语字符,也不能使用CTL + SHIFT + U + 00f8。 我试过了: locale-gen nb_NO.UTF-8 但没有任何改变。 如何在Docker容器中设置语言环境和键盘?

为Docker镜像构build上下文非常大

我在主机上创build了几个不同的目录,因为我试图了解Docker,只是为了让我的dockerfiles保持组织。 我刚刚运行的Dockerfile如下所示: FROM crystal/centos MAINTAINER crystal ADD ./rpms/test.rpm ./rpms/ RUN yum -y –nogpgcheck localinstall /rpms/test.rpm 我的实际转速只有1 GB。 但是当我尝试做sudo docker build -t="crystal/test" . ,我得到构build上下文到Docker守护进程3.5 GB。 当您继续构buildDocker镜像时,是否还有其他事情我不知道? 当我在主机上的其他目录中build立更多图像时,我的内存是否积累?

Docker在CentOS 7.2上:kernel:unregister_netdevice:等待lo成为免费的。 使用次数= 1

我在CentOS 7上运行Docker,不时显示以下消息: Message from syslogd@dev-master at Mar 29 17:23:03 … kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1 我search了很多,阅读了很多资源,并尝试了很多方法来保持我的系统更新,升级内核等,但消息仍然不断显示,不是太频繁,但迟早我会看到它。 另外我发现这个问题在docker github上仍然是开放的,那么我的问题是: 这个消息是什么意思? 有人可以给我一个简单的解释为什么docker工人造成这个问题吗? 有没有解决方法? 如果还不能解决问题(问题仍然存在),是否会影响在Docker容器中运行的服务器或服务? 会不会是一个严重的性能问题,因为它也发生在我们的生产服务器上? Docker版本: Client: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Wed Apr 27 00:34:42 2016 OS/Arch: linux/amd64 Server: Version: 1.11.1 API version: […]

如何映射使用Docker的卷path–volumes-from?

我是Docker的–volumes-from对使用–volumes-fromfunction感到很兴奋–volumes-from但有些事情我不是很了解。 如果我想使用–volumes-from与两个仅限数据的容器,每个容器导出名为/srv卷,如何防止卷path冲突? 使用[host-dir]:[container-dir]创build绑定挂载时,我可以映射卷名[host-dir]:[container-dir] ; 我怎么用–volumes-from做到这–volumes-from ? 所以我想要的是这样的: docker run –name=DATA1 –volume=/srv busybox true docker run –name=DATA2 –volume=/srv busybox true docker run -t -i -rm –volumes-from DATA1:/srv1 –volumes-from DATA2:/srv2 ubuntu bash

Docker Registry 2.0 – 如何删除未使用的图像?

我们更新了我们的私人dockerregistry到官方的registry2.0。 这个版本现在可以删除由hashtag标识的docker镜像(请参阅https://docs.docker.com/registry/spec/api/#deleting-an-image ),但是我仍然没有看到清理旧镜像的方法。 由于我们的CI服务器不断产生新的图像,我需要一种方法来删除私有registry中的所有图像,这些图像不再由命名标签标识。 如果没有内置的方法来实现这一点,我认为一个自定义脚本可能工作,但我没有看到一个V2 API方法列出所有存储的图像的标签。 我怎样才能保持我的私人registry清洁? 任何提示?

将Docker镜像中的用户切换为非root用户

我试图切换用户到tomcat7用户为了设置SSH证书。 当我做su tomcat7 ,没有任何反应。 whoami在做su tomcat7之后还是r su tomcat7 做more /etc/passwd ,我得到了清楚地显示tomcat7用户存在的以下结果: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh messagebus:x:101:104::/var/run/dbus:/bin/false colord:x:102:105:colord colour management daemon,,,:/var/lib/colord:/bin/false saned:x:103:106::/home/saned:/bin/false tomcat7:x:104:107::/usr/share/tomcat7:/bin/false 我想解决的是哈德森的这个错误: Command "git fetch -t git@________.co.za:_______/_____________.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Host key […]

docker-compose start“错误:没有容器启动”

我正在尝试使用Docker Compose(在Windows上使用Docker Machine)启动一组Docker容器。 我的docker-compose.yml: version: '2' services: postgres: build: ./postgres environment: – POSTGRES_PASSWORD=mysecretpassword frontend: build: ./frontend ports: – "4567:4567" depends_on: – postgres backend: build: ./backend ports: – "5000:5000" depends_on: – postgres docker-compose build成功运行。 当我运行docker-compose start我得到以下输出: Starting postgres … done Starting frontend … done Starting backend … done ERROR: No containers to start 我确认docker集装箱没有运行。 我如何让我的容器启动?