先道歉~最近有点儿忙…没时间更新文章….
话说我之前做项目都是用CentOS 6来做伪虚拟化的容器的.
不过考虑到CentOS 6到明年中就EOL了~好吧看来有必要寻找新的容器基础.
然后这个时候~后知后觉得我发现了Alpine….
在讨论前首先戴头盔
以下看法纯属个人主观与偏见的技术讨论帖~各位大神如果有不同意见可以留言讨论
如果觉得在下太水皮的话~就当你赢~我输就好~
首先我来现学现卖班门弄斧的说说什么是Alpine吧
Alpine是一套轻量化的功能基本完善但是运行效率极高的开源Linux发行版.
据说由于这些特点,Docker官方都推荐使用它来做容器基础,虽然这种说法我并没有找到Docker官方信息支持这个观点…..
但的确~Alpine的基础Docker包容量才5.6 MB…
好吧~我们来正题了~~~
我现在使用的办法是更轻量化的部署方式
直接用Dockerfile来创建镜像.~不过我们创建之前要搞清楚我们要创建的是什么~
我会以一个普通的php hosting server为例简单地说一下~
而一个php hosting server需要什么呢~需要以下几个东西
1. Nginx #这个不用说了~Web Server
2. php-fpm #我们用的办法是php-fpm来运行php
3. php7 & …… #的一些常用扩展,例如php7-mbstring之类的
4. supervisord #用来运行各种服务
5. sshd #管理用~
FROM alpine:3.10 MAINTAINER Arvind Rawat <[email protected]> RUN apk --update add --no-cache openssh bash \ && sed -i s/#PermitRootLogin.*/PermitRootLogin\ yes/ /etc/ssh/sshd_config \ && echo "root:root" | chpasswd \ && rm -rf /var/cache/apk/* RUN sed -ie 's/#Port 22/Port 22/g' /etc/ssh/sshd_config RUN sed -ri 's/#HostKey \/etc\/ssh\/ssh_host_key/HostKey \/etc\/ssh\/ssh_host_key/g' /etc/ssh/sshd_config RUN sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_rsa_key/HostKey \/etc\/ssh\/ssh_host_rsa_key/g' /etc/ssh/sshd_config RUN sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_dsa_key/HostKey \/etc\/ssh\/ssh_host_dsa_key/g' /etc/ssh/sshd_config RUN sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_ecdsa_key/HostKey \/etc\/ssh\/ssh_host_ecdsa_key/g' /etc/ssh/sshd_config RUN sed -ir 's/#HostKey \/etc\/ssh\/ssh_host_ed25519_key/HostKey \/etc\/ssh\/ssh_host_ed25519_key/g' /etc/ssh/sshd_config RUN /usr/bin/ssh-keygen -A RUN ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_key RUN apk --update add --no-cache supervisor \ && echo "[program:sshd]" >> /etc/supervisord.conf \ && echo "command=/usr/sbin/sshd -D" >> /etc/supervisord.conf RUN apk --update add --no-cache nginx php-fpm php7 php7-mbstring php7-session php7-gd php7-mysqli \ && echo "[program:nginx]" >> /etc/supervisord.conf \ && echo "command=/usr/sbin/nginx" >> /etc/supervisord.conf \ && echo "daemon off;" >> /etc/nginx/nginx.conf \ && mkdir -p /run/nginx \ && echo "[program:php-fpm]" >> /etc/supervisord.conf \ && echo "command=/usr/sbin/php-fpm7 -F" >> /etc/supervisord.conf EXPOSE 22 CMD ["/usr/bin/supervisord","--nodaemon","-c","/etc/supervisord.conf"]
这份dockerfile是什么意思呢
基本上可以理解为装上我说的那些东西~然后用supervisord来跑起来,sshd的默认用户密码是root:root
并且supervisord为Docker的入口程序
那么我们首先打开Portainer = > Image页面
点击+ Build a new image打开创建镜像页面
在Name输入框输入你的新的镜像的名字
下面则输入上方的那段dockerfile的内容
点击下方Build the image按钮
Portainer就会开始创建镜像
创建完后你会发现会多了两个镜像
一个是alpine:3.10,另外一个是alpine:hosting.
原因是新创建的alpine:hosting镜像是基于alpine:3.10镜像的~
其实你把alpine:hosting镜像导出来,然后删掉原来的镜像再导入~就可以只有一个alpine:hosting镜像
然后你就可以就这个镜像创建容器实例了.
创建容器~写名字~选刚才创建的镜像~
然后选我们之前的页面教大家创建的MacVLAN~重启策略我会选On failure,当然你也可以选always~
Docker+Portainer打造伪虚拟机服务器 Part.1(Portainer端)
然后就创建完成了~~
然后就可以用SSH来登录服务器了~
可以看到supervisord已经运行起来了sshd,nginx和php-fpm了
alpine 3.10的默认的php-fpm是7.3.6版本
我们简单地写个phpinfo页面
一打开基本上需要用的基础的东西都全了
如果不够的以后自己加吧
Recent Comments