标签: docker-compose

docker和docker-compose有什么区别

docker并且docker-compose似乎与同一个dockerFile进行交互,两个工具之间有什么区别?

docker docker-compose

211
推荐指数
3
解决办法
6万
查看次数

多个docker-compose项目之间的通信

docker-compose.yml在两个不同的文件夹中有两个单独的文件:

  • 〜/前/搬运工-compose.yml
  • 〜/ API /搬运工-compose.yml

如何确保容器中的容器~/front/docker-compose.yml可以向容器发送请求~/api/docker-compose.yml

我知道front可以使用api单个容器设置该选项,以便可以为此容器分配特定的IP地址,但似乎此选项在使用时不可用--default-gateway.

目前我最终做了一个docker run并查看输出中的网关.它有效,但问题是这个IP是随机归因的,所以我不能依赖它.

因此,这个问题的另一种形式可能是:

  • 我可以使用docker-compose将固定IP地址归属到特定容器吗?

但最后我要照顾的是:

  • 两个不同的docker-compose项目如何相互通信?

networking docker docker-compose

191
推荐指数
12
解决办法
10万
查看次数

如何在卷中装入单个文件

我试图将一个php应用程序停靠.在dockerfile中我下载了存档,提取它等.

一切正常,但是如果新版本发布,我更新dockerfile我必须重新安装应用程序,因为config.php被覆盖.

所以我认为我可以将文件挂载为卷,就像我对数据库一样.

我尝试了两种方式,包括音量和直接路径.

泊坞窗 - 撰写:

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:
Run Code Online (Sandbox Code Playgroud)

这导致错误:

我用一个给定的路径尝试了它,作为一个装载的音量.

/src/docker/myapp/upload:/var/www/html/upload
/src/docker/myapp/upload:/var/www/html/config.php
Run Code Online (Sandbox Code Playgroud)

但是两种方式都不起作用.使用已安装的卷,我看到上传已创建.

但随后失败了

/var/www/html/config.php \\"导致\\"不是目录\\"\""

如果我用/src/docker/myapp/upload/config.php:/var/www/html/config.php试试

Docker创建上传文件夹,然后创建config.php文件夹.不是文件.

或者还有另一种方法来保持配置?

docker docker-compose

182
推荐指数
10
解决办法
18万
查看次数

如何在docker compose中使用环境变量

我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值.这是一个例子.今天我正在使用基本的docker run命令执行此操作,该命令包含在我自己的脚本中.有没有办法用compose实现它,没有任何这样的bash包装器?

proxy:
  hostname: $hostname
  volumes:
    - /mnt/data/logs/$hostname:/logs
    - /mnt/data/$hostname:/data
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

177
推荐指数
14
解决办法
19万
查看次数

如何定义使用docker-compose构建的图像的名称

我正在使用docker-compose来创建我的开发环境.我想构建一个特定的图像,但我不知道如何为该图像设置名称.

wildfly:
  build: /path/to/dir/Dockerfile
  container_name: wildfly_server
  ports:
   - 9990:9990
   - 80:8080
  environment:
   - MYSQL_HOST=mysql_server
   - MONGO_HOST=mongo_server
   - ELASTIC_HOST=elasticsearch_server
  volumes:
   - /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
  links:
   - mysql:mysql_server
   - mongo:mongo_server
   - elasticsearch:elasticsearch_server
Run Code Online (Sandbox Code Playgroud)

当我执行docker-compose一切正常时,我得到一个新图像的随机名称.是否可以为构建映像设置名称?

orchestration docker docker-compose

172
推荐指数
6
解决办法
19万
查看次数

如何修复docker:获得权限被拒绝的问题

我在我的机器上安装了Docker,我有Ubuntu操作系统.比我安装了docker,当我跑

sudo docker run hello-world
Run Code Online (Sandbox Code Playgroud)

一切都没问题,但是我想隐藏这个词sudo以使命令更加简短.

如果我没有单词写命令 sudo

docker run hello-world
Run Code Online (Sandbox Code Playgroud)

这显示如下:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

当我尝试制作时,情况也是如此

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

我该如何解决这个问题?

docker docker-compose

168
推荐指数
13
解决办法
13万
查看次数

如何使用卷在dockerized postgres数据库中保存数据

