如果标签名称中包含“。”,我如何得到一个Docker镜像的标签?

docker inspect命令对于在Docker镜像上获取标签非常有用: # -*- Dockerfile -*- FROM busybox LABEL foo="bar" LABEL com.wherever.foo="bang" 对于简单的标签名称,inspect命令有一个很好的工具 – –format选项(使用Go模板)。 $ docker build -t foo . $ docker inspect -f '{{ .Config.Labels.foo }}' foo bar 但是,如何访问名称中有点的标签呢? $ docker inspect -f '{{ .Config.Labels.com.wherever.foo }}' foo <no value> 我正在写一个bash脚本,我想避免重新parsingdocker inspect的JSON输出,如果可能的话。

Docker组成端口映射

我有一个docker-compose yml文件,如下所示 version: '2' services: nodejs: build: context: . dockerfile: DockerFile ports: – "4000:4000" links: – redis expose: – "6379" redis: build: context: . dockerfile: Dockerfile-redis 我的目标是转发nodejs-127.0.0.1端口6379到redis主机。 我已经可以从nodejs机器上ping redis了,但是这些端口没有映射。 试图公开选项,但没有机会。

使用Ansible在Docker Container中运行命令

我试图完成的是在一个Docker容器内运行命令,该容器已经在使用Ansible的Digital Ocean Ubuntu / Docker Droplet上创build。 似乎无法find任何东西,或者我主要失去了一些东西。 这是我在剧本里的Ansible任务。 我对Ansible很新,所以任何build议或智慧将不胜感激。 – name: Test Deploy hosts: [my-cluster-of-servers] tasks: – name: Go Into Docker Container And Run Multiple Commands docker: name: [container-name] image: [image-ive-created-container-with-on-server] state: present command: docker exec -it [container-name] bash

如何将Docker-Machine端口转发到OSX上的主机端口?

我在我公司提供私人docker集装箱,并希望我的同事能够访问我们的内部networking,问题是我的客户操作系统是OSX,因此我只能使用192.168.99.100:3000访问我的应用程序来自docker机器的默认ip。 如何将docker-machine 3000端口转发到我的主机80端口?

docker-compose:服务服务的不支持的configuration选项:'web'

我正在通过docker-compose入门页面: https : //docs.docker.com/compose/gettingstarted/ 在第3步中,我创build了一个docker-compose.yml文件,如下所述: version: '2' services: web: build: . ports: – "5000:5000" volumes: – .:/code depends_on: – redis redis: image: redis 但是当我运行: $ docker-compose up 我得到以下错误: 不支持的服务configuration选项:“web” 我无法弄清楚发生了什么事情。 任何帮助? 谢谢

.gitlab-ci.yml中的多个Docker镜像

这是我的问题与GitLab及其集成CI服务的设置。 我有一个当前的GitLab 8.1。 和一个支持Docker的gitlabci-multi-runner(0.6.2)。 在扩展ubuntu:精确的图像以包含git和build-essentials (现在命名为precise:base )之后,我得到了下面的.gitlab-ci.yml : image: precise:base before_script: – apt-get install –yes cmake libmatio-dev libblas-dev libsqlite3-dev libcurl4-openssl-dev – apt-get install –yes libarchive-dev liblzma-dev build: script: – mkdir build/ – cd build – cmake -D CMAKE_BUILD_TYPE=Debug ../ – make 现在我的问题是如何在不同的图像上包含更多的工作? 因为我需要检查代码是否在Ubuntu Precise,Ubuntu Trusty,CentOS 6,CentOS 7等不同的操作系统上编译(以及后来的作品)。为了减less工作量,我认为最好的方法是提供不同的Docker镜像作为基础。 现在的问题是, .gitlab-ci.yml是如何支持这个的?

如何更改“默认”docker机的DNS设置

我知道如何用dns设置创build一个新的docker-machine docker-machine create -d virtualbox –engine-opt dns=8.8.8.8 my_machine 但是已经有了一个“默认的”虚拟机,所以有办法改变它的DNS? 我在线阅读boot2docker的方法,但是这个工具已经被弃用了,docker-machine已经取代了它。 不幸的是,这是非常新的,我没有find关于这个网上很多。

Docker如何比Vagrant + LXC +厨师更好

Vagrant + LXC + Chef是一个很好的组合,可以自动执行基础架构任务,为开发人员构build独立的沙箱。 Docker每次都会越来越多的人群带我去问:Docker如何使用简单的bash语句来执行configuration时,Vagrant + LXC + Chef的方法如何更好呢?优点在哪里? 什么是优缺点matrix来评估正确的道路select?

tar:无法读取:docker中的目录

我想添加一个档案( .tar.gz ),并使用Dockerfile在图像创build过程中将其解压缩。 ADD archive.tar.gz /archive.tar.gz RUN tar xzf archive.tar.gz 当我想解压档案时,我得到如下信息: tar: /archive.tar.gz: Cannot read: Is a directory tar: At beginning of tape, quitting now tar: Error is not recoverable: exiting now 这对我没有任何意义,因为文件archive.tar.gz不是一个目录。

如何在卷中安装单个文件

对于docker工人来说,我是相当新的,有些卷的概念对我来说是相当混乱的。 我想要做的是dockerize一个PHP应用程序。 在dockerfile中我下载了档案,解压缩等等。 一切工作正常,但是如果一个新版本获得释放,我更新dockerfile我不得不重新安装应用程序,因为config.php被覆盖。 所以我想我可以挂载文件作为一个卷,就像我对数据库做的一样。 我尝试了两种方式,一个音量和一个直接的path。 泊坞窗 – 撰写: version: '2' services: app: build: src ports: – "8080:80" depends_on: – mysql volumes: – app-conf:/var/www/html/upload – app-conf:/var/www/html/config.php environment: DB_TYPE: mysql DB_MANAGER: MysqlManager mysql: image: mysql:5.6 container_name: mysql volumes: – mysqldata:/var/lib/mysql ports: – 3306:3306 environment: MYSQL_ROOT_PASSWORD: MYSQL_DATABASE: MYSQL_USER: MYSQL_PASSWORD: volumes: mysqldata: app-conf: 这会导致错误: 我试着用一个给定的path,作为一个挂载的音量。 /src/docker/myapp/upload:/var/www/html/upload /src/docker/myapp/upload:/var/www/html/config.php 然而这两种方式都不起作用。 […]