• Docker:数据卷(Data Volumes)&dockerfile


    目录

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

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

     从宿主机拷贝文件到容器

    二、数据卷

    三、数据卷容器

    四、Dockerfile

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

     2、自定义tomcat8

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

    备份我们已经装好的docker

     等备份完之后我们再打开工具

     再安装一个MySQL

    利用MySQL镜像安装MySQL服务

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

     

    若出现图下问题:

    在确认命令无误 安装成功的情况下连接不上

     如图此时mysql2 是正常安装成功,可是就是连接不上

     解决:①同时访问两个容器里面的端口号会存在问题,若想访问第二个容器中的,要先停止第一个容器 ②关闭防火墙

    关闭防火墙

    再重新安装mysql3,就能成功了

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

    参考命令

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

     实操:根据自己的文件目录以及文件名称修改参考的命令

     从宿主机拷贝文件到容器

    参考命令:

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

    实操:

    二、数据卷

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

    参考命令:

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

    挂载:将宿主机的指定目录与容器的指定目录进行挂载

    实操:

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

    三、数据卷容器

    参考命令:

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

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

     

     

     

    用于查看哪个目录和哪个目录进行了挂载:

    docker inspect c4
    docker inspect c6

    docker inspect c2

     c4

    c6

     c2

    会发现c4、c6目录挂载情况是一样的
    结论:不管c4、c6在指定目录创建文件夹还是文件,都会会被共享;

    四、Dockerfile

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

    cd /javaxc/software
    mkdir mydocker

    一定要注意是在哪个目录下
    vi mycentosDockerfile

     进入黑窗口

    向 mycentosDockerfile 编辑内容

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

     

    构建镜像

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

     构建成功

     查看

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

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

     可以使用vim啦

     2、自定义tomcat8

    cd /javaxc/software
    mkdir mydocker
    vi mytomcatDockerfile

     向 mytomcatDockerfile 编辑内容

    FROM centos:7
    MAINTAINER cdl"cdl@qq.com"

    ENV workerDir /home/javaxc/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/javaxc/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]

     注意:

    ADD jdk-8u151-linux-x64.tar.gz $workerDir (添加到工作目录并且解压)
    COPY apache-tomcat-8.5.20.tar.gz $workerDir (复制到工作目录不解压)

    构建镜像

    docker build -f mytomcatDockerfile -t javaxc/tomcat8:v1.0 .

    构建成功

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


    docker run -di --name mt4 -P javaxc/tomcat8:v1.0

     浏览器输入
    http://192.168.26.128:49157

     都可以访问到tomcat,命令大家根据自己实际情况进行修改哦

  • 相关阅读:
    机器人打磨抛光
    Flowable实战:启动事件与结束事件
    【react-native】关于ios与android的环境搭建
    探索古彝文AI识别技术:助力中国传统文化的传承与发扬
    QT中QTableView获取单元格内容的方法
    Hdu2022 多校训练(5) BBQ
    VMware安装Centos7及静态IP网络配置详细教程
    postman返回值乱码
    前端基础自学整理|HTML + JavaScript + DOM事件
    C++(一)
  • 原文地址:https://blog.csdn.net/weixin_62735525/article/details/128202732