贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。这篇文章主要讲述#云原生征文# docker数据卷与DockerFile学习相关的知识,希望能为你提供帮助。
其实也不难理解和我们上一篇讲的端口映射很相似,因为容器与宿主机之间都是相互隔离的。而端口映射则是在两个互相隔离体之间构建通道,使其可以进行通讯共享。数据卷也是这种意思,但是数据卷不会因为容器的死亡而消失,只要还有一个容器或宿主机与其进行绑定,那么数据卷的内容就不会丢失。
数据卷
一. 直接命令挂载在宿主机目录
(1). 测试nginx当我们的两个目录进行挂载之后,就相当于共用一个目录,不管哪边发送改变目录的内容都会发生改变,这样的话我们只需在宿主机这边的目录进行操作,那么容器内的该目录也会发生相应的变化。就像我上篇文章所进行的cp操作就可以省去,并且当我需要更新版本时也只需在宿主机这边进行操作即可。下面我以nginx进行测试,挂载上自己自定义的网页。

文章图片
这里我自己网页是放在/var/www/html里,接下来我需要挂载到nginx容器里的html文件夹下。

文章图片
可以看到已经运行起来了访问也通了,让我们看看网页行不行

文章图片
ok也是没问题了。这里我们还能通过
docker inspect 容器id
查看详细信息。
文章图片
这里可以看到确实是挂载成功了。可以看到当我们使用
-v
时很容易就将自己的本地目录网页放在了容器里,到这里其实就已经可以说明现在这两个目录实际上已经共用同一个目录了,并且就算我将这个容器删除,里面的内容也依旧是保留的。(2). 测试mysql我这用mysql:5.7版本演示,首先
docker pull mysql:5.7
,当然这里我先去官网看了一下。我这里还是建议大家直接先去官方进行查询学习。
文章图片
但是为了挂载目录方便管理,这里我们需要对该命令进行修改。

文章图片
接下来我们去测试一下是否联通了。

文章图片

文章图片
可以看到已经成功了!我们在navicat加一个表看看服务器上是否会有。

文章图片

文章图片
这样我们就完成了MySQL容器的数据持久化。就算我们将容器进行删除,数据库中的数据也将获得保存
二. 匿名挂载和具名挂载下面我来给大家逐一展示,这里我就用
-P
随机指定端口了因为我8080端口跑着匿名

文章图片
具名

文章图片

文章图片
顺便补充一下

文章图片

文章图片
看到这这幅图就很好理解了。一般建议用
具名挂载
这里我以nginx进行演示,先启动一个带有数据卷的容器作为父容器,我这把它命令为docker01

文章图片

文章图片
好的第一个容器已经做好了,接下来做第二个

文章图片
我们可以去home目录验证一下是不是已经存在volume01文件夹

文章图片
我们在这新建一个文件,
touch helloDocker.py
然后去docker01看看是不是已经共享了。
文章图片
可以看到成功了。
DockerFile
- DockerFile:构建文件,定义了镜像如何生成已经所需的文件等等配置。
- DockerImages: 通过DockerFile层层生成的最终镜像。最终发布和运行的产品
- DockerContainer: 容器是镜像运行起来的服务,也是一个可写层。

文章图片

文章图片
[root@VM-0-3-centos ~]# cd dockerFile/
[root@VM-0-3-centos dockerFile]# vim docker-test-cmd
[root@VM-0-3-centos dockerFile]# cat docker-test-cmd
FROM centos
CMD ["ls","-a"]

文章图片
这样我们就创建好了一个dockerfile,很简单的一个dockerfile,这个的意思就是当我们运行这个镜像的时候自动
ls -a
。我们接下来用build
命令来创建镜像。下载完用xftp上传上去就行。

文章图片
接下来就可以编写Dockerfile文件了
FROM centos:centos7
MAINTAINER Aasee<
xxx@qq.com>
COPY readme.txt /usr/local/readme.txt#导入压缩包会自动解压
ADD apache-tomcat-9.0.63.tar.gz /usr/local/
ADD jdk-8u333-linux-x64.tar.gz /usr/local/#安装vim
RUN yum -y install vim#设置工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH#jdk环境配置
ENV java_HOME /usr/local/jdk1.8.0_333
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#tomcat环境配置
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.63
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.63#配置path环境
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#暴露端口
EXPOSE 8080# 启动tomcat和打印日志
CMD /usr/local/apache-tomcat-9.0.63/bin/startup.sh &
&
tail -F /usr/local/apache-tomcat-9.0.63/logs/catalina.out

文章图片

文章图片

文章图片

文章图片
接下来就可以run起来了

文章图片
可以看到运行成功并且也挂载成功了。访问页面看看

文章图片

文章图片
日志也能查看了。

文章图片

文章图片
可以看到已经成功了

文章图片

文章图片
web.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<
/web-app>

文章图片

文章图片
index.html
<
!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8">
<
title>
Hello world<
/title>
<
/head>
<
body bgcolor="F6F3D6">
<
!--用HTML语言向世界打声招呼吧!-->
Hello World
<
p align="center">
Aasee-Docker<
/p>
<
/body>
<
/html>
接着我们去看看页面的效果吧

文章图片

文章图片
欧克了。
push到仓库保存当我们做好镜像之后要怎么给别人使用呢,有两种方法一种是打包到本地然后发给别人,另一种是上传到docker官方仓库或者是阿里云,腾讯云等这些大厂的官方仓库。但是由于docker官方仓库节点在国外,速度时好时坏的,而且操作都差不多,这里就以阿里云为例子(腾讯云相同操作)。
首先先登录阿里云。
直接搜索容器镜像服务,我们个人测试使用就直接用个人版就行,然后根据提示创建命令空间再创建镜像仓库选择本地仓库之后就可以看到push的教程了。

文章图片
这些内容就大家自己去看了。官方的命令很详细了。根据官方的命令我们就能很容易得将镜像推送到官方仓库。

文章图片
补充【#云原生征文# docker数据卷与DockerFile学习】

文章图片
像这样
推荐阅读
- 代码实现MNLM | word embedding开山之作
- 图分析的22种算法与图形理解
- 大厂是怎么实践装饰器模式的()
- 跳过Maven 打包时的测试,如何跳过Maven 打包测试
- 安装Qt Creator后,创建项目时出现“No valid kits found”
- 领歌敏捷协作——创建看板
- HOG+SVM实现行人检测 行人检测(带hard样本)
- 领歌敏捷协作——添加泳道,列表和快速移动技巧
- HOG+SVM实现行人检测 寻找hardexample