Vagrant 适合用来管理虚拟机,而 Docker 适合用来管理应用环境。为了更好地模拟真实运行环境,本系列文章借助 Docker 和 Docker Compose 搭建 Nginx + uWSGI+ Django + MySQL + Redis + Rabbit 的开发环境。
1. 基本概念
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到机器上。Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。
2. Docker 安装和使用
2.1 安装
在 Linux 上 安装 Docker。
1
|
curl -sSL https://get.daocloud.io/docker | sh
|
在 Linux 上 安装 Docker Compose。
|
| curl -L https://get.daocloud.io/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose | | chmod +x /usr/local/bin/docker-compose |
|
2.2 查看安装信息
安装完毕后,可以通过如下命令检测是否安装成功。查看 Docker 版本
|
| docker | | Docker version 1.12.6, build 88a4867/1.12.6 |
|
查看 docker-compose 版本
|
| docker-compose | | docker-compose version 1.16.1, build 6d1ac21 |
|
拉起 Docker Deamon。Docker Client 需要将 Console 输入的命令,发送给 Daemon 执行。
通过,docker info
命令可以看到,本地使用的是 docker 原生的镜像源。
|
| docker info | | Docker Root Dir: /var/lib/docker | | Debug Mode (client): false | | Debug Mode (server): false | | Registry: https: | | Insecure Registries: | | 127.0.0.0/8 | | Registries: docker.io (secure) |
|
2.3 拉取、启动镜像
拉取 hello-world 镜像。
|
| docker pull hello-world | | Using default tag: latest | | Trying to pull repository docker.io/library/hello-world ... | | latest: Pulling from docker.io/library/hello-world | | | | Digest: sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f |
|
启动 hello-world 镜像。
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 |
|
| docker run hello-world | | | | Hello from Docker! | | This message shows that your installation appears to be working correctly. | | | | To generate this message, Docker took the following steps: | | 1. The Docker client contacted the Docker daemon. | | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. | | 3. The Docker daemon created a new container from that image which runs the | | executable that produces the output you are currently reading. | | 4. The Docker daemon streamed that output to the Docker client, which sent it | | to your terminal. | | | | To try something more ambitious, you can run an Ubuntu container with: | | docker run -it ubuntu bash | | | | Share images, automate workflows, and more with a free Docker ID: | | https: | | | | For more examples and ideas, visit: | | https: |
|
查看本地镜像列表。
|
| docker images | | REPOSITORY TAG IMAGE ID CREATED SIZE | | docker.io/hello-world latest 1815c82652c0 12 weeks ago 1.84 kB |
|
2.4 配置加速器(可选)
使用 Docker 的时候,经常需要从官方获取镜像,但是由于网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。这里使用的 DaoDlcoud 提供的加速器,通过智能路由和缓存机制,提升了访问 Docker Hub 的速度。
1
|
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://6c5fbccc.m.daocloud.io
|
3. 参考
- http://www.linuxidc.com/Linux/2015-07/119961.htm
- https://yeasy.gitbooks.io/docker_practice/
- https://zh.wikipedia.org/zh-cn/Docker_(%E8%BB%9F%E9%AB%94)