Docker容器服务_部署应用(三)

docker+jenkins+阿里云容器服务自动化部署 一、在服务器上安装docker 请参考我的这篇文章:ubuntu16.04中下载安装docker 二、在阿里云容器服务构建镜像 1、进入阿里云容器镜像服务 地址:容器镜像服务 根据文档先创建一个命令空间,然后就可以创建一个你项目的镜像仓库了 根据提示创建完镜像仓库,然后进入构建,并添加规则 这里的Dockerfile是你的项目根目录下的Dockerfile,文件名一定要相同。镜像版本根据自己... 阅读详情

一、部署一个Tomcat容器并进行访问

【-运行一个 web 应用-】

前面我们运行的容器并没有一些什么特别的用处。

接下来让我们尝试使用 docker 构建一个 web 应用程序。

我们将在docker容器中运行一个 tomcat 应用来运行一个web应用。

看 Docker 支持哪些版本的 Tomcat

[root@bigdata ~]# docker search tomcat

在 Docker 里安装 Tomcat

获取tomcat镜像

[root@bigdata ~]# docker pull tomcat

查看镜像

[root@bigdata ~]# docker images

基于镜像新建一个 Tomcat 容器并启动

注意,命令后面的 6408fdc94212是前面拉取的 Tomcat 镜像ID!实践证明,如果用镜像名而不用镜像ID,那么就会自动拉取最新版的镜像使用,而不是刚才手动拉取的 8.5.35 版本的镜像。

[root@bigdata ~]# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -d -p 8080:8080 6408fdc94212

其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。

-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。

注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉。

如果想把 Tomcat 的 webapps 目录也挂载到宿主机目录(比如挂载到 /data/webapps),那么就是下面这样,需要再写个 -v 选项:

# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -v /data/webapps:/usr/local/tomcat/webapps:rw -d -p 8080:8080 6759d91a032b

这时查看宿主机目录(/data/webapps)是空的,进入容器查看 webapps 目录也是空的,放一个 WAR 包应用到宿主机目录(/data/webapps)下,一会 WAR 包解压生成一个同名的文件夹,说明挂载 webapps 目录成功。

查看容器

[root@bigdata ~]# docker ps

查看宿主机时间

[root@bigdata ~]# date

进入容器查看时间

[root@bigdata ~]# docker  exec -it  tomcat8080   /bin/bash

root@65f385f73a21:/usr/local/tomcat# date

Sun Nov 24 09:29:18 CST 2019

但是 Tomcat 使用的时区还需要单独设置一下,否则部署在 Tomcat 里的工程取到的时间可能不是 Docker 容器的时间。设置很简单,只需在 bin 目录下的 catalina.sh 文件里加上时区即可,如下。

进入容器:

# docker  exec -it  tomcat8080   /bin/bash

进入 bin 目录:

root@054f35167ec5:/usr/local/tomcat# cd bin/

root@054f35167ec5:/usr/local/tomcat/bin# ls

catalina.sh      ......

先备份一下文件 catalina.sh 文件。

因为在容器内不能修改文件,那就把容器文件拷贝到宿主机修改,修改后再拷贝到容器覆盖原文件。

退出容器,把 Tomcat 容器 bin 目录下的 catalina.sh 拷贝到宿主机:

# docker cp tomcat8080:/usr/local/tomcat/bin/catalina.sh ./

在宿主机里编辑 catalina.sh 文件:

打开文件,找到 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS",在双引号后面加上 “-Duser.timezone=Asia/Shanghai”(当然要与前面内容用空格隔开),修改后是这样的 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/Shanghai" 。

保存文件,然后再拷贝到容器内:
# docker cp ./catalina.sh tomcat8080:/usr/local/tomcat/bin/
这样就覆盖了容器的原文件,然后重启 Tomcat 或重启容器。

[root@bigdata ~]# docker restart 65f385f73a21

查看运行的 Tomcat 容器

不加 -a 参数只能查看到运行中的容器,加上 -a 参数可以查看所有的容器。举例,如果上面的 Tomcat 容器是退出(Exited)状态,那么就需要加 -a 参数才能看到,如下:

