Docker 简易虚拟建站平台(系统级容器)

准备工作:仅需一台Ubuntu16服务器(宿主机)即可(阿里云)
初始化宿主机
# apt install openssh-server
# /etc/init.d/ssh restart
# apt install software-properties-common
# add-apt-repository -y ppa:nginx/stable
# add-apt-repository -y ppa:ondrej/php
# apt update

第一步:宿主机安装Docker
# apt install docker.io
# apt install docker.compose #快速编排 .yml
# apt update

第二步:宿主机安装Nginx及其它
# apt install -y nginx
# systemctl enable nginx.service
# systemctl start nginx.service
# apt install -y php7.1 php7.1-common php7.1-cli php7.1-fpm php7.1-curl php7.1-gd php7.1-mysql php7.1-xml php7.1-mbstring php7.1-dev php-redis php-dompdf php-pear
# apt install composer
# composer config -g repo.packagist composer https://packagist.phpcomposer.com
# apt update

第三步:使用Dockerfile创建Ubuntu镜像并添加SSH服务

1、创建工作目录
# mkdir -p sshd_ubuntu
# cd /sshd_ubuntu/

2、编写run.sh脚本和authorized_keys文件
# touch Dockerfile run.sh
# vim run.sh
run.sh--------------------------------------------------------------------------------------------
#!/bin/bash
/usr/sbin/sshd -D &
---------------------------------------------------------------------------------------------------
# cat run.sh
# cat /root/.ssh/id_rsa.pub > ./authorized_keys

3、编写 Dockerfile
Dockerfile----------------------------------------------------------------------------------------
# 基础镜像信息
FROM ubuntu:14.04

# 维护者信息
MAINTAINER davidjiang [email protected]

# 更新apt缓存、安装ssh服务
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd /root/.ssh
RUN sed -ri 's#session    required     pam_loginuid.so#session    required     pam_loginuid.so#g' /etc/pam.d/sshd

# 配置免密要和自启动脚本,宿主同名文件复制进镜像
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

# 暴露22端口
EXPOSE 22

# 设置脚本自启动
CMD ["/run.sh"]
#[root@docker sshd_ubuntu]#
---------------------------------------------------------------------------------------------------

4、创建镜像
# docker build -t sshd:ubuntu2 .
# docker images

5、测试镜像-运行容器
# docker run -d -p 10122:22 sshd:ubuntu2
# 或限制内存使用上限
# docker run -d -m 300M --memory-swap -1 -p 10122:22 sshd:ubuntu2 
# 检查容器和服务器端口
# docker ps    
# netstat -antlp|grep LISTEN

6、进入容器内配置
# 6.1 重置容器密码
# sudo pwd
# 6.2 开放SSH远程连接权限
# 打开配置文件    vim /etc/ssh/sshd_config
# 注释语句    #PermitRootLogin without-password
# 加入语句    PermitRootLogin yes
# 退出容器    exit
# 6.3 重启容器
# docker restart [container ID]

7、容器中安装Nginx站点
7.1 获知Ubuntu容器内部IP
# docker inspect --format '{{.NetworkSettings.IPAddress}}'  [container ID]    
7.2 试登录Ubuntu容器
# 使用MobaXterm Win64工具连接
# IP / root / port:10122 / password
7.3 容器中安装Nginx站点
# 宿主机Browse默认80端口 : curl http://内部IP:80/
8、宿主机Nginx指向Docker容器中Nginx站点
8.1、准备域名绑定
# domain : ea7014c299af.ichmuseum.com
8.2、准备站点conf文件
www文件------------------------------------------------------------------------------------------
upstream ea7014c299af {
    server 172.17.0.8:80 max_fails=2;    # Docker容器内部IP
}
server {
    listen 80 ;
    #access_log /dev/null;
    server_name ea7014c299af.ichmuseum.com;
    location / { 
      # try_files $uri $uri/ /index.php?$query_string;
      if (!-e $request_filename) {    
        rewrite ^(.*)$ /index.php?s=$1 last;    
        break;    
      } 
      proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://ea7014c299af;
    }
    
}
--------------------------------------------------------------------------------------------------
# www文件-存入/etc/nginx/sites-enabled/
8.3、重启宿主机Nginx
# service nginx restart

 

最后访问站点 http://ea7014c299af.ichmuseum.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章