标签: docker-compose

Docker-组成命名的挂载卷

为了跟踪docker-compose使用的卷,我喜欢使用命名卷.这适用于"普通"卷

version: 2
services: 
  example-app:
    volume:
      -named_vol:/dir/in/container/volume
volumes:
  named_vol:
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何在安装本地主机时使其工作.我正在寻找类似的东西:

version: 2
services: 
  example-app:
    volume:
      -named_homedir:/dir/in/container/volume
volumes:
  named_homedir: /c/Users/
Run Code Online (Sandbox Code Playgroud)

要么

version: 2
services: 
  example-app:
    volume:
      -/c/Users/:/home/dir/in/container/ --name named_homedir
Run Code Online (Sandbox Code Playgroud)

这是以任何可能的方式,还是我坚持使用已安装的匿名卷?

docker-compose docker-volume

49
推荐指数
5
解决办法
4万
查看次数

你如何使用docker-compose v3.1管理秘密值?

docker-compose.yml规范的3.1版引入了对秘密的支持.

我试过这个:

version: '3.1'

services:
  a: 
    image: tutum/hello-world
  secret: 
    password: the_password
  b:
    image: tutum/hello-world
Run Code Online (Sandbox Code Playgroud)

$ docker-compose up 收益:

Unsupported config option for services.secret: 'password'

我们如何在实践中使用秘密功能?

docker docker-compose docker-secrets

49
推荐指数
3
解决办法
5万
查看次数

`docker-compose build`和`docker build`有什么区别?

docker-compose build和之间有什么区别docker build

假设在一个dockerized项目路径中有一个docker-compose.yml文件:

docker-compose build
Run Code Online (Sandbox Code Playgroud)

docker build
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

49
推荐指数
5
解决办法
5万
查看次数

Compose 文件中的 --add-host=host.docker.internal:host-gateway 等效项是什么

从 Docker 版本20.10https://github.com/moby/moby/pull/40007)开始,有一个新的特殊字符串host-gateway,可以在--add-host运行标志中使用,以允许从 docker 容器内部直接连接到本地计算机在基于 Linux 的系统上。这非常好。

--add-host=host.docker.internal:host-gateway但是Compose 文件中的等价物是什么?

例如在:

$ docker run \
  --rm \
  --name postgres \
  -p "5433:5432" \
  -e POSTGRES_PASSWORD=**** \
  --add-host=host.docker.internal:host-gateway \
  -d postgres:14.1-bullseye
Run Code Online (Sandbox Code Playgroud)

相同的标志如何--add-host适合这个 Docker Compose 等效模板:

version: '3.9'

services:
  postgres:
    image: postgres:14.1-bullseye
    environment:
      POSTGRES_PASSWORD: ****
    ports:
      - "5433:5432"
Run Code Online (Sandbox Code Playgroud)

