本次目标:
- 数据卷
- Dockerfile
一、宿主机与容器之间的文件拷贝
1.利用MySQL镜像安装MySQL服务
命令中的javayuyan可以更改成自己所用的目录
docker run -p 3307:3306 --name mysql1 -di -v /home/javayuyan/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/javayuyan/data/mysql/data/:/var/lib/mysql -v /home/javayuyan/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
但不能同时进行两个数据库的连接,需要先将一个stop掉
2.容器中怎么上传项目(文件)
将项目上传到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
3.从容器中拷贝文件到宿主机
docker cp tomcat1:/usr/local/tomcat/webapps/hello /javayuyan/software/apache-tomcat-8.5.20/webapps
再这之前时 已经在容器的tomcat/webapps目录下创建了一个111.log 文件
进入容器
docker exec -it tomcat3 /bin/bash
进入webapps目录
cd webapps
创建文件111.log
touch 111.log
模拟将日志文件移至外部的宿主机目录下的情况
但是这是比较麻烦的 而且做不到实时更新日志 只有拷贝过来时的日志
4.从宿主机拷贝文件到容器
docker cp /javayuyan/software/apache-tomcat-8.5.20/webapps tomcat1:/usr/local/tomcat/
二、数据卷
将宿主机的目录与容器的目录进行挂载,实现数据共享
docker run -di --name c2 -v /home/yuyan/data/:/home/yuyan/data/ centos:7
结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会被共享
三、数据卷容器
docker run -di -v /home/javayuyan/data/c4 --name c4 centos:7
docker run -di --volumes-from c4 --name c6 centos:7
其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用
其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用,我们可以通过docker inspect查看容器的详细情况
docker inspect c4
docker inspect c6
c4
c6
会发现c4、c6目录挂载情况是一样的
结论:不管c4、c6在指定目录创建文件夹还是文件,都会被共享
四、Dockerfile
自定义centos,具备vim及ifconfig作用
我们平时所用到的centos:7 是没有vim 命令的,而自己制作一个镜像是可以弥补这些缺点的。
命令如下:
cd /javayuyan/software
mkdir mydocker
vi mycentosDockerfile
向 mycentosDockerfile 编辑内容
FROM centos:7 #以官方提供的centos:7作为基础镜像
MAINTAINER javaxl "[email protected]" #标注是谁做的
RUN yum -y install vim #run 后面+自己所要下载的命令
RUN yum install net-tools.x86_64 -y
CMD /bin/bash #进入容器中的命令
(copy下面的)
FROM centos:7
MAINTAINER javayuyan "[email protected]"
RUN yum -y install vim
RUN yum install net-tools.x86_64 -y
CMD /bin/bash
构建镜像
docker build -f mycentosDockerfile -t javayuyan/centos:v1.0 .
在构建镜像的时候博主遇到了关于网络方面的问题,如下:
上面显示的是在下载 yum -y install vim 命令的时候中断的,于是我判断过yum源是否为最新,判断虚拟机网络配置时,是否忽略了使用vi编辑ifcfg-ens33、容器问题等等
后来发现都不是的,最终我在 大佬 **水步天 **的博客[WARNING]: IPv4 forwarding is disabled. Networking will not work中找到了解决办法
大佬博客中提到:修改配置文件
vi /usr/lib/sysctl.d/00-system.conf
在文末追加
net.ipv4.ip_forward=1
然后重启网络
systemctl restart network
其原因为大佬所发的:(如果遇到同样问题的小伙伴,如果也帮助到了你可以去大佬博客点点赞)
创建镜像完成:
由于之前下载报错了,所以会有安装失败的文件
删除:docker rmi -f +ID
通过镜像运行一个容器进行测试
docker run -it --name mc1 javaxl/centos:v1.0 /bin/bash
Dockerfile制作自定义tomcat
docker ps 查看还在运行的tomcat
使用它进行网页访问
发现非自定义的tomcat不可外部访问
于是我们自定义tomcat
cd /javayuyan/software
mkdir mydocker
vi mytomcatDockerfile
向 mytomcatDockerfile 编辑内容
FROM centos:7 ** #基于系统镜像**
MAINTAINER javayuyan "javayuuyan@qq.com" ** #注释**ENV workerDir /home/javayuyan/dockerfile/3 ** # 默认容器跳指定的工作目录**
WORKDIR $workerDir #引用了上面的变量ADD jdk-8u151-linux-x64.tar.gz $workerDir #将jdk压缩包添加到工作目录并进行解压
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:$PATHEXPOSE 8080 ** #开放端口**
ENTRYPOINT ["/home/javayuyan/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"] #执行的命令
FROM centos:7
MAINTAINER javayuyam "[email protected]"
ENV workerDir /home/javayuyan/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/javayuyan/dockerfile/3/apache-tomcat-8.5.20/bin/catalina.sh","run"]
先创建一个mytomcatDockerfile文件,将命令中所需要的压缩包cp进去
再进行自定义镜像的创建:
通过镜像运行2个容器进行测试
docker run -di --name mt1 -P javayuyan/tomcat8:v1.0
docker run -di --name mt2 -P javayuyan/tomcat8:v1.0
今天的分享就到这里,下次再见!
版权归原作者 南山 有谷堆 所有, 如有侵权,请联系我们删除。