docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序
一、在centos7.3上安装docker
前置条件
x86_64-bit 系统
kernel 3.10+ .检查内核版本,返回的值大于3.10即可
[root@node1 ~]# uname -r
3.10.-.el7.x86_64 .使用 sudo 或 root 权限的用户登入终端 .卸载旧版本(如果安装过旧版本的话)
# yum remove docker docker-common docker-selinux docker-engine .安装需要的软件包
# yum-util提供yum-config-manager功能#另外两个是devicemapper驱动依赖的 $ yum install -y yum-utils device-mapper-persistent-data lvm2 .设置yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo .安装docker
6.1. 安装最新版本
$ yum install -y docker-ce 6.2. 安装指定版本
#查询版本列表
$ yum list docker-ce --showduplicates | sort -r已加载插件:fastestmirror, langpacks已安装的软件包可安装的软件包
* updates: mirrors..comLoading mirror speeds from cached hostfile
* extras: mirrors..com
docker-ce.x86_64 17.09..ce-.el7.centos docker-ce-stable
docker-ce.x86_64 17.09..ce-.el7.centos docker-ce-stable...#指定版本安装(这里的例子是安装上面列表中的第二个)
$ yum install -y docker-ce-17.09..ce .启动docker服务 systemctl start docker.service
.验证安装是否成功(有client和service两部分表示docker安装启动都成功了) [root@node1 ~]# docker version
Client:
Version: 18.03.-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar ::
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm Server:
Engine:
Version: 18.03.-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar ::
OS/Arch: linux/amd64
Experimental: false 二、镜像的安装和简单操作.拉取并运行hello-world测试镜像
# 查看镜像
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
# 拉取hello-world镜像
[root@node1 ~]# docker pull hello-world
运行hello-world
# 运行hello-world镜像
[root@node1 ~]# docker run hello-world
三、容器的网络
.拉取并运行nginx镜像
# 拉取nignx镜像
# docker pull nginx 因为nginx需要在外部访问,而我们是无法直接访问容器里面的应用的,需要进行端口映射
# 后台启动nginx容器
[root@node1 ~]# docker run -d nginx
e07f4cbc4ea9d7e53944b729535a596a651d278531a3450d25ea733b2f60a9ac # 启动nginx容器,将容器的80端口映射到宿主机的8080端口上
[root@node1 ~]# docker run -d -p : nginx
b1194639fc58f2fb24adaa72140cd0e44ee88d133fc73d846b93c4ca57c8fb39
# 查看容器状态
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1194639fc58 nginx "nginx -g 'daemon of…" seconds ago Up second 0.0.0.0:->/tcp elastic_mayer
[root@node1 ~]# netstat -an|grep
tcp6 ::: :::* LISTEN 进入容器,原生nginx容器只支持少量的命令
[root@node1 ~]# docker exec -it b1194639fc58 bash
root@16f19cac5349:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@16f19cac5349:/# nginx status
nginx: invalid option: "status"
root@16f19cac5349:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx 访问宿主机的8080端口就可以访问容器里的nginx服务了
停用nginx,重新启动nginx
[root@node1 ~]# docker stop b1194639fc58
b1194639fc58
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
刚才我是将容器的端口指定到宿主机的特定端口,我们还可以将将容器的内部的端口映射到宿主机的随机端口,可以看到nginx的80映射到了宿主机的32768端口上
[root@node1 ~]# docker run -d -P nginx
16f19cac53494281f184799e94dbde41cfae672f68509363c26191e44aab8fa4
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16f19cac5349 nginx "nginx -g 'daemon of¡" seconds ago Up seconds 0.0.0.0:->/tcp competent_davinci
# 可以看到宿主机中监听了32768端口,访问宿主机的32768也可以正常访问nginx
[root@node1 ~]# netstat -an|grep
tcp6 ::: :::* LISTEN 四、制作自己的镜像,运行一个自己的java web程序
这里已一个java的开源博客系统jpress举例,jpress是一个类似wordpress的博客程序,区别是一个是php源码,一个是java源码
.下载jpress的war包
.下载tomcat容器作为基础镜像,并编写Dockefile文件
[root@node1 ~]# docker pull tomcat
在jpress.war所在目录建立Dockefile文件
[root@node1 ~]# cat Dockerfile
# 说明是以tomcat为基础模板
from tomcat
# 容器的版权信息
MAINTAINER jack jack@.com
# 拷贝war包发布到tomcat的www web程序发布目录
COPY jpress.war /usr/local/tomcat/webapps .创建一个叫做jpress:latest的镜像
[root@node1 ~]# docker build -t jpress:latest .启动容器将容器的8080端口映射到宿主机的8888
[root@node1 ~]# docker run -d -p : jpress
04252a52ecffab83d151a7d37aa24c0acd0b7bc75607b6cc8da2c017ee84ac4b
访问tomcat,可以看到能够正常访问jpress,http://192.168.3.177:8888/jpress/