肯定不是:network_mode: host在服务级别(参见#Doc)。

linux docker docker-compose docker-network

49
推荐指数
1
解决办法
8万
查看次数

如何让docker-compose使用来自存储库的最新图像

我不知道我做错了什么,但我根本无法docker-compose up使用我们注册表中的最新图像,而无需先完全从系统中删除旧容器.看起来compose正在使用之前启动的图像,即使docker-compose pull已经获取了一个较新的图像.

我看了如何让docker-compose始终从新图像重新创建容器?这似乎与我的问题类似,但是所提供的解决方案都没有对我有用,因为我正在寻找可以在生产服务器上使用的解决方案,我不想在启动它们之前删除所有容器再次(可能的数据丢失?).我想仅仅为了检测已更改图像的新版本,拉出它们然后用这些新图像重新启动服务.

我为此创建了一个简单的测试项目,其中唯一的目标是在每个新构建上增加一个版本nr.如果我浏览到创建的nginx服务器(这在本地按预期工作),则显示版本nr.

docker版本:1.11.2 docker-compose版本:1.7.1 OS:使用docker-toolbox在CentOS 7和OS X 10.10上测试

我的docker-compose.yml:

version: '2'
services:
  application:
    image: ourprivate.docker.reg:5000/ourcompany/buildchaintest:0.1.8-dev
    volumes:
      - /var/www/html
    tty: true

  nginx:
    build: nginx
    ports:
      - "80:80"
    volumes_from:
      - application
    volumes:
      - ./logs/nginx/:/var/log/nginx
  php:
    container_name: buildchaintest_php_1
    build: php-fpm
    expose:
      - "9000"
    volumes_from:
      - application
    volumes:
      - ./logs/php-fpm/:/var/www/logs
Run Code Online (Sandbox Code Playgroud)

在我们的jenkins服务器上,我运行以下命令来构建和标记图像

cd $WORKSPACE && PROJECT_VERSION=$(cat VERSION)-dev
/usr/local/bin/docker-compose rm -f
/usr/local/bin/docker-compose build
docker tag ourprivate.docker.reg:5000/ourcompany/buildchaintest ourprivate.docker.reg:5000/ourcompany/buildchaintest:$PROJECT_VERSION
docker push ourprivate.docker.reg:5000/ourcompany/buildchaintest
Run Code Online (Sandbox Code Playgroud)

这似乎正在做它应该做的事情,因为每次构建完成并且版本nr被碰撞时我在我们的存储库中得到一个新的版本标记.

如果我现在跑

docker-compose pull && docker-compose -f docker-compose.yml up …
Run Code Online (Sandbox Code Playgroud)

build-process docker docker-compose

48
推荐指数
8
解决办法
5万
查看次数

在.gitlab-ci.yml中运行docker-compose build

我有一个.gitlab-ci.yml文件,其中包含以下内容:

image: docker:latest

services:
  - docker:dind

before_script:
  - docker info
  - docker-compose --version

buildJob:
  stage: build
  tags:
    - docker
  script:
    - docker-compose build
Run Code Online (Sandbox Code Playgroud)

但在ci-log我收到消息:

$ docker-compose --version
/bin/sh: eval: line 46: docker-compose: not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

docker gitlab-ci docker-compose

48
推荐指数
6
解决办法
4万
查看次数

堆栈文件和Compose文件之间有什么区别?

我正在学习如何使用Docker Compose在多个主机上的多个容器中部署应用程序.我遇到了两个配置文件 - 堆栈文件和Compose文件.

云堆栈文件YAML引用中,它指出堆栈文件是YAML格式的文件,它定义一个或多个服务,类似于docker-compose.yml文件但具有一些扩展名.

这篇文章中,它指出堆栈与docker-compose非常相似,除了它们定义服务而docker-compose定义容器.

它们看起来非常相似,所以我想知道何时使用堆栈文件,何时使用Compose文件?

docker docker-compose docker-swarm docker-swarm-mode

48
推荐指数
2
解决办法
1万
查看次数

如何将docker-compose升级到最新版本

我已经使用命令安装了docker-compose

sudo apt install docker-compose

它安装了docker-compose版本1.8.0并构建未知

我需要最新版本的docker-compose或至少1.9.0版本

任何人都可以让我知道我应采取什么方法来升级或卸载并重新安装最新版本.

我查看了docker网站,可以看到他们建议安装最新版本'

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

但在此之前,我必须卸载当前版本,可以使用该命令完成

sudo rm /usr/local/bin/docker-compose

但只有在使用curl完成安装时才能使用此功能.我不确定安装是否由我使用的curl完成

sudo apt install docker-compose

请让我知道我现在应该做什么来卸载并重新安装docker-compose.

docker-compose

48
推荐指数
11
解决办法
6万
查看次数

通过环境变量 docker-compose redis 密码

我试图docker-compose通过环境变量传递我的 redis 密码,但它给了我错误。

这是我的 redis 镜像的一部分docker-compose.yml

  redis:
    image: redis
    container_name: redis
    # command: redis-server --requirepass mypassword <--- this works as expected
    # command: redis-server --requirepass ${REDIS_PASSWORD} <-- while this does not
    command: redis-server --requirepass $${REDIS_PASSWORD} <-- and this does not work either
    volumes:
      - redis:/var/lib/redis/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "6379"
    env_file:
      - .env.prod
Run Code Online (Sandbox Code Playgroud)

我的.env.prod

REDIS_PASSWORD=mypassword
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

consumer: Cannot connect to redis://:**@redis:6379/0: WRONGPASS invalid username-password pair or user is disabled..
Run Code Online (Sandbox Code Playgroud)

但是如果我直接在docker-compose.yml没有环境变量的情况下指定密码,那么它就可以工作。

environment-variables redis docker docker-compose

48
推荐指数
4
解决办法
7万
查看次数

Docker:守护程序的错误响应:用户拒绝目录共享

尝试运行此命令时:

docker-compose up

我收到此错误:

Error response from daemon: user declined directory sharing C:\Users\path_to_my_folder

我正在 Windows 10 上工作

docker docker-compose docker-for-windows

48
推荐指数
3
解决办法
4万
查看次数