docker解决了问题:
- 运行环境发生变化导致项目无法正常的启动
- 内存资源隔离, 不会因为其他程序占用过多资源导致服务挂掉
- 减轻服务器压力和运维人员的压力
docker的基本概念:
- 镜像 Build 配置好待运行的文件
- 仓库 Ship 官方仓库比较慢, 我一般用网易的https://c.163.com/hub#/m/home/
- 容器 Run 运行下载下来的镜像
流程一般是: 如果本地没有镜像就从仓库pull下来, 然后run运行镜像成容器. 也可以自己打包生成新的镜像,例如tomcat镜像中放入一个war.
docker的安装(linux) : https://www.cnblogs.com/yufeng218/p/8370670.html
docker 下载并运行nginx:
$ docker images 查看当前有的镜像
$ docker pull hub.c.163.com/library/nginx:latest 拉镜像
$ docker ps 查看当前启动的镜像状态
$ docker run --help 帮助
$ docker run -d image 后台运行nginx
$ docker exec -it id 进入容器中查看 exit 退出
docker 网络(浏览器访问) :
- Bridge模式 容器中虚拟出一个docker0 拥有自己独立的端口
- Host模式, 与外界共用端口
- None, 没端口单机运行
$ docker stop Id 停止容器运行
$ docker run -d -p 主机端口:容器端口 image
$ docker run -d -P image 主机提供端口 ps 查看
$ nestat -na|grep 8080 检查端口是否启动
制作自己的镜像:
- 下一个tomcat镜像(自带jdk)
- 准备一个war
- vi Dockerfile
from 基础镜像名称(xx tomcat) MAINTAINER master email COPY XX.war /usr/local/tomcat/webapps
- docker build -t repository:tag .(当前目录)