.安装mysql镜像
因为jpress后台依赖mysql数据库,需要安装mysql
# docker pull mysql 运行mysql容器,3306映射到宿主3306,创建密码,数据库为jpress
[root@node1 ~]# docker run -d -p : -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=jpress mysql
7b2ea4ced739ef2e296513f67fcef5fea104a70a1b6badef56cd4fde99df6bc7
现在jpress依赖的mysql和tomcat安装启动完毕,需要继续安装jpress程序,注意数据库主机需要填写宿主机的ip,因为Localhost是找容器的localhost,jpress容器中没有mysql只有Jpress程序
.重新启动Jpress,再次访问网站就ok了
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b2ea4ced739 mysql "docker-entrypoint.s¡" minutes ago Up minutes 0.0.0.0:->/tcp vigilant_perlman
04252a52ecff jpress "catalina.sh run" minutes ago Up minutes 0.0.0.0:->/tcp lucid_tesla
16f19cac5349 nginx "nginx -g 'daemon of¡" About an hour ago Up About an hour 0.0.0.0:->/tcp competent_davinci
[root@node1 ~]# docker restart 04252a52ecff
至此,使用docker部署我们自己的一个Java web程序就告一段落
docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序的更多相关文章
- CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)
转载https://blog.csdn.net/wzsy_ll/article/details/82866627 1.为什么使用Docker(本人) 最近总是频繁的在新服务器发布项目, 每次发布都需要 ...
- linux下部署tomcat 上线jpress博客系统
tomcat Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器. tomcat有三个端口 开始部署 安装tomcat 第一步:下载tomcat 安装包 tomcat官网 ...
- 在Docker容器中运行.Net Core web Api项目
安装Docker环境 参考本人这篇<CentOS 7 下Docker的安装>文章进行安装以及环境配置,这里不做赘述. 通过.NetCore开发WebApi项目 1. 创建.Net Core ...
- docker的入门到放弃--docker基本命令
docker的镜像中国:https://www.docker-cn.com/registry-mirror 1.搜索镜像 [root@localhost ~]# docker search tomca ...
- docker快速入门02——在docker下开启mysql5.6 binlog日志
1.检查容器状态 [root@localhost ~]# docker ps 执行这个命令可以看到所有正在运行当中的容器,如果加上-a参数,就可以看到所有的容器包括停止的. 我们可以看到容器正在运行当 ...
- 于Heroku平台部署maven webapp(java web)工程
眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者pom.xml档,增加下面的配置为例, <project xmlns=& ...
- 论如何在服务器上部署一个自己的web前端项目
就在前两天,有新人通过邮箱问到笔者,如何部署自己的web前端项目?笔者在此详细介绍. 一.购买云服务器 配置用户名密码.安全组 二.下载Xshell于Xftp工具 用于登录服务器和文件上传 三.在li ...
- 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目
作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题.Source Dexter网站创办人. TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程 ...
- 利用Git搭建自动部署的Laravel环境 - 钟晨宇的博客 - CSDN博客
目标:服务器上搭建Laravel环境,本地使用IDE进行开发,使用Homestead做本地调试环境,代码提交后自动部署到服务器Root目录下. 下面是整个流程的示意图: 1. 准备工作,搭建LNMP ...
随机推荐
- 虚拟机 the image's hash and certificate are not allowed 解决方案
根据计划,需要在虚拟机上安装一个linux系统,用作web架构学习的服务器. 公司项目的服务器用的是linux系统,具体版本未知.虽然我们开发不用关注最后的部署,但多少也接触了一些,算是有一定的了解, ...
- HanLP二元核心词典解析
HanLP二元核心词典解析 本文分析:HanLP版本1.5.3中二元核心词典的存储与查找.当词典文件没有被缓存时,会从文本文件CoreNatureDictionary.ngram.txt中解析出来存储 ...
- 【python小练】图片爬虫之BeautifulSoup4
Python3用不了Scrapy! Python3用不了Scrapy! Python3用不了Scrapy! [重要的事情说三遍,据说大神们还在尝试把scrapy移植到python3,特么浪费我半个小时 ...
- PHP调用API接口实现天气查询功能
天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气 ...
- Linux 下磁盘挂载
Linux 磁盘挂载 新硬盘挂载: fdisk /dev/sdb p # 打印分区 d # 删除分区 n # 创建分区,(一块硬盘最多4个主分区,扩展占一个主分区位置.p主分区 e扩展) w # 保存 ...
- rem和em学习笔记及CSS预处理(未完待续)
以下为读http://www.w3cplus.com/css/when-to-use-em-vs-rem.html的感悟,收获满满! 1.当元素A的字体单位是n rem时,它将根据根元素(html)的 ...
- NPOI2.2.0.0实例详解(九)—设置EXCEL单元格【时间格式】
原文:http://blog.csdn.net/xxs77ch/article/details/50245391 using System; using System.Collections.Gene ...
- Shiro入门 - 通过ini文件进行认证
导入依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core ...
- Django学习手册 - ORM sqlit基础数据库操作
步骤阐述:( splitDB 是Django自带的一个数据库) 1.在APP01 中的 models.py 配置DB信息 userinfo 相当于数据表的表名,而 uname.pwd 相当于 表中的 ...
- css3基础一
1,css简介 CSS 用于控制网页的样式和布局.样式定义如何显示html元素,样式通常保存在外部的 .css 文件中.通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面 ...
.拉取并运行hello-world测试镜像

停用nginx,重新启动nginx
.下载tomcat容器作为基础镜像,并编写Dockefile文件
启动容器将容器的8080端口映射到宿主机的8888


