Docker是什么?
Docker可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口
解决了什么问题?
操作系统、jdk版本、tomcat版本等运行环境不一致的都会导致项目跑不起来 传在其它地方部署机会很麻烦 使用docker制作镜像可以快速部署 命令部署方便 标准化api
一个服务器上 :docker隔离性有自己的内存限定 互不影响
Ubuntu下载docker
apt-get install -y docker.io
查看version
docker version
启动服务
service docker start
启动后 再次查看version
Docker镜像(Image):可理解为一个面向Docker引擎的只读模板,包含了文件系统。如:一个镜像可以只包含一个完整的操作系统环境,也可以安装了其他的应用程序。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像
Docker容器
通俗的说:镜像运行就变成容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的内存空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
Docker仓库
就好像maven仓库一样提供用户可以自己pull现有的镜像
拉取第一个docker镜像 默认到docker提供的仓库上拉取
docker pull hello-world
查看镜像列表
docker images
第一个docker 容器
docker run hello-world
docker运行Nginx
从网易蜂窝拉取镜像
docker pull hub.c.163.com/library/nginx:latest
运行
docker run hub.c.163.com/library/nginx
查看正在运行的容器
docker ps
运行并返回容器id
docker run -d hub.c.163.com/library/nginx
查看容器内部
docker exec -it 容器id bash
容器内就是一个linux文件格式
ps -ef
查看容器内部进程 nginx在运行
exit
退出容器内部
停止运行容器
docker stop 容器id
启动容器并端口映射
docker run -d -p 8080:80 hub.c.163.com/library/nginx
把主机8080端口映射到容器内部80端口
检查localhost:8080可访问到内部 nginx
制作自己的镜像 第一个javaweb项目
在本目录下新建一个Dockerfile 文本
引用现有tomcat镜像(以包含jdk)
把war拷贝到tomcat内部
制作镜像
docker build -t 镜像名字:latest .
制作完成
运行
docker run -d -p 8081:8080 镜像名字