参考了这俩: https://www.jianshu.com/p/c136c7ec2572 https://www.cnblogs.com/areyouready/p/8973268.html
大概记一下:
安装docker(自动检测安装):wget -qO- https://get.docker.com/ | sh
搜镜像:docker search tomcat 下镜像:docker pull xxxx 列镜像:docker images 删镜像:docker rmi xxxx 看镜像历史(创建镜像时干了啥):docker history xxx 或者docker history --no-trunc xxx
看运行的容器:docker ps 看所有容器:docker ps -a 删容器:docker rm xxx 启动容器:docker start xxx 停止容器:docker stop xxx 复制文件:docker cp xxx路径 容器ID:/要复制过去的目录路径
(1)tomcat直接弄个tomcat+jdk的镜像就能跑。
war包放哪呢? <1>用目录映射,把主机的某个目录映射到tomcat的webapps目录,然后war包放外面就行了。 升级时,war包一扔,重启tomcat的容器即可。
<2>自己搞DockerFile,build时复制到容器里,或者从某个网址wget下来再复制进去。升级得重新build出一个容器吧。
另外,webapp需要调用的配置文件啥的都可以映射到主机的真实目录。 ----------------------------- 我最后用了这个命令: docker run --name docker_tomcat -d -p 8080:8080 -v /opt/docker/tomcat:/data/xxxx/properties -v /opt/docker/tomcat:/usr/local/tomcat/webapps zhaiweiwei/tomcat7-jdk7
其中,zhaiweiwei/tomcat7-jdk7是别人的镜像,我拿来直接用的,哈哈。
(2)nginx,也超简单,直接docker pull nginx就行了。
也是配置文件放外边,映射了一堆目录
nginx的upstream里用了 server tomcat01:8080 weight=1 ;
然后命令: docker run --name docker_nginx --link=docker_tomcat:tomcat01 -d -p 80:80 -v /opt/docker/nginx/log:/var/log/nginx -v /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d -v /data/logs/nginxlog:/data/logs/nginxlog nginx:latest
其中--link=docker_tomcat:tomcat01,表示tomcat01就是上面启动的docker_tomcat那个tomat。
这样,nginx和tomcat就关联上了,否则你直接写127.0.0.1是不能访问tomcat的。 因为nginx是单独一个容器,它容器里没有tomcat。 或者写主机的内网ip应该也行,不过这样就不通用了,换个机器就得改ip。
修改配置文件,只需要docker exec -it 容器名 bash进入到容器, 然后nginx -s reload ==================================================
新机器的话: 写个批处理脚本,下载配置文件,下载war包, 然后执行docker指令,自动下载镜像,启动容器? 好像docker compose可以编排docker容器,比如把nginx和tomcat编排在一起, 自动下载镜像,启动容器。 再研究~~
还有一种方式,就是自己做镜像,把配置文件和war包都扔到镜像里。 版本升级时,实际就是升级镜像。 然后每台机器直接升级镜像,重建容器,启动即可?
现在还是有些晕乎,对于单机来说,折腾命令跟以前复制粘贴脚本部署差不多。 还体会不到为啥要用docker。
特别是有些机器可能配置略微不同,手工处理比较灵活。 docker难道适合几百台配置都一样的场景?
不过docker镜像确实可以封装很多步的操作。比如安装tomcat,安装jdk,安装日志分割等等,直接弄好做个镜像,后面确实省事很多。
|