准备条件
- 使用docker的机器,添加用户时需要指定用户的uid :
sudo groupadd -g 500 work && useradd -g 500 -u 500 work
否则可能出现容器无权限访问挂载数据卷的问题 - OS Requirements:
https://download.docker.com/linux/centos/docker-ce.repo
64bit-CentOs 7 - Docker Installation (参考https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository)
版本: CE(社区版)
安装: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 && sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && sudo yum makecache fast && sudo yum -y install docker-ce - 编辑/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd
-g /data/lib/docker/ 建立文件夹,启动docker
sudo systemctl daemon-reload
sudo mkdir -p /data/lib/docker
sudo systemctl start docker
- 建立用户组(使用work账号管理)
sudo groupadd docker ; sudo usermod -aG docker work
- sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf && sysctl -p
Jenkins机器:
镜像仓库
- Harbor Installation (镜像仓库管理工具) (git: https://github.com/vmware/harbor)
sudo yum -y install wget && mkdir -p /data/soft && sudo chown -R work:work /data/soft && cd /data/soft && wget https://github.com/vmware/harbor/releases/download/v1.1.0/harbor-online-installer-v1.1.0.tgz && tar zxf harbor-online-installer-v1.1.0.tgz
cd harbor && 编辑 harbor.cfg && sh install.sh
示例:
php基础镜像构建
- Dockerfile:
FROM centos:centos6.6
MAINTAINER wangqingxin
ADD bfrontapi.tar.gz /data/deploy/
COPY run.sh /data/deploy/bfrontapi/
RUN groupadd -g 500 work && \
useradd -u 500 -g 500 work && \
ln -s /data/deploy /opt/deploy && \
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1 && \
chown work:work /data/deploy/bfrontapi/run.sh && \
chmod u+x /data/deploy/bfrontapi/run.sh && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
USER work
WORKDIR /data/deploy/bfrontapi/
VOLUME /data/deploy/bfrontapi/log
- run.sh
#!/bin/sh
/data/deploy/bfrontapi/hhvm/bin/hhvm_control start
sh /data/deploy/bfrontapi/webserver/loadnginx.sh start
trap "sh /data/deploy/bfrontapi/webserver/loadnginx.sh stop; exit" TERM
while true
do
sleep 5
done
php持续构建(tag-push trigger)
- build.sh
docker login -u RD -p rdV5@harbor. https://harbor.qyvideo.net
docker pull harbor.qyvideo.net/php-api/php-api:basic
git_tag=`git tag|tail -1`
URL='harbor.qyvideo.net'
TAG=$URL/php-api/php-api:$git_tag
docker build -t $TAG ./docker/.
docker push $TAG
docker rmi $TAG - Dockerfile
FROM harbor.qyvideo.net/php-api/php-api:basic
MAINTAINER wangqingxin
ADD php-app.tgz /data/deploy/bfrontapi
RUN sh /opt/deploy/bfrontapi/deployconf.sh /opt/deploy/bfrontapi production restart && \
mkdir -p /home/work/odp/log && \
touch /home/work/odp/log/error.log
EXPOSE 8000
CMD /data/deploy/bfrontapi/run.sh
- jenkins 触发器设置
安装gitlab插件
- gitlab webhook 添加
其他
- Docker Compose Installation (参考https://docs.docker.com/compose/install/)
sudo -i;
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
which docker-compose (如果没有的话,把 /usr/local/bin/加到路径里面) - swarm (docker 集群管理工具)
选取一台作为manager, docker swarm init
选取一台作为worker,docker swarm join --token SWMTKN-1-23xycpsnfhn42zysnc1y738cf6rpi1oy6om4pvo0jsb355ydcv-0gia3fi7uob0gbpo7t85x1hi4 10.19.24.245:2377
常见问题
- yum 安装报Rpmdb checksum is invalid错误
尝试yum install ** || true
或yum clean all - Docker 镜像size太大
Docker file 尽量不要使用yum update(请尽量用最新的镜像代替改命令)
chown命令的目标对象如果很大的话,可以在加入docker镜像之前提前chown