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,一经查实,立即删除!

相关文章

并查集学习心得

int find(int x)//并查集找父亲 {if(x!fa[x]) fa[x]find(fa[x]);return fa[x]; } void add(int x,int y)//合并 {int fxfind(x);int fyfind(y);if(x!y) fa[fx]fy; } P1197 [JSOI2008] 星球大战 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 洛谷p1197星球大战 :并查集逆向…

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…

Redis学习笔记5:基于springboot的lettuce redis客户端断线重连ConnectionWatchdog

lettuce默认采用共享本地连接的模式和redis服务器端交互&#xff0c;如果连接断开如何及时发现并且重新建立连接呢&#xff1f;通过翻阅源码发现有两种方案&#xff0c;方案一&#xff1a;开启连接有效性检测&#xff1b;方案二&#xff1a;通过ConnectionWatchdog监视器 一个对…

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

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

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

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

CVPR2023新作:基于组合空时位移的视频修复

Title: A Simple Baseline for Video Restoration With Grouped Spatial-Temporal Shift (视频修复的简单基准&#xff1a;组合空时位移) Affiliation: CUHK MMLab (香港中文大学多媒体实验室) Authors: Dasong Li, Xiaoyu Shi, Yi Zhang, Ka Chun Cheung, Simon See, Xiaoga…

苏宁一面复盘

技术问题&#xff08;顺序有错乱&#xff09;&#xff1a; 1.抽象类与接口&#xff0c;什么时候用抽象类&#xff0c;什么时候用接口&#xff0c;区别是什么。 答&#xff1a;抽象类内可以有非抽象方法&#xff0c;方法的具体实现&#xff0c;接口内只能有抽象方法&#xff0…

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

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

一个简单的注册页面,如有错误请指正(2.css)

这段CSS代码定义了页面的样式&#xff0c;让我逐个解释其功能&#xff1a; 1. * {}&#xff1a;通配符选择器&#xff0c;用于将页面中的所有元素设置统一的样式。这里将margins和paddings设置为0&#xff0c;以去除默认的边距。 2. div img {}&#xff1a;选择页面中所有div…

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

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

c语言 判断两个文件是否相同

使用strcmp比较&#xff1a; #include <stdio.h> #include <string.h>int Compare(const char * file1, const char* file2) {FILE* f1, * f2;int size1, size2;unsigned char buffer1[1024], buffer2[1024];f1 fopen(file1, "rb");f2 fopen(file2, &…

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故障回顾…

Centos 7 安装 Docker Enginee

文章目录 Centos 安装 Docker Enginee系统要求卸载旧版本使用 RPM 仓库设置 Docker 仓库安装 Docker Enginee升级 Docker Enginee 卸载 Docker Centos 安装 Docker Enginee 要在 Centos 安装 Docker Enginee&#xff0c;需要满足以下要求&#xff1a; 系统要求 CentOS 7Cent…

重复控制器的性能优化

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

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

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