是否可以拉动并启动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
足以下载并运行所有已定义的容器
答案 0 :(得分:1)
确保docker
和docker-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
文件,看起来你错过了几行。您需要指定版本,gplcart
,db
和phpmyadmin
应位于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_name
是docker-compose.yml
文件中列出的服务之一
docker pull my/image
失败,但失败的错误与您提到的错误不同(您发布了撰写错误)
在您的示例中,my/name
不是有效的服务名称,因为您无法在服务名称中使用/
。撰写会给你一个不同的错误。
我不清楚my/name
代表什么(假设你用本地替换它)。
如果您发布docker-compose.yml
,则有助于确定正确的docker
和docker-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 服务的日志。