Docker运行MySQL容器

news2024/12/26 20:40:29

目录

一、宿主机与容器之间的文件拷贝

1.利用MySQL镜像安装MySQL服务 

2.容器中怎么上传项目(文件)

3.从容器中拷贝文件到宿主机 

4.从宿主机拷贝文件到容器

二、数据卷

三、数据卷容器

四、Dockerfile


本次目标:

  1. 数据卷
  2. Dockerfile

一、宿主机与容器之间的文件拷贝

1.利用MySQL镜像安装MySQL服务 

命令中的javayuyan可以更改成自己所用的目录

docker run -p 3307:3306 --name mysql1   -di -v /home/javayuyan/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/javayuyan/data/mysql/data/:/var/lib/mysql -v /home/javayuyan/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

但不能同时进行两个数据库的连接,需要先将一个stop掉 

2.容器中怎么上传项目(文件)

将项目上传到tomcat的webapps中

没有tomcat可以先进行下载

下载tomcat

docker run -it --name tomcat3 tomcat:8 /bin/bash 

退出容器(不会停止容器 所以下一步查看的容器中有tomcat的话就不用再次运行了)

ctr+p+q

查看正在使用的容器

docker ps

使用过的容器

docker ps -a

运行tomcat容器

docker start tomcat3

进入容器

docker exec -it tomcat3 /bin/bash

进入webapps目录

cd webapps

3.从容器中拷贝文件到宿主机 

docker cp tomcat1:/usr/local/tomcat/webapps/hello /javayuyan/software/apache-tomcat-8.5.20/webapps

再这之前时 已经在容器的tomcat/webapps目录下创建了一个111.log 文件

进入容器

docker exec -it tomcat3 /bin/bash

进入webapps目录

cd webapps

创建文件111.log

touch 111.log

模拟将日志文件移至外部的宿主机目录下的情况

但是这是比较麻烦的 而且做不到实时更新日志 只有拷贝过来时的日志

4.从宿主机拷贝文件到容器

docker cp /javayuyan/software/apache-tomcat-8.5.20/webapps tomcat1:/usr/local/tomcat/

二、数据卷

将宿主机的目录与容器的目录进行挂载,实现数据共享

docker run -di --name c2 -v /home/yuyan/data/:/home/yuyan/data/ centos:7

  

结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会被共享

三、数据卷容器

docker run -di -v /home/javayuyan/data/c4 --name c4 centos:7
docker run -di --volumes-from c4 --name c6 centos:7

  其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用

其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用,我们可以通过docker inspect查看容器的详细情况

docker inspect c4
docker inspect c6

 c4

c6 

会发现c4、c6目录挂载情况是一样的

结论不管c4、c6在指定目录创建文件夹还是文件,都会被共享

四、Dockerfile

自定义centos,具备vim及ifconfig作用

我们平时所用到的centos:7 是没有vim 命令的,而自己制作一个镜像是可以弥补这些缺点的。

命令如下:

cd /javayuyan/software
mkdir mydocker
vi mycentosDockerfile

向 mycentosDockerfile 编辑内容

FROM centos:7        #以官方提供的centos:7作为基础镜像
MAINTAINER javaxl "javayuyan@qq.com"        #标注是谁做的
RUN yum -y install vim        #run 后面+自己所要下载的命令
RUN yum install net-tools.x86_64 -y
CMD /bin/bash         #进入容器中的命令

(copy下面的)

FROM centos:7
MAINTAINER javayuyan "javayuyan@qq.com"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash

 构建镜像

docker build -f mycentosDockerfile -t javayuyan/centos:v1.0 .

在构建镜像的时候博主遇到了关于网络方面的问题,如下: 

上面显示的是在下载 yum -y install vim 命令的时候中断的,于是我判断过yum源是否为最新,判断虚拟机网络配置时,是否忽略了使用vi编辑ifcfg-ens33、容器问题等等

后来发现都不是的,最终我在 大佬 水天步 的博客[WARNING]: IPv4 forwarding is disabled. Networking will not work中找到了解决办法

大佬博客中提到:修改配置文件

vi /usr/lib/sysctl.d/00-system.conf

 在文末追加

net.ipv4.ip_forward=1

然后重启网络

systemctl restart network

其原因为大佬所发的:(如果遇到同样问题的小伙伴,如果也帮助到了你可以去大佬博客点点赞)

 创建镜像完成:

 由于之前下载报错了,所以会有安装失败的文件

 删除:docker rmi -f +ID

通过镜像运行一个容器进行测试

docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash

 Dockerfile制作自定义tomcat

docker ps 查看还在运行的tomcat

