準備工作:僅需一臺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