新安装完操作系统的服务器,我一般在/root目录中进行服务器的初始化配置,其中一个重要的脚本就是安装docker、git、hg等必备的工具,我叫他init:
#!/bin/bash
# install git
yum install git
# install docker
yum update
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
yum install docker-engine
service docker start
如果我以root运行Docker,我一般是用/root作为工作目录;如果以其他用户运行的Docker,如:jilili,我将在/home/jilili作为我的工作目录,请确保你的工作目录有足够的空间,否则,请把工作目录放在有空间的地方;
** 这是我的服务器工作目录 **
# ls ~/
c4print init nginx objstsvr x5wiki x5blog x5www x5code
** c4print** 是一个包含多个服务的项目目录,其它几个目录为单独的Docker应用的目录;其中的update是执行更新,因为更新时他们有link依赖关系,所以使用update一次整体按顺序更新:
# ls ~/c4print/
c4operation c4service c4store c4weixin mysql update
写几个简单脚本管理Docker容器
开始建立docker容器前,我一般为每个docker容器建立一个工作目录,里面放置几个脚本:
单独一个的服务目录如下:
# ls ~/c4print/c4service/
build config create src test update
** src ** :是服务的源码目录,这里是一个基于django的服务;
# ls src
c4service Dockerfile DOCKER.md init init.sql manage.py nginx.conf README.md requirements.txt start
** config ** :定义生成的image的名称、容器的名称等
export container_name="c4service"
export image_name="nihw/c4service"
** build ** :用来构建image;
#!/bin/bash
basepath=$( cd `dirname $0`; pwd )
. $basepath/config
cd $basepath/src && git pull && cd .. && docker build -t $image_name ./src
** create ** :用image创建容器
#!/bin/bash
basepath=$( cd `dirname $0`; pwd )
. $basepath/config
docker run --name $container_name -e DB_HOST=rm-bp2dw017e0v0e212do.mysql.rds.aliyuncs.com -e DB_PORT=3306 -e DB_USER=c4print -e DB_PASSWD=dbpass -e DB_NAME=c4print --restart=always -td $image_name /bin/bash
** update ** :用于更新代码、重新构建image及创建容器
#!/bin/bash
basepath=$( cd `dirname $0`; pwd )
. $basepath/config
cd $basepath
./build && docker stop c4service && docker rm c4service && ./create
