Docker实战之二

一、前言

前一篇 Docker实战之一 我们介绍了Dokcer 镜像和容器基本概念,这一节我们来具体制作一个镜像文件并进行快速部署,这个镜像文件是我们的测试环境,主要包含JDK1.8、Nginx、Git、Node、Gradle,基础镜像为CentOS,另外安装一些常用的工具,两个Java项目、两个前端项目,镜像生成后,如果要部署一台新的机器,直接启动该镜像进入容器执行四个发布脚本即可,Redis和MySQL、S3等存储相关的是直接连远程机器。采用该方案部署一台新机器最多10分钟就可以部署好,没有用Docker之前新买一台机器安装各种软件部署应用要折腾小半天。

二、制作镜像文件基础环境配置

机器IP:120.26.69.172  OS:Ubuntu 16.04 64位

1、更新软件源软件列表      apt-get update

2、安装Docker                    apt-get install docker.io

3、拉取CentOS Base镜像  docker pull centos

4、查看CentOS Base镜像   docker images

5、运行CentOS镜像并进入容器

docker run -it 5d0da3dc9764 bash

6、在宿主机查看容器  docker ps

可以查看容器ID和运行时间等,容器ID和镜像ID是两回事。

三、在容器内安装常用工具

1、yum install wget 用于下载文件

2、yum install lrzsz 用于上传文件

3、yum install vim  用于编辑配置文件

4、yum install net-tools 用于查看端口

5、yum install zip 用于解压文件

5、将安装了常用的工具的容器保存为镜像

docker commit -m 'tools' 835d3fcbc3d2 cw/tools:v1.0

835d3fcbc3d2:是容器的ID

6、查看生成新的镜像文件

7、退出容器,并用新的镜像启动容器

exit

docker run -it 0de282b05a01 bash

注:在新的容器中 wget、vim、netstat、rz这些刚才安装的工具都可以使用,如果安装后没有做commit生成新的镜像,你退出容器再重新用基础镜像进入容器,这些工具都没有了。

四、在容器内安装JDK1.8并配置环境变量

因为Oracle官网JDK需要登录用户才能下载,所以我先下载到本地,然后在容器内执行rz将zxvf jdk-8u151-linux-x64.tar.gz上传到容器内。

1、解压  tar -zxvf jdk-8u151-linux-x64.tar.gz

2、配置JDK环境变量  vim  ~/.bashrc 

注:这里修改/etc/profile或.bash_profile下次进入容器时环境变量无效,原因未确认。

source ~/.bashrc 、java -version

3、将容器的变更保存为镜像

docker commit -m 'jdk' 71aa4be3f85a cw/jdk:v1.1

4、用新的镜像重新运行容器

docker run -it 3678c6188d77 bash

五、在容器内安装配置Nginx

1、安装Nginx  yum install nginx

2、创建Web工程目录 mkdir posweb、mkdir posadm

3、配置Nginx  vim /etc/nginx/nginx.conf

4、设置Nginx自动启动  systemctl enable nginx.service

5、启动Nginx  systemctl start nginx

报错信息如下:

6、使用Systemctl启动报错,在启动容器时需要加参数

先保存容器内容生成新的镜像

docker commit -m 'nginx' 071c76fec205 cw/nginx:v1.2

重新启动容器

docker run -itd --privileged=true -p 8083:8083 -p 8084:8084  548d1b35a402 /sbin/init

两个Web应用端口8083、8084 宿主机与容器内部端口号映射,提供给外部访问。

进入容器  docker exec -it 45fe761e3724 /bin/bash

systemctl start nginx 就可以正常启动Nginx

六、在容器内安装打包编译环境

1、安装Git  yum install git

2、安装Node   yum install nodejs

3、安装Gradle  wget https://downloads.gradle.org/distributions/gradle-5.1-all.zip

unzip gradle-5.1-all.zip

vim ~/.bashrc

4、保存为新的镜像文件

docker commit -m 'compile' 45fe761e3724 cw/compile:v1.3

七、在容器内安装发布脚本

1、应用发布脚本

