Docker基础
简介
Docker作为著名的开源容器引擎,在业界有着广泛的使用。 由于使用了现代Linux内核高级特性(如cgroup,namespace),它可以更高效更安全地使用宿主机的计算、存储、网络等资源。 容器技术作为轻量级的虚拟化技术,相比传统的基于Hypervisor和VM的虚拟化更适合大规模的横向扩展。 容器技术独立与上层应用语言和底层操作系统,将代码和其所依赖的环境整体打包,实现了“构建一次,处处运行”的目标。 在构建应用方面,容器技术可以大大提升运维工作的效率,缩短应用开发上线发布周期,甚至重新定义了软件开发、测试、交付和部署的流程。
本文作为Docker的初级实践总结,描述了Docker的安装及基本命令,并以Redis和PostgreSQL的服务部署为例,记录Docker官方镜像服务部署的过程。
安装
在ubuntu 14.04下安装参考安装文档,过程如下:
1 2 3 4 |
|
免sudo执行docker
将指定用户加入docker组,并重新登录
1
|
|
更改docker默认数据目录
更改/etc/default/docker
1
|
|
重启服务
1
|
|
基本操作
常用启动容器实例模式
后台执行容器 -d
1
|
|
执行完命令即时删除 –rm
1
|
|
交互式 -it
1 2 |
|
查看子命令使用: docker help inspect
列出所有运行的容器列表: docker ps
删除所有容器: docker rm $(docker ps -aq)
搜索镜像: https://hub.docker.com/
Redis服务部署
Redis是开源的内存数据结构存储引擎,常用来实现缓存服务、键值存储引擎以及Pub/Sub引擎等。用Docker部署Redis服务非常便捷。
1
|
|
Docker会做以下工作:
在本地需找官方redis官方镜像,如果没有则下载;用官方镜像启动名为myapp-redis的容器实例;将实例开放的默认redis服务6379端口映射到宿主系统的本地49514端口。
查看redis服务的日志
1
|
|
验证:通过宿主系统的redis客户端访问
1
|
|
PostgreSQL服务部署
PostgreSQL是开源的关系型数据库。用Docker部署PostgreSQL服务同样直观便捷。
1 2 3 4 |
|
同样的,docker会下载postgresql官方镜像,启动myapp-postgres实例,并将服务端口映射到宿主机的49513端口。
注意这里用到-v参数,可以为容器的volume(数据卷)指定映射目录。 官方的postgresql镜像将/var/lib/postgresql/data/目录作为volume处理,使得单独存储数据变得简单。 可以简单的理解为将$(pwd)/pg-data作为设备挂载到容器的/var/lib/postgresql/data/目录。这样,备份和迁移都很方便,不依赖容器。
-e参数为创建容器时指定的环境变量,这里将postrgres超级用户的密码设置为postgres。
然后便可以在宿主机通过posgresql的客户端(如psql、createuser、createdb)访问服务了。
1 2 3 4 5 6 |
|
官方镜像还支持若干个环境变量,如初始superuser的用户名及密码等等。以下一个命令即可完成以上流程。
1 2 3 4 |
|
总结
通过以上两个例子,创建了两个容器实例,分别是redis服务和有分离数据卷的postgresql服务。 通过应用Docker容器技术,最核心的是简化测试交付部署流程,并使这些流程更容易地实现自动化。 从而使开发者更多地专注于业务逻辑,加速其价值提升。