1.使用Dockerfile文件直接构建
Dockerfile
FROM centos:centos6MAINTAINER aaron "aaron.docker@gmail.com"#Install supervisorRUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN yum -y update && yum -y install python-pip && /usr/bin/pip install supervisorRUN mkdir -p /etc/supervisor/conf.d && mkdir -p /var/log/supervisorCOPY supervisord.conf /etc/supervisord.confVOLUME /var/log/supervisor#install sshd RUN yum install -y openssh-server && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config# select root paswordRUN echo "root:pasword" | chpasswd && echo "root ALL=(ALL) ALL" >> /etc/sudoersRUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN mkdir /var/run/sshd#Install libeventRUN yum -y install wget && yum -y install tar && yum -y install gcc && yum -y install perl-Test-HarnessRUN wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz &&\ tar xzf libevent-2.0.21-stable.tar.gz &&\ cd libevent-2.0.21-stable &&\ ./configure --prefix=/usr &&\ make && make install#Install memcached RUN wget http://memcached.org/latest && mv latest memcached-1.4.21.tar.gz && \ tar xzf memcached-1.4.21.tar.gz &&\ cd memcached-1.4.21 &&\ ./configure --prefix=/usr/local/memcache --with-libevent=/usr &&\ make && make installEXPOSE 22 11211CMD ["/usr/bin/supervisord"]
构建
新建build.conf、build.sh
build.conf
DOCKER_USER=aarongoDOCKER_IMAGE_NAME=centos-memcache-supervisorDOCKER_IMAGE_TAG=latestDOCKER_IMAGE_REPOSITORY_NAME=${DOCKER_USER}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
build.sh
#!/usr/bin/env bash# Change working directoryDIR_PATH="$( cd "$( echo "${0%/*}" )"; pwd )"if [[ $DIR_PATH == */* ]]; then cd $DIR_PATHfiNO_CACHE="$1"source build.confshow_docker_image (){ NAME=$1 NAME_PARTS=(${NAME//:/ }) # Set 'latest' tag if no tag requested if [ ${#NAME_PART[@]} == 1 ]; then NAME_PARTS[1]='latest' fi docker images | grep -e "^${NAME_PARTS[0]}[ ]\{1,\}${NAME_PARTS[1]}"}echo Building ${DOCKER_IMAGE_REPOSITORY_NAME}...# Allow cache to be bypassedif [ "$NO_CACHE" == "true" ]; then echo " ---> Skipping cache"else NO_CACHE="false"fi# Build from working directorydocker build --no-cache=$NO_CACHE -t ${DOCKER_IMAGE_REPOSITORY_NAME} .# Display the last docker imageecho "Docker image:"show_docker_image ${DOCKER_IMAGE_REPOSITORY_NAME}echo " ---> Build complete"
配置好buid.conf后直接运行build.sh 可直接完成