使用它进行网页访问

  发现非自定义的tomcat不可外部访问

于是我们自定义tomcat

cd /javayuyan/software
mkdir mydocker
vi mytomcatDockerfile

向 mytomcatDockerfile 编辑内容

FROM centos:7         #基于系统镜像
MAINTAINER javayuyan "javayuuyan@qq.com"        #注释

ENV workerDir /home/javayuyan/dockerfile/3        # 默认容器跳指定的工作目录
WORKDIR $workerDir        #引用了上面的变量

ADD jdk-8u151-linux-x64.tar.gz $workerDir        #将jdk压缩包添加到工作目录并进行解压
COPY apache-tomcat-8.5.20.tar.gz $workerDir        #将压缩包添加到工作目录不解压
RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20        #执行命令

ENV JAVA_HOME $workerDir/jdk1.8.0_151                #安装环境变量,引用上面的值
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20
ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib:$PATH

EXPOSE 8080        #开放端口
ENTRYPOINT ["/home/javayuyan/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]        #执行的命令

FROM centos:7
MAINTAINER javayuyam "javayuyan@qq.com"

ENV workerDir /home/javayuyan/dockerfile/3
WORKDIR $workerDir

ADD jdk-8u151-linux-x64.tar.gz $workerDir
COPY apache-tomcat-8.5.20.tar.gz $workerDir
RUN tar -xvf apache-tomcat-8.5.20.tar.gz apache-tomcat-8.5.20

ENV JAVA_HOME $workerDir/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $workerDir/apache-tomcat-8.5.20
ENV PATH $JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib:$PATH

EXPOSE 8080
ENTRYPOINT ["/home/javayuyan/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

先创建一个mytomcatDockerfile文件,将命令中所需要的压缩包cp进去

再进行自定义镜像的创建:

 通过镜像运行2个容器进行测试

docker run -di --name mt1 -P javayuyan/tomcat8:v1.0
docker run -di --name mt2 -P javayuyan/tomcat8:v1.0

 今天的分享就到这里,下次再见!

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

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

相关文章

C++初阶作业 Stackqueue 作业题一

作者:小萌新 专栏:C初阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:实现几道Stack和queue的作业题 Stack queue作业题最小栈问题栈的压入弹出序列逆波兰表达式问题总结最小栈问题 它问题的题目描述是这…

Kafka极客 - 13 Kafka 中的高水位和 Leader Epoch 机制

文章目录1. 什么是高水位?2. 高水位的作用3. 高水位更新机制1. Leader 副本高水位更新机制2. Follower 副本高水位更新机制4. 副本同步机制解析5. Leader Epoch你可能听说过高水位(High Watermark),但不一定耳闻过 Leader Epoch。…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【03】前端开发基础知识:ES6_Vue

持续学习&持续更新中… 学习态度:守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【03】前端技术栈类比ES6简介什么是ECMAScriptES6新特性let、const解构表达式字符串扩展字符串模板函数优化对象优化map、reducePromise(异步编排&#xff…

第十四届蓝桥杯集训——JavaC组第十一篇——switch

第十四届蓝桥杯集训——JavaC组第十一篇——switch 目录 第十四届蓝桥杯集训——JavaC组第十一篇——switch swtich概述 switch语法 default作用 switch基础示例: String类型switch示例 switch枚举判断 巧用break 石头剪刀布 测试代码: swtich概…

安卓计算机毕设——无线点餐系统

1 绪 论 1.1 研究的背景及意义 民以食为天。餐饮业是一种个性化、多样化的服务产业,餐饮传统的点菜方式是纯人工操作,由服务员记录顾客点的菜,在具体工作中容易出现以下问题:手写单据字迹潦草从而导致上错菜、传菜分单出错现象严…

pytest学习和使用-fixture如何使用?

1 引入 和setup、teardown的区别是:fixture可自定义测试用例的前置条件; setup、teardown针对整个脚本全局生效,可实现在执行用例前后加入一些操作; setup、teardown不能做到灵活使用,比如用例A先登陆,用…

【毕业设计】微信失物招领小程序 失物招领微信小程序

一、前言 生活中,很多人都有丢失物品的经历,随着互联网的快速发展,你可以在各种地方信息平台来发布丢失说明。但是这些信息往往会随着平台的发布量被刷掉,想要找回丢失的东西还是很困难的。只需要打开微信即可使用失物招领小程序…

软件测试丨基于Junit4,利用xUnit框架让你的测试用例可维护性大幅提升

xUnit是一系列测试框架的统称,最开始来源于一个叫做Smalltalk的SUnit框架。 现在各种面向对象的语言,如Java、Python的鼻祖就是Smalltalk,后来这些语言都借助了Sunit框架的理念,有很多通用的规范和特征,也就统称为xUn…

C. Hossam and Trainees(欧拉筛 + 分解质因数)

Problem - C - Codeforces 胡萨姆有n名学员。他给第i个学员分配了一个号码。 如果存在一个整数x (x≥2),使得x能整除ai, x能整除aj,则第i个和第j个(i≠j)练习者被称为成功练习者。 胡萨姆想知道是否有一对成功的学员。 胡萨姆现在很累了,所以…

推荐一个平台,JNPF开发平台3.4.5版本更新升级,企业级的低代码开发平台

JNPF快速开发框架是一个可复用的设计构件,使用JNPF的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发; 简单来讲,软件开发框架可以理解为我们盖楼房时,用梁柱子承重墙做起来的钢筋混凝土结构框架。而实现的软件功…

R语言基于协方差的结构方程拟合的卡方检验

在评估结构方程模型的拟合,很常见的应用是研究χ2进行测试,因为在给定足够大的样本量的情况下,它几乎总会检测出模型与数据之间的统计上的显着差异。因为,我们的模型几乎总是数据的近似值。如果我们的模型的协方差矩阵实际上匹配抽…

【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)

一、NoSQL数据库概述 NoSQL泛指非关系型数据库,相对于传统关系型数据库,NoSQL有着更复杂的分类,包括KV数据库,文档数据库,列式数据库以及图数据库等等,这些类型的数据库能够更好的适应复杂类型的海量数据存…

QT点云显示--基于QOpenGLWidget和QOpenGLFunctions实现

一、实现功能 1、网格显示 2、坐标轴显示 3、鼠标操作旋转、平移、缩放 4、点云显示 之前写了一篇基于QGLWidget实现,此版本的功能接口基本保持一致,方便对比 QT点云显示--基于QGLWidget实现_Jason~shen的博客-CSDN博客1、网格显示2、坐标轴显示3、…

操作系统学习笔记_2 中断和系统调用;进程和线程

中断 一开始的计算机只是简单的串行执行程序。 现在的操作系统不仅可以并发执行程序,而且收到中断指令时,CPU 会切换到内核模式,中断当前程序的执行,按中断指令调整程序执行顺序,然后恢复到用户态继续执行。 中断分…

docker容器安装与使用

目录 1. 什么是docker 2. docker的核心组件 3. docker的安装 3.1 安装的先决条件 3.2.1 ubuntu安装docker 3.2.2 CentOS安装docker 3.3 配置镜像加速器 4. 镜像常用操作 4.1 搜索镜像 4.3 查看宿主机中的镜像 4.3 删除镜像 5. 容器常用命令 5.1 运行容器 5.2 使用…

【算法】斐波那契数列通项公式

特征方程和通项公式 如果数列ana_nan​的递推公式:anc1an−1c2an−2a_nc_1a_{n-1}c_2a_{n-2}an​c1​an−1​c2​an−2​------(1) 根据待定系数法,假设an−xan−1y(an−1−xan−2)a_n-xa_{n-1}y(a_{n-1}-xa_{n-2})an​−xan−1​y(an−1​−xan−2​)…

Mybatis源码解析之执行SQL语句

作者:郑志杰 mybatis 操作数据库的过程 // 第一步:读取mybatis-config.xml配置文件 InputStream inputStream Resources.getResourceAsStream("mybatis-config.xml"); // 第二步:构建SqlSessionFactory(框架初始化) SqlSessionF…

FITC-PEG-Biotin,Biotin-PEG-Fluorescein,荧光素PEG生物素生物标记物用试剂

一:产品描述 1、名称 英文:FITC-PEG-Biotin,Biotin-PEG-Fluorescein 中文:荧光素-聚乙二醇-生物素 2、CAS编号:N/A 3、所属分类:Biotin PEG Fluorescent PEG 4、分子量:可定制&#xff0c…

MyBatis访问Db2和MySQL(Maven)

注:虽然前面写过一些文档,包含MyBatis连接Db2和MySQL的内容,但是貌似没有单独记录用Maven方式连接DB的文档,所以单写了这一篇文档,方便以后需要快速搭建MyBatis环境时参考。 注:有一篇文档“MyBatis访问Db…

基于java+springboot+mybatis+vue+mysql的摄影跟拍预定管理系统

项目介绍 摄影跟拍预定管理方面的任务繁琐,以至于每年都在摄影跟拍预定管理这方面投入较多的精力却效果甚微,摄影跟拍预定管理系统的目标就是为了能够缓解摄影跟拍预定管理工作方面面临的压力,让摄影跟拍预定管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到…