gpt4 book ai didi

docker-compose - docker-machine 和 docker-compose 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 10:09:27 27 4
gpt4 key购买 nike

我想我不明白。首先,我创建了 docker-machine:

$ docker-machine create -d virtualbox dev
$ eval $(docker-machine env dev)

然后我写了 Dockerfile 和 docker-compose.yml:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/


version: '2'
services:
db:
image: postgres
web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db

最后,我构建并启动了镜像:
$ docker-compose build --no-cache
$ docker-compose start

我检查了我的虚拟机的 ip
$ docker-machine ip dev

并在我的浏览器中成功打开了该网站。但是当我对我的代码进行一些更改时 - 什么也没发生。所以我登录到“开发”机器:
$ docker-machine ssh dev

我没有找到我的代码!所以我登录到 docker “web” 图像:
$ docker exec -it project_web_1 bash

并且有一个代码,但没有改变。

码头机器有什么用?有什么意义?为什么docker在更改后不同步文件?看起来 docker + docker-machine + docker-compose 在本地开发中很痛苦:-)

谢谢。

最佳答案

Docker 是使用 containerization 的命令行工具管理多个图像、容器和卷等——容器基本上是一个轻量级的虚拟机。见 https://docs.docker.com/获取大量文档。

直到最近 Docker 还没有在 native Mac 或 Windows 操作系统上运行,因此创建了另一个工具 Docker-Machine,它创建了一个虚拟机(使用另一个工具,例如 Oracle VirtualBox),在该 VM 上运行 Docker,并帮助协调主机操作系统和 Docker VM。

由于 Docker 并未在您的实际主机操作系统上运行,因此 docker-machine 需要处理 IP 地址、端口和卷等。它的设置保存在环境变量中,这意味着每次打开新 shell 时都必须运行这样的命令:

eval $(docker-machine env default)
docker-machine ip default

Docker-Compose 本质上是 Docker 本身之上的一个更高级别的脚本接口(interface),使得管理同时启动多个容器变得更容易(表面上)。它的配置文件 ( docker-compose.yml ) 令人困惑,因为它的一些设置被传递到较低级别的 docker 进程,而一些仅在较高级别使用。

我同意这是一团糟;我的建议是从单个 Dockerfile 开始,然后使用 docker-machine 让它运行。或使用 new beta native Mac/Windows Docker , 并忽略 docker-compose直到您对较低级别的工具感到更舒服为止。

关于docker-compose - docker-machine 和 docker-compose 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38623027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com