docker - 使用docker-compose启动容器时,如何以编程方式获取其ip?

标签 docker travis-ci docker-compose

在我的travis-ci中,我使用脚本逐个调用我的docker容器。我正计划将其替换为docker-compose yml文件,以便更快速,更清洁地完成此任务。

但是,我无法弄清楚如何替换脚本的这一部分:

- CID=$(docker run --privileged --detach --volume="${PWD}":/root/django_deployment:rw -p 80 --name test_centos censofdockers/centos6-miniconda sleep 550) 
- CID2=$(docker run --privileged --detach --volume="${PWD}":/root/django_deployment:rw -p 80 --name test_ubuntu censofdockers/ubuntu-miniconda sleep 550)
- DOCKER_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}`
- DOCKER_IP2=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID2}`

如果我使用docker-compose,如何以编程方式找出各个容器的ip是什么?

最佳答案

我使用以下作为~/.local/bin/docker-ip来获取容器的IP地址。

#!/bin/bash
docker inspect -f \
    '{{range $key, $value := .NetworkSettings.Networks}} {{ $value.IPAddress}} {{end}}' $1

要将其用于由compose创建的容器,请使用<project name>_<service name>作为容器名称。
docker-ip <CID or container name>

关于docker - 使用docker-compose启动容器时,如何以编程方式获取其ip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719827/

相关文章:

testing - Travis-CI 可以运行 Codeception 测试吗?

ruby-on-rails-4 - 特拉维斯 CI : The command "bundle exec rake" exited with 1

syntax-error - 如何修复 YAML 语法错误 : did not find expected '-' indicator while parsing a block?

mysql - Docker 错误绑定(bind) : address already in use when port is not in use

docker - 如何正确设置 docker 网络以使用 localhost 连接?

linux - 在 linux (debian) 中运行 docker 和 nodemcu-build 时出错

docker - 在 Azure Pipelines 的 Docker 镜像中运行 apt-get

amazon-web-services - Amazon ECS错误:无法创建没有容器的任务定义

linux - 刷新 docker 容器的 net.core.somaxcomm(或任何 sysctl 属性)

docker - map 下载失败 : Invalid key or download temporarily unavailable