Docker实战之二

news2024/11/19 17:49:27

一、前言

前一篇 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.coloradmin.cn/o/1141693.html

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

相关文章

进击的零跑:拿巨头的钱,把中国车打进欧洲市场

作者 | 张祥威 编辑 | 德新 造车新势力中,零跑属于不惹事,独自在角落低调发育的这一类。偶尔高调门喊一声要干掉特斯拉,围观的人也是笑一笑不当回事儿,于是又回去默默卖车。 声量一般,卖车还行。 行业里每次晒数据&…

开发实践|三步搞定爆款直播间小游戏

直播间小游戏引爆社交新潮流 近年来,直播行业迅速发展,特别是在抖音平台,直播间的吸引力已远超传统的短视频内容。而在这波直播风潮中,有一种玩法让我格外留意——直播间小游戏。经常刷抖音的朋友应该在直播间看到过这样的场景&a…

SIT3491ISO具有隔离功能,256 节点,全双工 RS422/RS485 芯片

SIT3491ISO 是一款电容隔离的全双工 RS-422/485 收发器,总线端口 ESD 保护能力 HBM 达到 15kV 以上,功能完全满足 EIA-422 以及 TIA/EIA-485 标准要求的 RS-422/485 收发器。 SIT3491ISO 包括一个驱动器和一个接收器,两者均…

为什么 Python 适合初学者?如何开始学习 Python?

与其他编程语言相比较,Python有着更为简单的语法,所以学习Python对于很多刚进入编程领域的初学者来说是一个很好的选择。 Python还是一门应用领域很广的编程语言,这也就意味着你可以在各种各样的工作和领域中使用它。 跟很多刚进入技术领域…

C++in/out输入输出流[IO流]

文章目录 1. C语言的输入与输出2.C的IO流2.1流的概念2.2CIO流2.3刷题常见while(cin >> str)重载强制类型转换运算符模拟while(cin >> str) 2.4C标准IO流2.5C文件IO流1.ifstream 1. C语言的输入与输出 C语言用到最频繁的输入输出方式就是scanf ()与printf()。 scanf…

jquery中定义的动态生成的标签元素,点击事件该方法未定义Uncaught ReferenceError: goHere is not defined

如下图: 在点击动态生成的弹窗里的html中的企业列表标签时(该标签绑定了点击事件-goHere), 会提示:Uncaught ReferenceError: goHere is not defined 生成的html代码: // 自定义content function showContent(a) {if (a != undefined) {return `<div class="…

Centos7 安装和配置 Redis 5 教程

在Centos上安装Redis 5&#xff0c;如果是 Centos8&#xff0c;那么 yum 仓库中默认的 redis 版本就是 5&#xff0c;直接 yum install 即可。但如果是 Centos7&#xff0c;yum 仓库中默认的 redis 版本是 3 系列&#xff0c;比较老&#xff1a; 通过 yum list | grep redis 命…

全民拼购模式:无论成败皆有所得

什么是全民拼购模式&#xff1f; 全民拼购模式是一种基于社交电商的新型模式&#xff0c;它通过拼团、拼购等方式&#xff0c;让消费者享受更优惠的价格和更便捷的购物体验。这种模式的出现&#xff0c;不仅为电商平台注入了新的活力&#xff0c;也成为了消费者追求高性价比商…

物联网AI MicroPython传感器学习 之 LCD1602液晶屏

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 LCD1602 字符型液晶显示模块是专门用于显示字母、数字、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供5x7点阵游标的显示模式。提供显示数据缓冲区 DDRAM、字符发生器CGROM和字符…

双十一某宝、某东活动脚本

一、前言 双十一马上就快开始了&#xff0c;各大网购平台的优惠活动开展的如火如荼&#xff0c;羊毛党们也是摩拳擦掌&#xff0c;蠢蠢欲动。为了提高效率&#xff0c;自动化脚本应运而生&#xff0c;今天&#xff0c;小编为大家带来的就是这么三款自动化点击软件。主要是针对…

