如何为Docker Hub中的图像“停靠 - 组合”

时间:2017-10-28 12:46:31

标签: docker docker-compose

是否可以拉动并启动docker-compose.yml中定义的所有容器?我正在尝试执行docker-compose up -d my/image,其中my/image是DockerHub上的回购,但它说“找不到docker-compose.yml”。我还尝试首先使用docker pull my/image使用相同的结果来拉取图像

UPD:图片https://hub.docker.com/r/gplcart/core/,来源 - https://github.com/gplcart/docker-core

解决:似乎docker-compose不能以我想要的方式工作。我需要手动创建一个目录,将docker-compose.yml放在那里,然后运行docker-compose up

https://docs.docker.com/compose/wordpress/#define-the-project

我预计运行docker-compose up -d repo/image足以下载并运行所有已定义的容器

6 个答案:

答案 0 :(得分:1)

确保dockerdocker-compose二进制文件来自相同的程序包管理器。例如

$ which -a docker docker-compose
/snap/bin/docker
/snap/bin/docker-compose

换句话说,如果您是从 Snap 安装的 Docker ,则应该已经包含docker-compose二进制文件(ls /snap/docker/current/bin/)。使用Apt存储库时,docker-compose可以单独安装,因此请勿在 Snap Apt 之间交换二进制文件,也不要混用{{1} }和Apt上的docker包。

答案 1 :(得分:0)

尝试登录Docker Hub,以便Docker Compose知道您想从那里提取图像。

从命令行...

docker login

系统将提示您输入用户名和密码。经过身份验证后,撰写时应该在运行docker-compose up时从Docker Hub中提取图像。

此外,您需要从docker-compose up文件所在的同一目录运行docker-compose.yml。查看Github上的docker-compose.yml文件,看起来你错过了几行。您需要指定版本,gplcartdbphpmyadmin应位于services下。

version: '3'
services:
  gplcart:
    build: .
    links:
      - db
    ports:
      - 8080:80
  db:
    image: mariadb:10.2
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: test
    ports:
      - 3306:3306
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    links:
      - db
    ports:
      - 8181:80

答案 2 :(得分:0)

要使用docker-compose pull <service_name>来提取图片,其中service_namedocker-compose.yml文件中列出的服务之一

docker pull my/image失败,但失败的错误与您提到的错误不同(您发布了撰写错误)

在您的示例中,my/name不是有效的服务名称,因为您无法在服务名称中使用/。撰写会给你一个不同的错误。

我不清楚my/name代表什么(假设你用本地替换它)。

如果您发布docker-compose.yml,则有助于确定正确的dockerdocker-compose命令应该是什么。

答案 3 :(得分:0)

错误Can't find docker-compose.yml表示您当前不在docker-compose.yml文件的目录中,或者您已将文件命名为不同的文件。如果您已将文件命名为不同的文件(包括不同的案例或扩展名),则可以重命名该文件,或运行docker-compose -f your_filename.yml up以传递docker-compose的其他文件进行解析。如果您不在目录中,请确保在运行docker-compose命令之前进入该目录。

答案 4 :(得分:0)

docker-compose根据您的本地docker-compose.yml文件执行操作。使用docker-compose拉取第三方图像通常非常有用,而不是执行单独的docker命令(为了提取图像或部署应用程序等等),您希望定义您的体系结构更有条理的方式:

我的docker-compose.yml文件:

version: '3'

services:

    containerA:
        image: gplcart/core

    containerB:
        build: .
        # go on defining the rest ...

并部署:

docker-compose build && docker-compose up -d

答案 5 :(得分:0)

这是docker-compose.yml文件的最简单的工作示例:

version: '3'
services:
  hello-world:
    image: hello-world

应该产生以下结果:

$ docker-compose up
Creating network "docker_default" with the default driver
Creating docker_hello-world_1 ... done
Attaching to docker_hello-world_1
hello-world_1  |
hello-world_1  | Hello from Docker!
hello-world_1  | This message shows that your installation appears to be working correctly.
hello-world_1  |
hello-world_1  | To generate this message, Docker took the following steps:
hello-world_1  |  1. The Docker client contacted the Docker daemon.
hello-world_1  |  2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
hello-world_1  |     (amd64)
hello-world_1  |  3. The Docker daemon created a new container from that image which runs the
hello-world_1  |     executable that produces the output you are currently reading.
hello-world_1  |  4. The Docker daemon streamed that output to the Docker client, which sent it
hello-world_1  |     to your terminal.
hello-world_1  |
hello-world_1  | To try something more ambitious, you can run an Ubuntu container with:
hello-world_1  |  $ docker run -it ubuntu bash
hello-world_1  |
hello-world_1  | Share images, automate workflows, and more with a free Docker ID:
hello-world_1  |  https://hub.docker.com/
hello-world_1  |
hello-world_1  | For more examples and ideas, visit:
hello-world_1  |  https://docs.docker.com/get-started/
hello-world_1  |
docker_hello-world_1 exited with code 0

如果出现问题,请使用以下命令来帮助查找问题:

  • docker-compose config-验证配置文件。
  • docker-compose logs-查看最新日志。
  • docker info-检查系统范围的信息。
  • sudo strace -fe network docker-compose up-调试网络问题。
  • journalctl -u docker.service-检查 Docker 服务的日志。