引言
在前面几篇从零开始自动部署Django项目的系列文章中,主要是解决了本地开发机和远程开发服务器的代码同步问题,但是并没有解决开发环境上的同步问题。前几天,笔者就遇到了“在本地上跑的好好的呀”这样的问题,因此开始研究Docker试着能否解决这个问题。
Attention : 比较尴尬的一点是当前的Docker官网仍然假设在国外,因此如果需要查阅Docker的官方文档请自备梯子。
准备
什么是Docker?
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。
《第一本Docker书》- 通俗点来说,大家的关注点主要是在docker的容器虚拟化,相比传统的虚拟机而言,容器显得更轻量级,因为容器是运行在操作系统内核上的用户空间。
- 既然运行在操作系统上,容器就必须依赖宿主机的操作系统。在本文中笔者使用的是Mac OSX系统,因此在Mac上安装Docker 的时候,还会额外安装一个很轻量的虚拟机(通过docker-machine命令来启动),然后通过这个虚拟机作为使用ubuntu系统的容器的宿主机。那么,如果是一台安装了ubuntu系统的电脑,在安装Docker的ubuntu容器的时候就不需要安装虚拟机了,它本身就可以作为宿主机。
- 官方Docker文档传送门:What is Docker?
- Docker的组成
- Docker的服务器(服务器中运行着守护进程)和客户端
- Docker的容器和镜像
- Docker Registry
- 本文笔者所使用的是电脑环境为:
➜ ~ uname -a
Darwin crazy-leavesdeMacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 23 18:25:34 PDT 2016; root:xnu-3248.60.10~1/RELEASE_X86_64 x86_64
在Mac上安装以及运行Docker
Docker Toolbox
由于笔者在Docker开发出Docker for Mac之前就已经安装了Docker, 因此笔者在Mac上使用的是Docker Toolbox。
安装Docker toolbox的过程请参考官网链接:Install Docker Toolbox on Mac OSX。
在安装完Docker Toolbox之后,Mac系统上会出现以下工具:
- Docker CLI client for running Docker Engine to create images and containers
- Docker Machine so you can run Docker Engine commands from Mac OS X terminals
- Docker Compose for running the docker-compose command
- Kitematic, the Docker GUI
- the Docker QuickStart shell preconfigured for a Docker command-line environment
- Oracle VM VirtualBox
然后就可以直接在命令行里使用这三条命令了:
$ docker
$ docker-machine
$ docker-compose
当笔者迫不及待的在命令行上输出:
$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
刚才笔者已经提及了Docker的服务器中运行着守护进程,而服务器在虚拟机中,因此要先启动虚拟机。