部署Web应用(WAR工程)

1.获取容器的长ID(tomcat8080 是容器名):
# docker inspect -f '{{.Id}}' tomcat8080

65f385f73a210853e4c46c9eba316721e69b89866748146c615ccd575cbd8f54

2.进入容器

进入容器(65f是容器ID的前三位数,当然也可以多写几位,只要 Docker 能唯一识别容器即可):

# docker  exec -it  65f   /bin/bash

执行后直接进入容器,命令提示符由系统的转为容器的了,root@ 后面的“65f385f73a21”是容器ID(短ID),冒号后面的“/usr/local/tomcat”是容器目录,这个目录是 Docker 内的目录不是系统目录。如下:

删除 Tomcat 的 webapps 目录下的所有内容:

退出容器用 exit 命令

开始部署Web应用,很简单就是拷贝WAR包文件到容器中

将要部署的WAR包拷贝到 Tomcat 容器的 webapps 目录下(命令格式是“docker cp 本地文件 容器ID:容器路径”,其中容器ID可以只写长ID的前面几位):

[root@bigdata ~]# docker cp index.html 65f:/usr/local/tomcat/webapps/

进入容器查看拷贝的index.html文件

[root@bigdata ~]# docker cp index.html 65f:/usr/local/tomcat/webapps/

用浏览器访问部署的Web应用

二、部署一个Centos容器并进行远程访问

【-docker开启远程访问-】

建立本机对应centos镜像端口映射

[root@bigdata ~]# docker run -it -d -p 192.168.109.128:5022:22 docker.io/centos:latest /bin/bash

ssh默认的端口为22,将docker中centos的22端口映射到宿主机的5022端口

-d,后台启动

启动并登陆下载好的docker镜像

[root@bigdata ~]# docker exec -it 5f19694acfc9 /bin/bash

安装常用工具

[root@5f19694acfc9 /]# yum install -y openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip net-tools

service安装

[root@5f19694acfc9 /]# yum install initscripts

ifconfig安装

[root@5f19694acfc9 /]# yum install net-tools.x86_64

ssh安装

开启docker-centos ssh远程连接

需要在安全组打开 5022端口对外访问权限

1. 修改sshd_config 为密码登录

    vim /etc/ssh/sshd_config

    #打开注释 PermitRootLogin yes, 允许密码登录,保存退出

2. 设置root用户密码

passwd root

3. 换个服务器远程登录

    ssh root@宿主机ip -p 5022

Intellij IDEA 部署应用到容器服务 Kubernetes 前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云容器服务 Kubernetes 了,那该如何配合这个插件部署应用呢?在本文中,我们来介绍 部署应用程序到阿里云容器服务 Kubernetes 。 关于容器服务 Kubernetes 容器服务 Kubernetes 版提供高性能可伸缩的容器应用管理能力,支持... 阅读详情

相关推荐

如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes

前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云容器服务 Kubernetes 了,那该如何配合这个插件部署应用呢?在本文中,我们来介绍 部署应用程序到阿里云容器服务 Kubernetes 。 关于容器服务 Kubernetes 容器服务 Kubernetes 版提供高性能可伸缩的容器应用管理能...

xstardust的博客 1942

mac安装/data/webapps/appenv

只是纯纯的个人学习笔记

weixin_57736124的博客 1293

Docker——consul容器服务更新与发现