protobuf对象与JSON相互转换

除了之前的 protobuf-java依赖之外&#xff0c;还需要引入 protobuf-java-uti 依赖&#xff1a; <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java --><dependency><groupId>com.google.protobuf</groupId><artifactId&…

linux可视化运维工具

今天推荐两个linux可视化的运维工具Cockpit和orion-ops Cockpit Cockpit是CentOS 8默认内置的一个基于Web的可视化管理工具。它提供了对一系列常见命令行管理操作的图形化支持&#xff0c;包括用户管理、防火墙管理、服务器资源监控等等。方便易用的Cockpit号称是适用于所有人…

一文解决:Swagger API 未授权访问漏洞问题

Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面&#xff0c;让开发者可以更方便地查看和测试 API 接口。然而&#xff0c;在一些情况下&#xff0c;未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 …

基于SpringBoot + Vue的学生成绩管理系统的设计与实现源码及搭建视频

基于SpringBoot Vue的学生成绩管理系统的设计与实现 引言 1.1目的 该文档的目的是描述学生成绩管理系统的概要设计&#xff0c;主要内容包括系统功能简介、系统结构设计、模块设计和界面设计等。 本文档的预期读者包括&#xff1a;产品设计者、编程人员、系统用户。 1.2 范围…

高品质工地建筑模板,防水耐用,易脱模

欢迎选购我们的产品&#xff1a;高品质工地建筑模板。作为一家专业厂家&#xff0c;我们提供适用于高层建筑的建筑模板&#xff0c;具有出色的防水耐用性能&#xff0c;且不易开胶。1. 高品质工地建筑模板&#xff1a;我们的建筑模板经过精心设计和制作&#xff0c;以确保其高品…

Python 中多态性的示例和类的继承多态性

单词 “多态” 意味着 “多种形式”&#xff0c;在编程中&#xff0c;它指的是具有相同名称的方法/函数/操作符&#xff0c;可以在许多不同的对象或类上执行。 函数多态性 一个示例是 Python 中的 len() 函数&#xff0c;它可以用于不同的对象。 字符串 对于字符串&#xf…

新的iLeakage攻击从Apple Safari窃取电子邮件和密码

图片 导语&#xff1a;学术研究人员开发出一种新的推测性侧信道攻击&#xff0c;名为iLeakage&#xff0c;可在所有最新的Apple设备上运行&#xff0c;并从Safari浏览器中提取敏感信息。 攻击概述 iLeakage是一种新型的推测性执行攻击&#xff0c;针对的是Apple Silicon CPU和…

LabVIEW更改图像特定部分的颜色

LabVIEW更改图像特定部分的颜色 在随附的照片中&#xff0c;想将包围的部分更改为黄色。该怎么做&#xff1f;或者如何将图像的蓝色部分更改为绿色。 绘制拼合像素图不接受数组或输出数组。如果需要有关函数的更多信息&#xff0c;请按 CTRL H 打开上下文帮助&#xff0c;或单…

linux shell脚本修改ini配置文件[session]下的键值

比如我要修改一个配置文件&#xff0c;如下&#xff0c;修改systemFlag.ini下的[huake]下的ip和port的值 代码如下&#xff0c;我就不解释了&#xff0c;有注释&#xff0c;用的是sed 来修改的&#xff0c;不懂的&#xff0c;可以去学习一下 #!/bin/bash #获取当前路径 curr…

无需更换vue-cli 脚手架 uniapp-搭建项目-H5-低版本安卓IOS兼容问题(白屏)(接口请求异常)

✨求关注~ &#x1f4bb;博客&#xff1a;www.protaos.com I. 简介 A. UniApp项目概述 B. 白屏和接口请求异常问题的背景 II. 白屏问题 A. 问题描述 1、uniapp 打包H5内嵌入APP内、低版本手机系统访问白屏问题 B. 问题根本原因 1、低版本手机系统 自带的webview内核不支持ES6语…