- 查找Docker Hub上的tomcat镜像
docker search tomcat
- 拉取官方上的镜像到本地
docker pull tomcat
- 查看本地的所有镜像
docker images -a
- 运行容器
镜像是静态的,容器是动态的,容器是镜像运行时的实体。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样。
sudo docker run -d --name tomcat -v /usr/fin/tomcat/webapps:/usr/local/tomcat/webapps -v /usr/fin/tomcat/logs:/usr/local/tomcat/logs -p 8081:8080
-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器目录。
- ip:port 访问tomcat
遇到的问题:
【问题1】ip:port访问tomcat提示"HTTP ERROR 404"
原因:-v /usr/fin/tomcat/webapps:/usr/local/tomcat/webapps : 宿主机目录为空,把容器/usr/local/tomcat/webapps的目录覆盖了
解决办法:
创建个/usr/fin/tomcat/webapps/ROOT/index1.html文件
这样tomcat就部署成功!!!
部署nginx
- 查找nginx
docker search nginx
- 拉取仓库镜像到本地
docker pull nginx
- 运行nginx容器
sudo docker run -d --name nginx_web --volumes-from tomcat -v /usr/fin/nginx/logs:/var/log/nginx -v /usr/fin/nginx/html:/usr/share/nginx/html -p 80:80 nginx
# 查看运行容器
docker ps
- 进入nginx容器,修改nginx的配置参数
# 进入nginx容器
docker exec -ti mynginx /bin/bash
/etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
upstream test_nginx {
server 123.207.255.182:8081;
}
server {
listen 80;
server_name 123.207.255.182;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://test_nginx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
检查nginx的配置文件:/usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx的路径找不到,用whereis nginx搜索即可
- 通过nginx 访问tomcat
这样就可以通过80端口访问tomcat了
遇到的问题:
nginx容器不能使用vim命令:
1)进入容器后用命令apt-get update下源库
2)然后执行apt-get install vim命令
nginx 反向代理tomcat报400错误:
问题定位:
(1) nginx的/var/log/nginx/access.log,请求到nginx了
(2)查看 tomcat的日志信息
解决办法:
location中设置:proxy_set_header Host $http_host; 将头信息返回服务器
如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话
,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误,
nginx配置参考:
https://www.tuicool.com/articles/3q6zYbA