目录
一,宿主机与容器之间的文件拷贝
1.1 容器中怎么上传项目(文件)
1.2 从宿主机拷贝文件到容器
1.3 从容器中拷贝文件到宿主机
二 数据卷
三 数据卷容器
四 Dockerfile
Dockerfile制作增强版
自定义centos 具备vim以及ifconfig
Dockerfile制作自定义tomcat
一,宿主机与容器之间的文件拷贝
引言:利用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
1.1 容器中怎么上传项目(文件)
将项目上传到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
1.2 从宿主机拷贝文件到容器
宿主机目录下的tomcat为手动提前备好的文件
docker cp /javaxl/software/mydocker/apache-tomcat-8.5.20.tar.gz tomcat3:/usr/local/tomcat/webapps
1.3 从容器中拷贝文件到宿主机
再这之前时 已经在容器的tomcat/webapps目录下创建了一个111.log 文件
进入容器
docker exec -it tomcat3 /bin/bash
进入webapps目录
cd webapps
创建文件111.log
touch 111.log
模拟将日志文件移至外部的宿主机目录下的情况
但是这是比较麻烦的 而且做不到实时更新日志 只有拷贝过来时的日志
docker cp tomcat3:/usr/local/tomcat/webapps/111.log /javaxl/software/mydocker
二 数据卷
将宿主机的目录与容器的目录进行挂载,实现数据共享
docker run -di --name c2 -v
/home/xl/data/ 宿主机目录
:/home/may/data/ 容器的指定目录
centos:7 建一个centos:7的服务
我们正在使用的就是centos:7的服务 也就是说在centos:7 的服务下再建一个虚拟的centos:7的服务器
docker run -di --name c2 -v /home/xl/data/:/home/may/data/ centos:7
因为上传超时 截了超时的图 有点模糊还请见谅
结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会会被共享;
三 数据卷容器
docker run -di -v /home/javaxl/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
c4
c6
会发现c4、c6目录挂载情况是一样的
结论:不管c4、c6在指定目录创建文件夹还是文件,都会会被共享;
四 Dockerfile
Dockerfile制作增强版
自定义centos 具备vim以及ifconfig
举例 我们用下载的centos:7镜像 运行一个容器 是没有vim命令的 只有vi
所以我们可以自定义centos 具备vim以及ifconfig作用
vi mycentosDockerfile向 mycentosDockerfile 编辑内容
FROM centos:7 依靠centos:7 进行增强
MAINTAINER javaxl "javaxl@qq.com" 创造者备注
RUN yum -y install vim 下载vim命令
RUN yum install net-tools.x86_64 -y 下载 ifconfig命令
CMD /bin/bash 进入容器的方法FROM centos:7
MAINTAINER javaxl "javaxl@qq.com"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash构建镜像
docker build -f mycentosDockerfile(若此处名为Dockerfile 则可省略) -t javaxl/centos:v1.0 .
docker build -f mycentosDockerfile -t javaxl/centos:v1.0 .
通过镜像运行一个容器进行测试
docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash
成功创建!!!
Dockerfile制作自定义tomcat
非自定义的tomcat不可访问
第一步:
vi mytomcatDockerfile
第二步:
向 mytomcatDockerfile 编辑内容
FROM centos:7
MAINTAINER javaxl "javaxl@qq.com"ENV workerDir /home/javaxl/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/javaxl/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 添加进工作目录不解压力
以及准备jdk
第三步:
构建镜像
docker build -f mytomcatDockerfile -t javaxl/tomcat8:v1.0 .
第四步:
通过镜像运行2个容器进行测试
docker run -di --name mt1 -P javaxl/tomcat8:v1.0
docker run -di --name mt2 -P javaxl/tomcat8:v1.0
第五步:
浏览器输入 两个都可以访问
http://192.168.195.139:49153/
http://192.168.195.139:49154/
但是此jdk是不可控的 只做自定义tomcat演示 之后再为大家讲解如何让端口可控