cd /publish_script

deploy_dev_pos_web.sh

deploy_dev_pos.sh (略)

deploy_dev_store_task.sh (略)

deploy_dev_pos_adm.sh (略)

2、保存为新的镜像文件

docker commit -m 'app' 45fe761e3724 cw/app:v1.4

八、将最新的镜像文件推到Docker仓库

1、登录docker官方仓库  docker login

2、给镜像打个新标签

docker tag 1136bb28e827 qingcai18036/cw:v2.0

3、推送到远程私有仓库

docker push qingcai18036/cw:v2.0

注:生成的镜像有2.7G,推到Docker官方仓库用了十几分钟,下载还算比较快,可以使用阿里云的镜像仓库。

九、使用镜像文件部署应用

1、安装Docker apt-get install docker.io

2、登录docker官方仓库  docker login

3、拉取镜像  docker pull qingcai18036/cw:v2.0

4、运行镜像

docker run -itd --privileged=true -p 8083:8083 -p 8084:8084  1136bb28e827 /sbin/init

5、进入容器

docker exec -it 117d69d8d6b5 /bin/bash

6、执行发布脚本

./deploy_dev_pos.sh

./deploy_dev_pos_web.sh

./deploy_dev_store_task.sh

./deploy_dev_pos_adm.sh

十、Docker基本命令

注:下次再讲一下使用DockerFile制作镜像文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java练习题2020-3

统计从1到N的整数中,所有立方值的平方根为整数的数的个数 输入说明&#xff1a;整数 N(N<10000)&#xff1b; 输出说明&#xff1a;符合条件的数的个数&#xff0c;如4^3648^2 输入样例&#xff1a;10 输出样例&#xff1a;3 (说明&#xff1a;样例中符合条件的3个数是1、4、…

用低代码平台代替Excel搭建进销存管理系统

目录 一、用低代码平台搭建系统 1.需求调研 2.基于痛点梳理业务流程 3.低代码实现 &#xff08;1&#xff09;基础资料模块 &#xff08;2&#xff09;采购管理模块 &#xff08;3&#xff09;销售管理模块 &#xff08;4&#xff09;库存管理模块 &#xff08;5&…

【点云】有序/无序点云区别(详细详解)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Windows server部署filebeat到kafka

需求&#xff1a;Windows dhcp日志需要实时传输到elk或者其他告警平台。 1、filebeat下载地址&#xff1a;https://www.elastic.co/cn/downloads/beats/filebeat 2、下载后解压后配置filebeat.yml文件&#xff0c; 3、README.md文件中有运行的操作方法&#xff1a;cmd上进入f…

为什么网上的流量卡都有禁发地区呢?流量卡管控地区整理!

在网上购买过流量卡的朋友应该都知道&#xff0c;但凡是运营商推出的大流量优惠套餐&#xff0c;在套餐详情中都是有禁发地区&#xff0c;只不过每张卡的禁发地区不同而已。 设置禁发地区的主要目的还是为了防止一些电信诈骗案件的发生&#xff0c;或者违法违规利用电话卡的情…

C语言数据结构之数据结构入门

目录 数据结构介绍 数据结构发展史 何为算法 数据结构基础 基本概念和术语 四大逻辑结构&#xff08;Logic Structure&#xff09; 数据类型 理解复杂度概念 时间空间复杂度定义 度量时间复杂度的方法 程序运行时的内存与地址 编程预备 数据结构介绍 数据结构发展…

python:多波段遥感影像分离成单波段影像

作者:CSDN @ _养乐多_ 在遥感图像处理中,我们经常需要将多波段遥感影像拆分成多个单波段图像,以便进行各种分析和后续处理。本篇博客将介绍一个用Python编写的程序,该程序可以读取多波段遥感影像,将其拆分为单波段图像,并保存为单独的文件。本程序使用GDAL库来处理遥感影…

LMFLOSS:专治解决不平衡医学图像分类的新型混合损失函数 (附代码)

