准备工作:仅需一台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