Java Develop——使用 Docker 将 Web 应用容器化
来源:互联网 发布:日本人彻底疯了 知乎 编辑:程序博客网 时间:2024/05/18 01:44
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/77512260
Docker 是一个轻量级容器技术,支持将软件编译成一个镜像 (image),在这个镜像里做好对软件的各种配置,然后发布这个镜像,使用者可以使用这个镜像,运行中的镜像称为容器,容器的启动速度是非常快的 (秒级别)。容器是完全使用沙箱机制,相互之间不会有任何接口。目前主流的软件以及非主流的软件大部分都有人将其封装成 Docker 镜像,我们只需要下载 Docker 镜像,然后运行镜像就可以快速获得已做好配置可运行的软件。Docker 是可用于生产环境的一种极好的部署方式。
Docker 提供了一种在安全、可重复的环境中自动部署软件的方式,快速的持续集成,服务的弹性伸缩,部署简单,解放运维,更为企业节省了机器资源。在 2016 年的京东 618,已经有 15 万个 Docker 实例,所有业务全部容器化。
Docker 核心技术:Build(构建)、Ship(运输)、Run(运行)
Docker 镜像
Docker 容器:本质就是一个进程。
Docker 仓库:https://hub.docker.com/、https://c.163.com/
还需要知道,Docker 网络类型有 Bridge、 Host、None 三种:
Bridge:桥接,做端口映射。端口映射:Docker可以指定容器内的某一个端口和容器所在主机上的某一个端口,两者之间做一个映射。当你访问主机上端口的时候,其实就是访问容器里面的那个端口。Host:启动容器时指定使用 Host,那么容器将不会获得独立的 Network Namespace,而是和主机使用一个,这个时候容器将不会虚拟出自己的网卡、配置自己的 ip 等等,而是会使用宿主机上的 ip 和端口。None:没有网络,这种情况 Docker 将不会和外界进行通信。
这里 Linux 选用 CentOS7.2。
1.Linux 安装 Docker
$ ssh root@192.168.2.20 //SSH连接,使用 sudo 或 root 权限的用户登入终端# uname -r //检查内核版本,需要64-bit,内核版本3.10+# yum update //更新yum,确保yum是最新的//添加 yum 仓库(下面命名全部复制执行)# tee /etc/yum.repos.d/docker.repo <<-'EOF'[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/enabled=1gpgcheck=1gpgkey=https://yum.dockerproject.org/gpgEOF# yum install -y docker-engine //安装# systemctl start docker.service //启动,centos6 启动要使用 service docker start 命令# docker version //验证安装是否成功,有client和service两部分表示docker安装启动都成功了。
安装启动都成功会显示:
Client: Version: 17.05.0-ce API version: 1.29 Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64Server: Version: 17.05.0-ce API version: 1.29 (minimum version 1.12) Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64 Experimental: false
配置docker开机自启动:
# systemctl enable docker.service //配置docker开机自启动
安装过程中可能会报错误:
https://yum.dockerproject.org/repo/main/centos/6/6Server/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 403 Forbidden"
解决方法:
/etc/yum.repos.d/docker.repo 中 baseurl 变量不正确,先找到自己系统的版本(目前只有6和7两种选择),然后把变量的地方替换成6或7即可。
2.Linux 卸载 Docker
# yum list installed | grep docker //列出安装的软件包# yum -y remove docker-engine.x86_64 //移除列出的软件包# yum -y remove docker-engine-selinux.noarch# rm -rf /var/lib/docker //删除所有镜像、容器和组
3.Docker 运行 Nginx
Docker命令执行过程:
# docker pull nginx //默认从Docker远程仓库hub.docker.com拉取镜像 docker pull [OPTIONS] NAME [:TAG]# docker images //查看本机都有哪些镜像 docker images [OPTIONS] NAME[:TAG]# docker ps //查看运行中的镜像# docker run -d -p 8080:80 nginx //Docker 后台运行镜像,返回容器id。端口映射 主机端口:容器端口。
返回容器id为:
888882c841add37f63d276977fdef427e95aca4d05d5607aa64a471abc4d9e18
此时访问主机的 8080,已经发现可以返回nginx欢迎界面了。
另外,还有一些常用 Docker 命令如下:
# docker stop 88 //停止Docker容器# docker restart 88 //重启Docker容器# netstat -na|grep 8080 //检查端口是否开放,LISTEN状态则成功
进入 Docker 容器内部:
# docker exec --help //查看docker exec命令的帮助。docker exec [OPTIONS] CONTAINER COMMAND [ARG...]# docker exec -it ebbd6c bash //进入容器内部,ebbd6c是容器id的前几位(写的位数无所谓)root@ebbd6c160860:/# which nginx //查看Nginx目录位置
4.制作自己的Docker 镜像并运行
准备工作:
# docker pull nginx# docker pull tomcat# vim Dockerfile
编写代码如下:
from tomcatMAINTAINER name name@example.comCOPY myproject.war /usr/local/tomcat/webapps
解释如下:
from tomcat 表示以 tomcat 的镜像为起点MAINTAINER 配置该镜像所有者姓名、联系方式复制项目 war 到 tomcat webapps 目录下,目录地址可在下载 tomcat 镜像的说明页查看 https://hub.docker.com/_/tomcat/
然后执行:
# docker build -t myproject:latest . //构建Docker,-t指定'name:tag'
制作成功,此时就可以运行该 Docker 了,运行方法参照 3.Docker 运行 Nginx 部分。到此使用 Docker 容器化 Web 应用全部结束了。
- Java Develop——使用 Docker 将 Web 应用容器化
- Docker实用指南:将Python Web应用容器化
- Docker 实战——将 JavaWeb 应用容器化
- 初识docker—创建WEB应用容器1python+flask
- Docker学习记录(2)——JAVA应用容器化(JAVA博客应用Solo)
- 用Docker容器代替虚拟化操作系统运行Java Web应用
- Docker使用之Java web应用部署
- docker java web应用
- 减少使用Java应用服务器,迎接Docker容器
- Docker实践 - 使用maven插件自动部署web应用至Docker容器的tomcat
- Docker实践-使用maven插件自动部署web应用至Docker容器的tomcat
- 在Docker容器中部署Web应用
- Docker 构建Java Web应用
- Zend Studio使用教程之在Docker容器中调试PHP Web应用(一)
- Zend Studio使用教程之在Docker容器中调试PHP Web应用(二)
- Zend Studio使用教程之在Docker容器中调试PHP Web应用(三)
- Zend Studio使用教程之在Docker容器中调试PHP Web应用(三)
- Zend Studio使用教程:在Docker容器中调试PHP Web应用(五)
- 《剑指offer》笔记-第5章(4)
- 洛谷 扫雷游戏
- linux can
- 2.费氏数列
- I2C串行总线及串行EEPROM的扩展
- Java Develop——使用 Docker 将 Web 应用容器化
- Hdu 3804 Query on a tree 树链剖分+线段树
- 字符串拼接问题和data数据的长度
- 合法括号子段 51Nod
- 清理花瓶(NKOI 2460)
- 使用Scrapy爬取百万知乎用户信息
- hdu 1203
- Party at Hali-Bula UVA
- 【CUGBACM15级BC第24场 A】hdu 5150 Sum Sum Sum