数据卷、数据卷容器以及Dockerfile自定义制作的学习


数据卷 

1、如何使用Docker将项目从宿主机(虚拟机中)拷贝到容器中上

答案:使用数据卷

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

docker run -p 3307:3306 --name mysql1   -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

案例:使用docker安装5.7版本的MySQL

 命令解析:

以后如果将项目添加在容器中的Tomcat中使用的话,那么如何将项目拷贝到容器中的Tomcat中呢?

(解析:因为容器没有特定的目录结构,想进入到容器里只能通过命令进入

案例:将文件从宿主机拷贝到容器中去

实现思路:在宿主中(虚拟机中)创建一个文件夹>通过命令将项目移到该文件夹中>将该项目的路径复制到Tomcat容器里的webapps文件中。

步骤解析:

启动已创建的容器并且进入:docker exec -it 容器名称(NAMES) /bin/bash【注意在运行这个容器的前提是这个容器一件是在运行的(运行容器:docker start 容器名称)】

将项目从宿主机拷贝到容器中:docker cp 宿主机地址 容器ID:容器地址

 退出时且保留容器是运行的的快捷键是【Ctrl+P+Q】

OK,那么现在项目就成功添加在容器中去啦!!


2、如何使用Docker将项目从容器中拷贝到宿主机上(虚拟机中)

答案:使用数据卷

方法一:

将容器内部的日志文件(tomcat的日志文件)拷贝 到宿主机上

命令:

 将项目从宿主机拷贝到容器中:docker cp 容器ID:容器地址 宿主机地址【换了个位置而已】

成功!!

但是这里就有一个问题,日志文件时实时更新的,如果后面有改动的话,复制的那一份就不是实时的了。

方法二

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

在虚拟机上再装一个centos 7虚拟服务器

将容器和宿主机地址挂在的命令:

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

公式:docker run -di --name 容器名称 -v 容器地址:宿主机地址 centos7镜像(虚拟服务器镜像)【容器和宿主机地址可换位置】

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


什么是数据卷容器?

命令: 

创建数据卷容器:docker run -di -v /home/javaxl/data/c4 --name c4 centos:7
依靠于数据卷容器创建的普通容器:docker run -di --volumes-from c4 --name c6 centos:7

创建文本文档并且进入文本文档:vi c4.txt【公式:vi 文本文档】

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

docker inspect c4
docker inspect c6

Destination显示的地址为被挂载的数据卷容器

若在c4或c6容器中去给c4.txt文本文档中编辑,另外一个容器也是会被编辑的,

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

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


Dcokerfile制作增强版

自定义镜像

centos:7:通过它运行的容器,是没有vim命令

我希望我自己制作一个镜像mycentos:7,然后我自己制作的镜像运行一个容器,而这个容器,是存在vim命令。

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

cd /chenchen/softpath
mkdir mydocker
vi mycentosDockerfile

向 mycentosDockerfile 编辑内容

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

【要使我们自己制作的镜像可以使用vim命令那么就需要去下载vim编辑器,以及网桥,网络配置需要用到】

 开始构建镜像

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

【注意这行命令最后有一个英文符号“.”】

构建成功!

docker images 查看是否构建成功!

 通过镜像运行一个容器进行测试,测试vim和ifconfig命令是否下载成功:

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

 ok,成功!!


如何使用DockerFile制作自定义tomcat(熟悉几乎所有的Dockerfile命令)?

cd /chenchen/softpath
mkdir mydocker
vi mytomcatDockerfile

我创建了一个用来装tomcat的文件夹

向 mytomcatDockerfile 编辑内容 

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

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

 命令解析:

开始构建镜像

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

【注意后面有个英文符号点“.”】

 

 

 构建成功!! 

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

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

浏览器输入

http://192.168.195.139:49153/
http://192.168.195.139:49154/

都可以访问到tomcat

第一个容易测试容器 :

  会随机分配映射端口号,那么我们现在来使用映射端口号49153进行访问测试,看看是否会成功

 访问成功!!

第二个容器测试:

 第二个启动成功,使用映射端口号49154进行访问测试


本章内容分享到此结束,我们下期再见~~ 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值