上一节我们建立了简单的容器,这一届我们进一步探索docker的功能
暴露多个端口
很多情况下,我们将队列与缓存部署在一起,即 beanstalkd + redis,都是用默认端口,11300和6379。
Dockerfile
FROM ubuntu:14.04
MAINTAINER LAO GAO <endoffight#gmail.com>
# 下面一段话是为了加速update
RUN sed -i "s/archive\.ubuntu\.com/mirrors\.163\.com/g" /etc/apt/sources.list
#RUN sed -i "s/archive\.ubuntu\.com/mirrors\.aliyun\.com/g" /etc/apt/sources.list
#RUN sed -i "s/archive\.ubuntu\.com/tw\.archive\.ubuntu\.com/g" /etc/apt/sources.list
RUN apt-get -qq update
RUN apt-get install redis-server beanstalkd -y
EXPOSE 6379 11300
CMD ["beanstalkd","-p","11300"]
CMD ["/usr/bin/redis-server"]
ps. 我们在Dockerfile中暴露了两个端口,所以我们在之后运行的时候需要用-p重复2次指定多个端口映射,或者使用-P将端口随机映射至宿主机器。
运行实例
sudo docker build --rm=true -t laogao/bst_redis .
# 暴露了多个端口
sudo docker run -d -p 6379:6379 -p 11300:11300 laogao/br
Shadowsocks
我们可以把ss放到docker中运行
FROM ubuntu:14.04
MAINTAINER LAO GAO <endoffight#gmail.com>
RUN sed -i "s/archive\.ubuntu\.com/mirrors\.163\.com/g" /etc/apt/sources.list
#RUN sed -i "s/archive\.ubuntu\.com/mirrors\.aliyun\.com/g" /etc/apt/sources.list
#RUN sed -i "s/archive\.ubuntu\.com/tw\.archive\.ubuntu\.com/g" /etc/apt/sources.list
RUN apt-get update
RUN apt-get install python-pip -y
RUN pip install shadowsocks
ENTRYPOINT ["/usr/local/bin/ssserver"]
Build
sudo docker build --rm=true -t laogao/ss -< ss.docker
RUN
# 我们实际运行的命令
/usr/local/bin/ssserver --workers 10 --pid-file /tmp/ss.pid --log-file /tmp/ss.log --user nobody -c /root/config.json -v -d start
# 使用ENTRYPOINT 后使用docker运行
sudo docker run -d -p 1234:1234 laogao/ss --workers 10 --pid-file /tmp/ss.pid --log-file /tmp/ss.log --user nobody -c /root/config.json -v -d start
# 或者直接指定运行参数
sudo docker run -d -p 1234:1234 laogao/ss -s 0.0.0.0 -p 1234 -k yourpasswd -m rc4-md5
不要忘了把你的防火墙对应端口打开哦!