docker入门(上)

 

最近组里有同事分享了docker,结合自己平时的使用,觉得挺有意思。所以稍微研究了一下,总结了三篇文章。第一...



最近组里有同事分享了docker,结合自己平时的使用,觉得挺有意思。所以稍微研究了一下,总结了三篇文章。

第一篇主要是说docker的一些基本概念,已经常用的命令、基本操作,以及我了解的国内的docker镜像的情况。

第二篇则是完全实战,通过两种方式打出一个自己平时开发使用web环境的镜像,从而能够快速的复制出去给其他相应的开发人员,降低环境配置的成本。

第三篇侧重于不大大而全的镜像,而是只打基本的镜像,如php、nginx、mysql的镜像等,既是给自己一个积累,也可以分享给别人用,何乐而不为呢?

以下就是第一篇的内容:

什么是docker

Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基金会,遵从了Apache 2.0协议,项目代码在Github上维护。

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。其基础是Linux容器(LXC)技术。

这些都是官方的说法,我对于docker的理解,就是一个能够快速的管理应用和操作系统池子的工具,在本地可以通过docker快速的启动运行被称为“镜像”的应用或操作系统。一旦运行起来,我们就可以对其进行修改,所以这时它被称为“容器”。我们的更改会层式的叠加,最后我们可以把更改后的结果打成一个全新的镜像。就像图中所示:



docker具有的如下优势,使得它在虚拟化技术中独树一帜:

  • 容器启动可以在秒级实现
  • 效率很高,系统开销特别小
  • 交付和部署更快,就像搭积木游戏,搭出你心意的形状后,可以按照固定的模式快速复制。
  • 迁移和扩展性很好,物理机、虚拟机、公有云、私有云、个人电脑、服务器等都可以用
  • 管理更简单
接下来先看下基本的概念:

基本概念

images:镜像,是对一组软件的快照,拿过来就能够直接运行

containers:容器,镜像运行的实例,能够被修改,从而生成新的镜像。

docker hub:官方存放、发布镜像的地方。

mac上使用docker

对于mac上使用docker,官方文档在这里:https://docs.docker.com/engine/installation/mac/

要求OS X10.8及以上。



可以看到,在mac上,比linux上直接使用docker多了一层虚拟化。为了做到这一点,mac的docker-toolbox其中有一个小型的linux操作系统boot2docker,同时也借助了oracle的virtualbox。

  1. 下载docker toolbox
  2. 安装
  3. 装完之后,就可以看下面的基本命令了

基本命令

mac上docker初始化的基本命令:

// 创建一个docker,这同时会在virtualbox创建一个虚拟机
docker-machine create --driver virtualbox development

// 列举现有的docker
docker-machine ls

// 连接名为development的docker-machine
docker-machine ssh development

完成连接了之后,就可以进行docker的撒欢了:

// 从docker-hub中拉取名为hello-world的镜像
docker pull hello-world

// 镜像跑起来
docker run hello-world

// 列出所有的镜像
docker images

// 列出正在运行的容器
docker ps

// 拉取并启动nginx镜像,容器名为web,-P表示开放端口给你的mac访问
docker run -d -P --name web nginx
查看端口信息:
docker port web

443/tcp -> 0.0.0.0:49156

80/tcp -> 0.0.0.0:49157


查看development这个docker对应的ip:
docker-machine ip development

192.168.99.100


在mac本机上访问 
192.168.99.100:49157
即可看到nginx的欢迎页面!

对于镜像管理的问题,一开始我是想在docker-hub上面进行所有的镜像管理的,但是却发现网络连接的速度非常的慢。所以只好寻求国内的解决方案,其中有如下这么几个:

  • daocloud
  • 阿里云
  • 网易云
  • 云雀
  • 。。。
一开始搜到的是daocloud,所以很自然的使用了他的加速服务,不过需要强制装他的监控镜像,不是很友好。所以之后会先试用阿里云的镜像管理服务,再看看别的如何。

对于常用的镜像,这些国内厂商都会定期去同步一份最新的到国内服务器上的,centos这种也不可能天天更新,所以时效性上问题不大。而自己管理自己镜像的时候,快速存取是关键,这样就可以把环境放在云上,完全不用机器搬来搬去了!


    关注 小白学web


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册