新安装完操作系统的服务器,我一般在/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