阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于 Docker 的个人网站部署

263次阅读
没有评论

共计 3853 个字符,预计需要花费 10 分钟才能阅读完成。

VPS 个人网站迁移的问题

7 月份的时候,现在的 VPS 提供商升级了硬件配置,为了充分使用 VPS 的资源,我只好重装了 Ubuntu 操作系统。

本来计划今年把个人的 VPS 主机从国外迁回来,所以为了方便后面的迁移,我把主机上的服务都部署到了 Docker 创建的容器环境中,方便后面迁移。

使用了一段时间,运行比较稳定。

Docker 简单介绍

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,可以把整个环境部署到里面,然后打包发放。这个打包包括了容器的操作系统环境,在另一台安装了 docker 的系统上可以导入镜像文件运行。

LXC 旨在提供一个共享 kernel 的 OS 级虚拟化方法,在执行时不用重复加载 Kernel, 且 container 的 kernel 与 host 共享,因此可以大大加快 container 的 启动过程,并显著减少内存消耗。

docker 容器中运行的进程性能接近本地应用程序。

docker 常用命令

1.docker pull: 从仓库中拖镜像

2.docker run:创建容器

3.docker stop:停止容器运行

4.docker start:开始容器运行

5.docker commit:提交容器到镜像

6.docker images: 查看当前有的镜像

7.docker ps:查看当前启动的容器

VPS 主机环境

1.vps: linode

2. 系统: Ubuntu 14.04 LTS

3.docker: Docker version 0.9.1(直接 apt-get 安装)

4.image 版本: Ubuntu 12.04 LTS

需要注意安装 docker 的时候确认内核版本,要在 3.10 以上

创建 docker 容器
 
创建数据目录 /data

1./data 目录中将用来存放容器中 mongdb,mysql,redis 等数据库文件,还有个人站点的文件。

2. 在 /data 中放置了容器启动后执行的脚本文件,这样可以启动容器内的服务。

创建 /data/docker_config/myboot.sh 脚本

这个脚本是容器启动后运行的脚本,因为这个脚本是放在 /data 目录下,所以可以在宿主系统上修改,这样就可以选择在启动容器的时候是运行 shell,还是直接运行服务程序。

脚本启动的服务:

1.supervisord 服务,容器内的服务 (mysql,mongodb,redis) 都是使用这个管理。

2.sshd 服务,远程访问。

#!/usr/bin/env bash

# 容器启动时启动服务程序
if [-f /bin/bashno]; then
# 容器启动时启动 shell
#if [-f /bin/bash]; then
/bin/bash
else
cron
/usr/sbin/munin-node –config /etc/munin/munin-node.conf
supervisord
/usr/sbin/sshd -D
fi

用下面的命令创建容器
# 从  https://index.docker.io/ 下载镜像
docker.io pull ubuntu

# 创建容器
docker.io run -d -m 3G -h ‘mydocker’ -p 80:80 -p 32000:22 -p 35000:35000 -p 37064:37064 \
-v /data:/data -w /data –name mydocker_c ubuntu /data/docker_config/myboot.sh

1. 上面是创建容器命令,映射容器的 80,22,35000 端口对外提供服务。

2. 把本地的目录 /data 挂载到容器中

3. 设置容器启动执行的脚本文件 /data/docker_config/myboot.sh

查看当前容器
docker.io ps -a

配置容器

第一次启动容器时,配置启动执行脚本启动从 shell 启动,这样执行命令 docker.io start mydocker_c 就可以启动到 shell,就可以安装需要的软件和服务了。

安装 sshd,supervisord,mongodb,mysql,redis 等程序

配置 supervisord 管理服务程序。

配置 supervisord 管理 mongodb 服务,创建文件 /etc/supervisor/conf.d/mongodb.conf,内容如下:
[program:mongodb]
autostart=true
user=mongodb
directory=/var/run/mongodb/
command=mongod run -f /etc/mongodb.conf –pidfilepath /var/run/mongodb/mongodb.pid

用 supervisord 管理其他服务的方法与上面相同。
# 启动服务
user@host: ~ $ supervisorctl start

# 查看服务状态
user@host: ~ $ supervisorctl status

mongodb                          RUNNING    pid 14, uptime 5:50:47
mysql                            RUNNING    pid 21, uptime 5:50:47
nginx                            RUNNING    pid 16, uptime 5:50:47
redis                            RUNNING    pid 15, uptime 5:50:47
sentry-web:sentry-web_00        RUNNING    pid 19, uptime 5:50:47
sentry-web:sentry-web_01        RUNNING    pid 20, uptime 5:50:47
sentry-web:sentry-web_02        RUNNING    pid 17, uptime 5:50:47
sentry-web:sentry-web_03        RUNNING    pid 18, uptime 5:50:47
webpy:00                        RUNNING    pid 32, uptime 5:50:47
webpy:01                        RUNNING    pid 33, uptime 5:50:47
webpy:02                        RUNNING    pid 25, uptime 5:50:47
webpy:03                        RUNNING    pid 27, uptime 5:50:47
webpy:04                        RUNNING    pid 41, uptime 5:50:47
webpy:05                        RUNNING    pid 42, uptime 5:50:47
webpy:06                        RUNNING    pid 35, uptime 5:50:47
webpy:07                        RUNNING    pid 36, uptime 5:50:47

创建自己的镜像文件

配置完成后进行下面操作:

1. 退出容器,用命令 docker.io stop mydocker_c 停止容器运行。

2. 修改容器启动脚本配置直接启动服务,然后重新启动容器(docker.io start mydocker_c),用 ssh 登录容器,看配置的服务是否都正常启动。

3. 确认一切正常后用命令停止容器运行。

4. 使用 docker.io commit 创建当前系统的镜像文件,以后就可以导出这个镜像文件来使用了。

完成

容器现在启动后,可以自动运行部署的服务。

现在可以 push 镜像文件到远程的仓库([ https://index.docker.io/  https://index.docker.io/] ),也可以导出使用。个人站点迁移的时候只要把镜像文件导出,并且把 /data 目录打包重新在新的机器上导入镜像文件,解压 /data 目录即可使用(mysql 数据库可能需要用脚本导出再导入,要根据自己的配置来调整,mongodb 服务器的数据文件可以直接使用)

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

配置 Docker 镜像下载的本地 mirror 服务  http://www.linuxidc.com/Linux/2015-07/120061.htm 

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm 

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121167.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3853字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中