Use*_*ser 26 docker-compose docker-machine
我想我不明白.首先,我创建了docker-machine:
$ docker-machine create -d virtualbox dev
$ eval $(docker-machine env dev)
Run Code Online (Sandbox Code Playgroud)
然后我写了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
Run Code Online (Sandbox Code Playgroud)
最后,我构建并启动了图像:
$ docker-compose build --no-cache
$ docker-compose start
Run Code Online (Sandbox Code Playgroud)
我检查了我的虚拟机的ip
$ docker-machine ip dev
Run Code Online (Sandbox Code Playgroud)
并在我的浏览器中成功打开了该网站.但是当我对代码进行一些更改时 - 没有任何反应.所以我登录到"dev"机器:
$ docker-machine ssh dev
Run Code Online (Sandbox Code Playgroud)
我没找到我的代码!所以我登录了docker"web"图片:
$ docker exec -it project_web_1 bash
Run Code Online (Sandbox Code Playgroud)
并且有一个代码,但没有变化.
什么是泊坞机?有什么意义?为什么docker在更改后不同步文件?看起来像docker + docker-machine + docker-compose对于本地开发来说是痛苦的:-)
谢谢.
Ale*_*fee 57
Docker是一个命令行工具,它使用容器化来管理多个映像,容器和卷等 - 容器基本上是一个轻量级的虚拟机.有关详尽的文档,请访问https://docs.docker.com/.
直到最近Docker还没有在原生Mac或Windows操作系统上运行,因此创建了另一个工具,Docker-Machine创建了一个虚拟机(使用另一个工具,例如Oracle VirtualBox),在该VM上运行Docker,并帮助协调主机操作系统和Docker VM.
由于Docker未在您的实际主机操作系统上运行,因此docker-machine需要处理IP地址,端口和卷等.它的设置保存在环境变量中,这意味着每次打开新shell时都必须运行这样的命令:
eval $(docker-machine env default)
docker-machine ip default
Run Code Online (Sandbox Code Playgroud)
Docker-Compose本质上是Docker本身之上的更高级别的脚本界面,使得(表面上)管理同时启动多个容器变得更容易.它的配置文件(docker-compose.yml)令人困惑,因为它的一些设置被传递到较低级别的docker进程,而有些只在较高级别使用.
我同意这是一团糟; 我的建议是从单个Dockerfile开始,并docker-machine使用新的beta本机Mac/Windows Docker运行它,并忽略,docker-compose直到你对更低级别的工具感觉更舒服.
| 归档时间: |
|
| 查看次数: |
13240 次 |
| 最近记录: |