Docker运行MySQL容器

2023-11-18

目录

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker运行MySQL容器 的相关文章

  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • 在docker中,存储驱动程序和支持文件系统有何不同?

    The docker info命令列出两个存储驱动程序 例如设备映射器和支持文件系统 例如XFS 这两个属性的含义是什么 它们有何不同 存储驱动程序 是docker用来管理存储的软件组件 这可能是其中之一overlay驱动程序 它使用ove
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • docker中CREATED容器是什么意思?

    我有点困惑docker容器的状态 尤其是与状态为已创建 我知道当容器正在运行状态如下所示 root labadmin VirtualBox RAGHU DOCKER docker ps CONTAINER ID IMAGE COMMAND
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 将主机中的空文件夹挂载到 Docker 中的非空文件夹

    我正在使用的工具是在 Docker 映像中提供的 由于安装该工具非常复杂 存在大量依赖项 因此我想使用 IDE 在主机上工作 但在容器上运行它 因此 下载并加载图像后 我运行 sudo docker run it v home myself
  • 如何从本地运行的docker容器访问Azure Keyvault?

    我有一个包含 ASP NET Core 应用程序的 docker 映像 该应用程序使用 Azure Key Vault 来访问连接字符串等内容 当我在本地运行图像时 出现以下错误 Unhandled Exception Microsoft
  • 使用 Docker 文件分配附加功能

    我需要部署 Docker 映像 但我只想使用 Docker run 命令而不使用其任何参数 我想在运行容器时分配特殊权限 这是我的 Docker 运行命令 docker run cap add SYS ADMIN cap add DAC R
  • Kubernetes - 尝试部署时“安装卷失败”

    我部署了第一个容器 我得到了信息 deployment apps frontarena ads deployment created 但后来我看到我的容器创建陷入等待状态 然后我看到日志使用kubectl describe pod fron
  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