• docker之数据卷(Data Volumes)&dockerfile


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

    引言:利用MySQL镜像安装MySQL服务

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

    在这里插入图片描述

    连接navicat.exe 测试

    在这里插入图片描述

    数据卷

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

    从宿主机cp到容器
    docker cp /home/javaxy/ruanjian/mydocker/apache-tomcat-8.5.20.tar.gz tmcat3:/usr/local/tomcat/webapps
    在这里插入图片描述
    从容器cp到宿主机
    docker cp tmcat3:/usr/local/tomcat/webapps/111.txt /home/javaxy/ruanjian/mydocker
    在这里插入图片描述

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

    docker run -di --name c2 -v /home/yzp/data/:/home/pengge/data/ centos:7
    在这里插入图片描述
    最终结果显示:
    在这里插入图片描述
    在这里插入图片描述
    结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会会被共享;

    数据卷容器

    docker run -di -v /home/yzp/data/c4 --name c4 centos:7
    docker run -di --volumes-from c4 --name c6 centos:7
    
    • 1
    • 2

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

    结果:
    在这里插入图片描述

    docker inspect c4 可以查看c4里面的所有信息
    在这里插入图片描述

    docker inspect c6可以查看c6里面的所有信息
    自己测试吧
    结果:
    会发现c4、c6目录挂载情况是一样的

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

    Dockerfile

    自定义centos,具备vim及ifconfig作用(体会学习Dockerfile的意义)

    cd /javaxy/ruanjian
    mkdir mydocker
    vi mycentosDockerfile
    
    • 1
    • 2
    • 3

    向 mycentosDockerfile 编辑内容

    FROM centos:7
    MAINTAINER javaxy "2878276593@qq.com"
    RUN yum -y install vim
    RUN yum install net-tools.x86_64 -y
    CMD /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    构建镜像

    docker build -f mycentosDockerfile -t javaxy/centos:v1.0 .
    
    • 1

    出现下面这个即创建成功
    在这里插入图片描述
    通过镜像运行一个容器进行测试

    docker run -it --name mc1 javaxy/centos:v1.0 /bin/bash
    
    • 1

    dc1c9ac8308.png)

    在这里插入图片描述

    自定义tomcat8(熟悉几乎所有的Dockerfile命令)

    cd /javaxl/software
    mkdir mydocker
    vi mytomcatDockerfile
    
    • 1
    • 2
    • 3

    向 mytomcatDockerfile 编辑内容

    FROM centos:7
    MAINTAINER javaxy "javaxy@qq.com"
    
    ENV workerDir /home/javaxy/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/javaxy/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    构建镜像

    docker build -f mytomcatDockerfile -t javaxy/tomcat8:v1.0 .
    
    • 1

    在这里插入图片描述

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

    docker run -di --name mt1 -P javaxy/tomcat8:v1.0
    docker run -di --name mt2 -P javaxy/tomcat8:v1.0
    
    • 1
    • 2

    在这里插入图片描述

    运行结果:
    在这里插入图片描述

  • 相关阅读:
    ISO认证好处,ISO9001认证办理流程
    基于卷积神经网络的图像识别-案例实施1
    『Java安全』XStream 1.4.15反序列化漏洞CVE-2021-21345复现与浅析
    11.用户信息——sql语句的使用、Tornado更改用户信息、Tornado上传图片头像
    说说原型(prototype)、原型链
    vue 项目源码映射失败问题解决
    JS-转换为布尔值
    2022年起重机械指挥考试题及模拟考试
    【MyBatis-Plus】CRUD 操作
    【深入浅出Spring6】第八期——面向切面编程 AOP
  • 原文地址:https://blog.csdn.net/m0_65795902/article/details/128202450