Docker技术入门与实战【3.1】
16.1.2 Ubuntu 14.04系统Ubuntu 14.04的内核是比较新的3.13版本可以较好地支持Docker所以不需要进行升级。利用apt-get安装Docker步骤如下# apt-get update# apt-get install apt-transport-https# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9# bash -c echo deb https://get.docker.io/ubuntu docker main /etc/apt/sources.list.d/docker.list# apt-get update# apt-get install lxc-docker启动的时候也会遇到无法分配空闲IP的提示可以使用如下命令# docker --bip 192.168.100.1/24 -d 启动即可。后面的下载和测试步骤与CentOS类似在此不再赘述。16.2 阿里云Docker的特色服务图16-2摘自阿里云官方网站描述了了使用阿里云ECS Docker将使开发、测试和运维之间合作更加紧密各司其职实现更高的效率。图16-2是阿里云ECS Docker的完整生态图摘自阿里云官方网站。阿里云镜像市场中的第三方Docker镜像在阿里云的镜像市场有一款镜像“Docker运行环境”如图16-3所示它的操作系统使用Ubuntu 14.0464位并预装了Docker 1.2版本一旦ECS实例运行读者就能在其上构建和运行Docker容器了。镜像地址为http://market.aliyun.com/imageproduct/16-122106003-jxsc000057.html专为阿里云ECS用户提供下载的Docker私有仓库为方便ECS用户使用Docker官方镜像阿里云同步Docker官方镜像库的最新版本到国内服务器使得ECS用户可以通过内网连接该服务器。这些镜像来自Docker Hub的stackbrew用户下的所有镜像仓库一部分镜像由Docker官方维护一部分由软件官方社区维护。目前只支持镜像下载。笔者下面展示一下如何使用阿里云的源来下载镜像。阿里云的私有仓库不支持使用标准方式来查询下面的结果返回为空# curl registry.mirrors.aliyuncs.com/v1/search{num_results: 0 query: results: []}不过官方公布了两种下载镜像的方法。第一种方法可以通过下面的命令下载各种镜像docker pull registry.mirrors.aliyuncs.com/library/debiandocker pull registry.mirrors.aliyuncs.com/library/hello-worlddocker pull registry.mirrors.aliyuncs.com/library/zend-phpdocker pull registry.mirrors.aliyuncs.com/library/wordpressdocker pull registry.mirrors.aliyuncs.com/library/ubuntu-upstartdocker pull registry.mirrors.aliyuncs.com/library/ubuntu-debootstrapdocker pull registry.mirrors.aliyuncs.com/library/ubuntudocker pull registry.mirrors.aliyuncs.com/library/rubydocker pull registry.mirrors.aliyuncs.com/library/registrydocker pull registry.mirrors.aliyuncs.com/library/redisdocker pull registry.mirrors.aliyuncs.com/library/railsdocker pull registry.mirrors.aliyuncs.com/library/pythondocker pull registry.mirrors.aliyuncs.com/library/postgresdocker pull registry.mirrors.aliyuncs.com/library/phpdocker pull registry.mirrors.aliyuncs.com/library/perldocker pull registry.mirrors.aliyuncs.com/library/opensusedocker pull registry.mirrors.aliyuncs.com/library/nodedocker pull registry.mirrors.aliyuncs.com/library/mageiadocker pull registry.mirrors.aliyuncs.com/library/jrubydocker pull registry.mirrors.aliyuncs.com/library/jenkinsdocker pull registry.mirrors.aliyuncs.com/library/javadocker pull registry.mirrors.aliyuncs.com/library/hylangdocker pull registry.mirrors.aliyuncs.com/library/hipachedocker pull registry.mirrors.aliyuncs.com/library/golangdocker pull registry.mirrors.aliyuncs.com/library/gccdocker pull registry.mirrors.aliyuncs.com/library/fedoradocker pull registry.mirrors.aliyuncs.com/library/docker-devdocker pull registry.mirrors.aliyuncs.com/library/cruxdocker pull registry.mirrors.aliyuncs.com/library/cratedocker pull registry.mirrors.aliyuncs.com/library/clojuredocker pull registry.mirrors.aliyuncs.com/library/cirrosdocker pull registry.mirrors.aliyuncs.com/library/centosdocker pull registry.mirrors.aliyuncs.com/library/busyboxdocker pull registry.mirrors.aliyuncs.com/library/buildpack-depsdocker pull registry.mirrors.aliyuncs.com/library/nginxdocker pull registry.mirrors.aliyuncs.com/library/mongodocker pull registry.mirrors.aliyuncs.com/library/neurodebiandocker pull registry.mirrors.aliyuncs.com/library/mysql我们来测试下这个内网的阿里云源下载速度如何让我们来下载一个ubuntu14.04的镜像# time docker pull registry.mirrors.aliyuncs.com/library/ubuntu:14.042014/11/19 21:22:22 Error: Invalid registry endpoint https://registry.mirrors.aliyuncs.com/v1/: Get https://registry.mirrors.aliyuncs.com/v1/_ping: dial tcp 10.157.230.35:443: i/o timeoureal 0m5.020suser 0m0.009ssys 0m0.006s如果读者跟我一样已经将Docker的版本升级到1.3那么就会出现这个提示当我们使用1.3版本的Docker来下载非官方镜像时都会让我们手工确认该源的安全性如果确认没问题则需要手工添加--insecure-registry到启动参数中。具体的添加方法在本书最后的FAQ中有详细介绍。添加完之后我们再次来下载ubuntu14.04镜像$ sudo time docker pull registry.mirrors.aliyuncs.com/library/ubuntuPulling repository registry.mirrors.aliyuncs.com/library/ubuntu5506de2b643b: Download complete511136ea3c5a: Download completed497ad3926c8: Download completeccb62158e970: Download completee791be0477f2: Download complete3680052c0f5c: Download complete22093c35d77b: Download completeStatus: Image is up to date for registry.mirrors.aliyuncs.com/library/ubuntu:latestreal 0m12.681suser 0m0.010ssys 0m0.007s12秒就下载了ubuntulatest镜像还可以手工指定需要下载的版本$ sudo docker pull registry.mirrors.aliyuncs.com/library/ubuntu:12.04Pulling repository registry.mirrors.aliyuncs.com/library/ubuntu0b310e6bf058: Download complete511136ea3c5a: Download complete5f18d94c3eca: Download complete53db23c604fd: Download complete9f045ea36057: Download completed03a1a9d7555: Download complete30868777f275: Download completeStatus: Downloaded newer image for registry.mirrors.aliyuncs.com/library/ubuntu:12.04第二种方法创建from_aly空目录并在其中创建Dockerfile文件$ mkdir from_aly$ cd from_aly/$ vi DockerfileDockerfile内容为FROM registry.mirrors.aliyuncs.com/library/ubuntu:14.04根据这个一句话的Dockerfile创建镜像$ sudo docker build -t ubuntu_aly:14.04 .Sending build context to Docker daemon 2.56 kBSending build context to Docker daemonStep 0 : FROM registry.mirrors.aliyuncs.com/library/ubuntu:14.04Pulling repository registry.mirrors.aliyuncs.com/library/ubuntu5506de2b643b: Download complete511136ea3c5a: Download completed497ad3926c8: Download completeccb62158e970: Download completee791be0477f2: Download complete3680052c0f5c: Download complete22093c35d77b: Download completeStatus: Image is up to date for registry.mirrors.aliyuncs.com/library/ubuntu:14.04--- 5506de2b643bSuccessfully built 5506de2b643b支持阿里云OSS的私有仓库官方在Github上有一个项目docker-registry专门用于自建Docker的私有镜像库。镜像管理是Docker的核心为了保证镜像数据的可靠、可用和安全docker-registry现在支持镜像数据存储在S3、GCS等云存储上。已经有人给docker-registry开发了针对阿里云OSS的驱动并把它和docker-registry一起做成了Docker镜像。以下是快速启动支持OSS的docker-registry的方式$ sudo docker run -e OSS_BUCKETyour_ali_oss_bucket -e STORAGE_PATH/docker/ -e OSS_KEYyour_ali_oss_key -e OSS_SECRETyour_ali_oss_secret -p 5000:5000 -d chrisjin/registry:ali_oss读者也可以从https://github.com/docker/docker-registry下载安装docker-registry并通过pip安装OSS driver。$ sudo pip install docker-registry-driver-alioss接下来配置config.yml。local: local: *commonstorage: aliossstorage_path: _env:STORAGE_PATH:/devregistry/oss_bucket: _env:OSS_BUCKET[:default_value]oss_accessid: _env:OSS_KEY[:your_access_id]oss_accesskey: _env:OSS_SECRET[:your_access_key]最后启动docker-registry。DOCKER_REGISTRY_CONFIGyour_config_path gunicorn -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wi:application16.3 本章小结公有云已经提供了诸多虚拟化带来的便利那么在上面使用Docker还有意义吗其实通过整合公有云的虚拟机和Docker方式可能获得更多的好处包括·快速交付和部署。·利用内核级虚拟化对公有云中服务器资源进行更加高效地利用。·利用公有云和Docker的特性更加方便的迁移和扩展应用。以一个简单的应用开发、测试和发布过程来说明Docker在公有云上的应用过程。首先运维人员在公有云上搭建私有Docker注册服务器以存储项目组镜像。开发人员在开发过程中从搭建的私有Docker Registry获取应用需要的基础镜像。之后可以开发并构造应用容器测试通过后提交容器为新的镜像并推送到私有的Docker Registry。QA在测试云服务器上测试容器通过后提交到私有的Docker Registry。最后发布人员下载最新版本镜像并在生产云服务器上部署容器。