docker安装详细介绍:
https://www.jianshu.com/p/52d681f36415
对外发布服务
宿主机需要绑定一个公网IP
docker run -itd -p 宿主机端口:容器端口 镜像名称:标签
# 把 docker-0001 变成 apache 服务
[root@docker-0001 ~]# docker run -itd -p 80:80 myos:httpd
# 把 docker-0001 变成 nginx 服务,首先必须停止 apache
[root@docker-0001 ~]# docker stop $(docker ps -q)
[root@docker-0001 ~]# docker run -itd -p 80:80 myos:nginx
验证方式: 通过浏览器访问即可
容器共享卷
docker run -itd -v 宿主机对象:容器内对象 镜像名称:标签
使用共享卷动态修改容器内配置文件
[root@docker-0001 ~]# mkdir /var/webconf
[root@docker-0001 ~]# cp /usr/local/nginx/conf/nginx.conf /var/webconf/
[root@docker-0001 ~]# vim /var/webconf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
[root@docker-0001 ~]# docker run -itd -p 80:80 --name nginx -v /var/webconf/nginx.conf:/usr/local/nginx/conf/nginx.conf myos:nginx
验证方式: 使用 exec 进入容器查看
[root@docker-0001 ~]# docker exec -it nginx /bin/bash
[root@e440b53a860a html]# cat /usr/local/nginx/conf/nginx.conf
[root@e440b53a860a html]# # 查看 php 相关配置是否被映射到容器内
容器间网络通信
nginx利用容器共享网络特性调动后端php-fpm(container模式,共享其他容器的网络命令空间)
php-fpm监听nginx容器的网络端口
使用宿主机的共享卷使 nginx和php-fpm共享目录
实验架构图例
实验架构图例
配置共享网络和创建共享存储
[root@docker-0001 ~]# mkdir -p /var/{webroot,webconf}
[root@docker-0001 ~]# cp info.php info.html /var/webroot/
[root@docker-0001 ~]# cp /usr/local/nginx/conf/nginx.conf /var/webconf/
[root@docker-0001 ~]# vim /var/webconf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
# 启动前端 nginx 服务,并映射共享目录和配置文件
[root@docker-0001 ~]# docker run -itd --name nginx -p 80:80 \
-v /var/webconf/nginx.conf:/usr/local/nginx/conf/nginx.conf \
-v /var/webroot:/usr/local/nginx/html myos:nginx
# 启动后端 php 服务,并映射共享目录
[root@docker-0001 ~]# docker run -itd --network=container:nginx \
-v /var/webroot:/usr/local/nginx/html myos:php-fpm
验证服务
[root@docker-0001 ~]# curl http://docker-0001/info.html
<html>
<marquee behavior="alternate">
<font size="12px" color=#00ff00>Hello World</font>
</marquee>
</html>
[root@docker-0001 ~]# curl http://docker-0001/info.php
<pre>
Array
(
[REMOTE_ADDR] => 172.17.0.1
[REQUEST_METHOD] => GET
[HTTP_USER_AGENT] => curl/7.29.0
[REQUEST_URI] => /info.php
)
php_host: f705f89b45f9
1229
网友评论