最近饱受Python版本、Django版本、系统不同导致部署方法不同这一类问题的折磨,虽然之前也有接触过docker但一直没抽出时间仔细学习,正好趁这个机会学习docker使用方法。
首先,想安装docker需要epel源,这里使用阿里源:
1
| wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
|
然后安装
此时安装完的docker是1.5版本,而最新版本为1.6在epel源中并不存在,需要手动升级。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@localhost ~]# service docker start Starting cgconfig service: [ OK ] Starting docker: [ OK ] [root@localhost ~]# sudo docker -v Docker version 1.5.0, build a8a31ef/1.5.0 [root@localhost ~]# wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O /usr/bin/docker --2015-06-18 12:02:19-- https://get.docker.com/builds/Linux/x86_64/docker-latest Resolving get.docker.com... 162.242.195.82 Connecting to get.docker.com|162.242.195.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 15443675 (15M) [binary/octet-stream] Saving to: “/usr/bin/docker” 100%[======================================================================================>] 15,443,675 72.4K/s in 1m 55s 2015-06-18 12:04:16 (132 KB/s) - “/usr/bin/docker” saved [15443675/15443675] [root@localhost ~]# service docker restart Starting docker: [ OK ] [root@localhost ~]# sudo docker -v Docker version 1.6.2, build 7c8fca2
|
然后设为开机启动:chkconfig docker on
如果发现升级后docker无法启动,重启机器即可。
至于docker的基本概念和基本操作这里不多说了,可以参考这里。有很多小伙伴不知道怎么在容器中同时运行2个服务,这里给出我的Dockerfile,基于centos7版本支持ssh以及httpd服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| FROM centos:latest MAINTAINER shenyushun RUN yum install wget -y RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo RUN yum makecache RUN yum update -y RUN yum install httpd -y RUN yum install -y openssh openssh-server openssh-client RUN sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config RUN echo 'root:asdasd' |chpasswd RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN yum install -y python-devel python-setuptools python-setuptools-devel RUN easy_install pip RUN pip install supervisor RUN mkdir -p /var/log/supervisor COPY supervisord.conf /etc/supervisord.conf EXPOSE 22 80 CMD ["/usr/bin/supervisord"]
|
supervisord.conf文件内容如下:
1 2 3 4 5 6
| [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D [program:httpd] command=/usr/sbin/httpd -D FOREGROUND
|
把这2个文件放在同一个目录中,然后执行sudo docker build -t name/supervisord:centos
这样就会生成一个新的镜像,然后执行sudo docker run -p 2222:22 -p 8000:80 -t -i name/supervisord:centos
启动容器即可。
至于使用ubuntu的小伙伴可以参考官网文档,或者使用我写的dockfile:https://github.com/shenyushun/docker-ubuntu14.04
最后再补充2个我最常用的指令,在初学时候经常要创建很多容器和镜像,但一个一个删太麻烦了:
1 2
| docker rm $(docker ps -a -q) #删除所有容器 docker rmi $(docker images | grep none | awk '{print $3}' | sort -r) #删除所有镜像
|