数据卷
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 c6Destination显示的地址为被挂载的数据卷容器
若在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"[email protected]"
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"[email protected]"ENV workerDir /home/chenchen/dockerfile/3
WORKDIR $workerDirADD 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.20ENV 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:$PATHEXPOSE 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进行访问测试