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

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