文章目录什么是consul?软件包:一、构建自动发现的Docker服务架构1、建立Consul服务2、容器服务自动加入consul集群3、测试服务发现功能二、部署consul-template更新,实现容器服务自动加入Nginx集群1、安装consul-template2、编译安装nginx3、配置并启动template4、增加nginx容器节点 [外链图片转存失败,源站可能有防盗链机制,建议将图...

ML908的博客 881

【Docker】从零开始将自己的应用打包到docker镜像

【Docker】从零开始将自己的应用打包到docker镜像

风雨雷电的专栏 2732

Docker实战(部署JAVA Web项目含数据库+Dockerfile发布tomcat镜像+发布到DockerHub/阿里云容器服务)

目录部署JAVA Web项目部署tomcat部署MySQL发布项目Dockerfile发布tomcat镜像 主要对各种docker 命令的综合使用,在阿里云服务器上实现 部署JAVA Web项目 部署tomcat 操作命令 1.docker pull tomcat //下载tomcat镜像 2.docker images //查看存在的镜像 3.docker run -d -p 端口名:8080 --name 容器名 tomcat //后台启动tomcat 并使端口暴露给8080

Eros1on的博客 1434

使用Docker与EC2容器服务部署应用

本文详细介绍了如何使用Docker结合Amazon EC2容器服务(ECS)部署应用程序。从启动实例、监控启动状态、到查看服务和配置负载均衡器地址,再到最终通过AWS Route 53将域名指向ELB,文章展示了整个部署过程的各个关键步骤,并在每个环节提供了操作细节和遇到问题时的解决建议。

weixin_35755188的博客 221

MacOS上创建/data/webapps/appenv的方法

项目的需要,需要在/data/webapps/appenv下写入配置文件,这里给出在根目录下创建/data的方法。

yangf257的博客 5086

在Docker容器中不需要运行sshd的原因浅析

在一个容器中运行SSH服务器,这真的是一个错误(大写字母W)吗?老实说,没那么严重。当你不去访问Docker主机的时候,这样做甚至是极其方便的,但是这仍然需要在容器中取得一个shell

Docker容器安装ssh

Docker 容器里安装ssh和连接ssh

weixin_38620434的博客 3247

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4889

ClearML中文文档实战:从安装到第一个实验的保姆级教程

本文提供ClearML从零开始的实战指南,涵盖核心组件理解、Python SDK安装、服务器配置及首个自动化实验的完整流程。通过改造PyTorch训练脚本的实例,详细演示了如何利用ClearML自动记录实验参数、指标与模型,实现机器学习实验的可复现性与高效管理,并简要介绍了进阶的自动化工作流。

weixin_29216049的博客 398

基于dockerfile构建sshd、httpd、nginx、tomcat、mysql、lnmp、redis镜像

基于dockerfile构建sshd、httpd、nginx、tomcat、mysql、lnmp、redis镜像

youcan_doit的博客 2363

PDDL入门

PDDL的组成部分 Objects:对象,世界上我们感兴趣的事物。 Predicates:谓词,我们感兴趣的事实(例如对象的属性),可以为真,也可以为假。 An initial state:初始化状态,我们开始所处的世界状态,即开始时为真的事物。 Goal specification:目标状态,我们想要结束的世界的状态,即我们希望最终成为真实的事情。 Actions/Operators:动作/操作,改变世界状态的方式,即发生的事情改变了事实。 PDDL语法 PDDL 文件的扩展名通常是.pddl 要

工控小白2021的博客 4821

如何在10分钟内搭建游戏服务器网站?Azuriom快速部署教程

Azuriom是一款专为游戏服务器打造的完整开源Web解决方案,支持Minecraft、Rust、FiveM等多种热门游戏,已被超过1800台服务器采用,服务用户超200万。本文将为你展示如何通过Docker技术快速部署这套强大的游戏服务器网站系统。 [![Azuriom游戏服务器网站解决方案](https://raw.gitcode.com/gh_mirrors/az/Azuriom/raw/

gitblog_00335的博客 814

LAMMPS实战:如何用ReaxFF力场模拟碳氢化合物热解(附完整脚本)

本文提供了一份使用LAMMPS软件中ReaxFF反应力场模拟碳氢化合物热解过程的完整实战指南。内容涵盖从环境准备、力场参数选择、能量最小化,到升温恒温动力学模拟的完整脚本编写,并介绍了基于轨迹文件的产物分析方法,帮助计算化学与材料科学研究者快速上手这一关键的分子动力学仿真技术。

soda5的博客 1098

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,**将MAC集成进CPU而将PHY留在片外,这种...

sternlycore的博客 13万+

Textual Suggester 完整指南:为 Input 输入框打造智能补全

`textual.suggester` 是 Textual 框架内置的**输入补全(auto-completion)机制**:当用户在 `Input` 输入框中敲击字符时,Suggester 异步计算候选补全、以灰显样式附在已输入文本之后,并按右键一键接受。本文将围绕 [docs/api/suggester.md](https://link.gitcode.com/i/9255a9f572da6f

gitblog_00931的博客 483

基于爬虫+词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析

本项目是基于携程网中关于大唐不夜城评论的文本分析,项目中用到了Python爬虫、词频分析、词云图分析、kmeans聚类、LDA主题分析、情感分析、社会网络语义分析等。本次实验我们使用了爬虫、词云图、情感分析、LDA主题分析、TF-IDF+Kmeans、社会网络语义分析等对大唐不夜城的评论进行了分析。关于博文中的源码大家可以关注派森小木屋公众号进入粉丝群领取,如对文章有疑惑,请评论区留言。

m0_64336780的博客 1万+

实战基于Docker部署NGINX应用网站

文件一样是nginx的配置文件,我们可以在这两个文件中书写一些你所需的配置,像啥负载均衡啊,代理,重写跳转页面啥的都是在这配置。功能和其他一些所需的操作功能,而且就算有我们每次需要进去配置也是比较的不方便,所以我们需要进行数据卷操作,使我们能够更加简单的方便的来操作docker里的服务。这个地址在后面就会使用到,当然我们这个不仅仅是华为云有,像阿里云, 腾讯云这些也是有的。为什么我要提这一嘴呢,因为我们需要对这两个文件进行配置操作,满足我们后续的需求,而在docker中呢下载的。这里我就以华为云为例。...

Aasee的博客 3990

23 中望CAD二次开发(ZRX C++)-自定义实体(二)

本文详细介绍了自定义图形实体,如何实现几何变换、捕捉、节点编辑,并介绍了CAD代理的概念。

cilvsuanna的博客 437

【原理图PCB专题】Cadence 17.4版本原理图及PCB 模块复用

在我们设计复杂板卡的时候,往往会遇到一部分电路被反复使用的情况。Cadence允许设计者一开始就将复用模块设计好,以后只要直接调用复用模块就可以直接用以设计更复杂的电路板了。这对于大规模集成设计无疑是非常好的选择,它不仅让设计者不必花费时间在相同模块反复设计上,更有利于电路的模块化设计。

一点硬件 2016

如何更高效的通过 Intellij IDEA 将应用部署到容器服务 Kubernetes

前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云容器服务 Kubernetes 了,那该如何配合这个插件部署应用呢?在本文中,我们来介绍 部署应用程序到阿里云容器服务 Kubernetes 。 关于容器服务 Kubernetes 容器服务 Kubernetes 版提供高性能可伸缩的容器应用管理能力,支持...

阿里巴巴中间件 643

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Docker 容器服务的注册、发现及Docker安全

consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server 和 client。

x74188的博客 1936

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【docker集群应用】Docker + consul的容器服务更新与发现

Consul-Template 是一个基于 Consul 的应用,用于自动替换配置文件。它是一个守护进程,能够实时查询 Consul 集群信息,并更新指定模板,生成配置文件。更新完成后,可以选择运行 shell 命令执行更新操作,如重新加载 Nginx。Consul-Template 可以查询 Consul 中的服务目录、Key、Key-values 等,适合动态创建配置文件,如 Apache/Nginx Proxy Balancers、Haproxy Backends 等。

Karoku的博客 891

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

如何用 Docker 轻松部署你的 Web 应用——从零到云端的完整指南

本文是一篇面向初学者的Docker技术指南,通过生动比喻和实操演示,介绍如何使用Docker部署Web应用。文章首先解释Docker的核心概念(镜像与容器),然后详细展示从编写Dockerfile到构建镜像、运行容器的完整流程,并提供了阿里云部署的实践示例。文中强调高质量技术文档应具备准确性、易读性和实用性三大要素,最后附有术语对照表和Dockerfile指令速查表,帮助读者快速掌握容器化技术,解决"环境不一致"的部署难题。

2401_85390585的博客 609
上一篇: Docker相关操作(二)
下一篇: Hadoop_之_HDFS常用命令(一)
MR.ILen
博客等级 码龄10年 6粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值