论文地址&#xff1a;https://arxiv.org/pdf/2212.12741.pdf 代码地址&#xff1a;https://github.com/SanaNazari/LMFLoss 1.是什么&#xff1f; LMFLOSS是一种用于不平衡医学图像分类的混合损失函数。它是由Focal Loss和LDAM Loss的线性组合构成的&#xff0c;旨在更好地处…

SpringSecurity 认证实战

一. 项目数据准备 1.1 添加依赖 <dependencies><!--spring security--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--web起步依赖-…

语雀故障事件——P0级别事故启示录 发生肾么事了? 怎么回事?

前言 最近&#xff0c;阿里系的语雀出了一个大瓜&#xff0c;知名在线文档编辑与协同工具语雀发生故障&#xff0c;崩溃近10小时。。。。最后&#xff0c;官方发布了一则公告&#xff0c;我们一起来看看这篇公告&#xff0c;能不能有所启发。 目录 前言引出一、语雀P0故障回顾…

重复控制器的性能优化

前言 重复控制器在控制系统中是比较优秀的控制器&#xff0c;在整流逆变等周期性输入信号时&#xff0c;会有很好的跟随行&#xff0c;通常可以单独使用&#xff0c;也可以与其他补偿器串联并联使用。 这里我来分析一下重复控制器的重复控制器的应用工况以及其的优缺点。 分析…

Mybatis-Plus(企业实际开发应用)

一、Mybatis-Plus简介 MyBatis-Plus是MyBatis框架的一个增强工具&#xff0c;可以简化持久层代码开发MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网&a…

Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 上篇文章介绍了用Squential搭建BP神经网络&#xff0c;Squential可以搭建出上层输出就是下层输入的顺序神经网络结构&#xff0c;无法搭出一些带有跳连的非顺序网络结构&#xff0c;这个时候我们可以选择类class搭建封装神经网络结构。 第一步&#xff1a;import ten…

基于情感词典的情感分析方法

计算用户情绪强弱性&#xff0c;对于每一个文本都可以得到一个情感分值&#xff0c;以情感分值的正负性表示情感极性&#xff0c;大于0为积极情绪&#xff0c;小于0反之&#xff0c;绝对值越大情绪越强烈。 基于情感词典的情感分析方法主要思路&#xff1a; 1、对文本进行分词…

影响光源的因素

影响光源的因素 对比度 1.对比度 均匀性 2.均匀性 色彩还原性 3.色彩还原性 其他因素&#xff1a; 4. 亮度 &#xff1a; 光源 亮度是光源选择时的重要参考&#xff0c;尽量选择亮度高的光源。 5. 鲁棒性 &#xff1a; 鲁棒性是指光源是否对部件的位置敏感度最小 。 6. 光…

不同设备的请求头信息UserAgent,Headers

一、电脑端 【设备名称】&#xff1a;电脑 Win10 【应用名称】&#xff1a;win10 Edge 【浏览器信息】&#xff1a;名称:(Chrome)&#xff1b;版本:(70.0) 【请求头信息】&#xff1a;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch…

企业如何安全跨国传输30T文件数据

对于一些对数据敏感性比较高的企业&#xff0c;如IT企业和国企等&#xff0c;跨国数据传输是当今企业面临的一个重要挑战&#xff0c;尤其是当数据量达到30T这样的规模时&#xff0c;如何保证数据的速度、安全和合规性&#xff0c;就成为了企业必须考虑的问题。本文将从以下几个…

【Java题】输出基本数据类型的最大值和最小值,以及float和double的正无穷大值和负无穷大值

一&#xff1a;代码 public class Test {public static void main(String[] args) {//输出byte型的最大值与最小值System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//输出short型的最大值与最小值System.out.println(Short.MAX_VALUE);System.out.pri…

RTE(Runtime Environment)

RTE&#xff08;Runtime Environment&#xff09;是一个运行时环境&#xff0c;在这个环境里&#xff0c;你可以实现的功能是&#xff1a; 作为一个缓冲buffer给应用层和BSW层的接口&#xff08;例如COM&#xff09;用来存储数据&#xff0c;也就是说定义一个全局变量供上层和下…