Docker运行MySQL容器

目录

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

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 "[email protected]"        #标注是谁做的
RUN yum -y install vim        #run 后面+自己所要下载的命令
RUN yum install net-tools.x86_64 -y
CMD /bin/bash         #进入容器中的命令

(copy下面的)

FROM centos:7
MAINTAINER javayuyan "[email protected]"
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 "[email protected]"        #注释

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 "[email protected]"

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

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

猜你喜欢

转载自blog.csdn.net/weixin_63531940/article/details/128265426