我想我不明白。首先,我创建了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并在我的浏览器中成功地打开了站点。但是当我在我的代码中做了一些修改时-什么也没有发生。所以我登录到了"dev“机器:
$ docker-machine ssh dev我没有找到我的代码!所以我登录到了docker的"web“图像:
$ docker exec -it project_web_1 bash有一个代码,但没有改变。
码头机是用来做什么的?这是什么意思呢?为什么docker在更改后不同步文件?看起来docker + docker-machine + docker-compose是本地开发的难点:-)
谢谢。
发布于 2016-07-28 06:59:47
Docker是一个命令行工具,它使用containerization来管理多个映像、容器和卷等--容器基本上就是一个轻量级虚拟机。有关广泛的文档,请参阅https://docs.docker.com/。
直到最近Docker还不能在本地Mac或Windows上运行,所以创建了另一个工具Docker- machine,它创建了一个虚拟机(使用另一个工具,例如Oracle VirtualBox),在该虚拟机上运行Docker,并帮助在主机操作系统和Docker VM之间进行协调。
由于Docker不是在实际的主机操作系统上运行,docker-machine需要处理IP地址、端口和卷等。并且它的设置保存在环境变量中,这意味着您必须在每次打开新shell时运行如下命令:
eval $(docker-machine env default)
docker-machine ip defaultDocker-Compose本质上是Docker本身之上的一个更高级别的脚本接口,使得(表面上)管理同时启动多个容器变得更容易。它的配置文件(docker-compose.yml)令人困惑,因为它的一些设置被向下传递到较低级别的docker进程,而一些设置仅在较高级别使用。
我同意这是一团混乱;我的建议是从一个Dockerfile文件开始,让它在docker-machine或new beta native Mac/Windows Docker上运行,然后忽略docker-compose,直到你对低级工具更满意为止。
https://stackoverflow.com/questions/38623027
复制相似问题