云容器平台搭建步骤

2015年12月20日 8400点热度 25人点赞 0条评论

docker-logo-compressed

前言

2012年时,我的博客还是放在appfog的免费云空间之上,域名用的是godadday的廉价域名nanguoyu123.info。当时为了提高国内的访问速度,我采用了不同方案:

2014年,我接触到了docker。这种虚拟化方案将应用以及依赖打包成一个可移植的容器,无需hypervisor 支持,可以在docker engnie上发布,快速停止开启。每个容器之间相互隔离,不同的应用或组件部署到不同容器大大增强了迭代升级的难度。例如,我的一个web应用分为包含数据存储的container A与包含数据库的container B,如果需要对数据库修改,直接对container B操作即可,或者用新的container C将 container B置换。这种灵活性令我痴迷。

dockeryunqi

阿里云云栖大会docker专场

[butlink href='https://github.com/docker/docker']Docker Github[/butlink]

Docker 包括三个基本概念

  • 镜像(Image)镜像就是一个只读模板,类似与安装windows系统时的镜像文件
  • 容器(Container)容器就是在镜像之上的一层可读写层,是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库(Repository)仓库就是集中存放镜像文件的场所。例如: Docker Hub

[author]''这里介绍一个基于docker engine与owncloud的云容器搭建方法,实现网站的多地部署和备份[/author]

一,环境搭建

本教程在centos 7 x86_x64系统的vps上搭建,centos 7的CentOS-Extras 库已包含docker。当然,你可以选择其他系统环境搭建,docker对于kernel内核要求3.1以上。windows 环境下的docker的部署会基于virtalbox虚拟的linux系统中安装docker。

更新yum

yum update

01

安装sudo

yum install sudo

安装docker

sudo yum install docker

04

它随系统启动自动加载

sudo service docker start
sudo chkconfig docker on

05

二,测试docker

列出本地镜像

sudo docker images

06

报错?

sudo docker -d

07

kernel需要升级

查看内核

uname -r

08

升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel -y install kernel-lt

修改引导

1-140912021502109

三,wordpress实例部署

部署wordpress 容器

sudo docker run --name some-wordpress --link some-mysql:mysql -d wordpress

导出容器

 sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a814370e        some-wordpress        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
$ sudo docker export 7691a814370e > some-wordpress.tar

这样将导出容器快照到本地文件。

导入容器快照

cat some-wordpress.tar | sudo docker import - test/buntu:v1.0
sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/some-wordpress         v1.0                9d37a6082e97        About a minute ago   171.3 MB

sudo docker import http://nanguoyu.com/some-wordpress.tgz some-wordpress/test

注意:不建议在小内存的机器或生产环境直接使用,否则会出现IO过高等问题(原因未知,待排查)

2015-12-22_234707

 

四,owncloud云网盘部署

在docker hub上owncloud官方提供了docker镜像

我们可以使用

sudo docker search owncloud

寻找我们需要的镜像

dockerowncloud

也可以直接pull

docker pull owncloud

pullowncloud

list当前镜像

cloudimage

 

启动一个owncloud容器并将容器80端口映射到主机80端口

docker run -d -p 80:80 owncloud:8.1

浏览器访问主机ip即可使用owncloud

为方便起见,我将cloud.nanguoyu.com解析到该主机ip

owncloudwebdns

访问 cloud.nanguoyu.com设置管理员账号

owncloudadmin

由于docker的灵活性,我完全可以不用考虑其他mysql、nginx、php配置,设置完管理员账号之后,我们就可以直接使用了。

owncloudfile

 

[newtext title='总结']

  • 每次docker重启都会重置数据,除非你熟悉数据库和docker,我建议还是使用外部独立mysql的好。
  • Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
  • 开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

[/newtext]

Dong Wang

I will work as a PhD student of TU Graz in Austria. My research interests include Embedded/Edge AI, federated learning, computer vision, and IoT.

文章评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据