我的docker compose文件有三个容器,web,nginx和postgres.Postgres看起来像这样:

postgres:
  container_name: postgres
  restart: always
  image: postgres:latest
  volumes:
    - ./database:/var/lib/postgresql
  ports:
    - "5432:5432
Run Code Online (Sandbox Code Playgroud)

我的目标是安装一个./database与postgres容器内调用的本地文件夹相对应的卷/var/lib/postgres.当我启动这些容器并将数据插入postgres时,我验证/var/lib/postgres/data/base/了我正在添加的数据(在postgres容器中),但是在我的本地系统中,./database只获取了一个data文件夹,即./database/data创建了它,但它是空的.为什么?

笔记:

更新1

根据尼克的建议,我做了一个docker inspect并发现:

    "Mounts": [
        {
            "Source": "/Users/alex/Documents/MyApp/database",
            "Destination": "/var/lib/postgresql",
            "Mode": "rw",
            "RW": true,
            "Propagation": "rprivate"
        },
        {
            "Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35",
            "Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data",
            "Destination": "/var/lib/postgresql/data",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        }
    ],
Run Code Online (Sandbox Code Playgroud)

这似乎是数据被另一个我自己编码的卷偷走了.不知道为什么会这样.postgres图像是否为我创建了该卷?如果是这样,当我重新启动时,是否有某种方法可以使用该卷而不是我正在安装的卷?否则,是否有一种很好的方法可以禁用其他卷并使用我自己的卷./database

更新2

我找到了解决方案,感谢尼克!(和另一位朋友)以下答案.

postgresql docker docker-compose docker-volume

166
推荐指数
4
解决办法
11万
查看次数

如何让docker-compose始终从新图像重新创建容器?

我的docker镜像是在Jenkins CI服务器上构建的,并被推送到我们的私有Docker Registry.我的目标是使用docker-compose配置环境,它始终启动图像的最初构建状态.

我目前在不同的机器上使用docker-compose 1.3.2以及1.4.0,但我们之前也使用过旧版本.

我总是使用docker-compose pull && docker-compose up -d命令从注册表中获取新图像并启动它们.我相信我的首选行为在某个时间点按预期工作,但从那时起docker-compose up开始重新运行先前停止的容器,而不是每次都启动最初构建的映像.

有没有办法摆脱这种行为?这种方式可能是在docker-compose.yml配置文件中连接的,在每次调用时都不依赖于"忘记"命令行中的某些内容吗?

PS.除了找到实现目标的方法之外,我还想更多地了解这种行为的背景.我认为Docker的基本思想是构建一个不可变的基础架构.docker-compose的当前行为似乎与这种方法完全冲突..或者我在这里错过了一些观点?

docker docker-compose

161
推荐指数
8
解决办法
13万
查看次数

如何正确清除Docker容器的日志?

docker logs [container-name]用来查看特定容器的日志.

是否有一种优雅的方式来清除这些日志?

docker boot2docker docker-compose docker-machine

158
推荐指数
16
解决办法
16万
查看次数

Docker-compose:npm安装成功后,卷中没有node_modules

我有一个具有以下服务的应用程序:

  • web/ - 在端口5000上保存并运行python 3 flask Web服务器.使用sqlite3.
  • worker/- 有一个index.js文件,它是队列的工作者.Web服务器使用json API over port与此队列交互9730.工人使用redis进行存储.工作人员还将数据本地存储在文件夹中worker/images/

现在这个问题只涉及到了worker.

worker/Dockerfile

FROM node:0.12

WORKDIR /worker

COPY package.json /worker/
RUN npm install

COPY . /worker/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

redis:
    image: redis
worker:
    build: ./worker
    command: npm start
    ports:
        - "9730:9730"
    volumes:
        - worker/:/worker/
    links:
        - redis
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose build,一切都按预期工作,所有npm模块都/worker/node_modules按照我的预期安装.

npm WARN package.json unfold@1.0.0 No README data

> phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs
> node install.js

<snip>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时docker-compose up,我看到了这个错误:

worker_1 …
Run Code Online (Sandbox Code Playgroud)

node.js docker ubuntu-14.04 docker-compose

155
推荐指数
10
解决办法
7万
查看次数