一.数据卷的作用
用来实现容器与宿主机之间或容器与容器之间的数据共享
对于一些容器我们我往往需要经常的修改配置文件,频繁的进入容器显得很麻烦。
对于容器(mysql)中的数据,我们希望可以持久化到本地,作为一种备份。
二.数据卷特点
数据卷可以在容器之间共享和复用
对数据卷的修改会立即影响到对应容器
对数据卷的修改不会影响镜像
数据卷一直存在,即使容器被删除
实例1:
1.创建数据卷目录
mkdir /root/apps
2.运行Tomcat容器,并挂载数据卷到网页根目录
docker run -d -p 8081:8080 --name tomcat1 \ -v /root/apps:/usr/local/tomcat/webapps tomcat
3.访问测试
4.追踪查看容器日志,修改数据卷内容,看日志变化
docker logs -f tomcat1 cd /root/apps mkdir ROOT echo "
www.tomcat.com
" > /root/apps/ROOT/index.html
5.数据卷容器共享,并设置容器内目录只读
docker run -d -p 8082:8080 --name tomcat2 \ -v /root/apps:/usr/local/tomcat/webapps:ro tomcat
三.数据卷操作
1.自定义数据卷目录
docker run -v 本地目录路径:容器内路径
2.自动创建数据卷
docker run -v 数据卷名(自动创建):容器内路径
3.常用数据卷命令
查看数据卷
docker volume ls
创建数据卷
docker volume create data_vo1
查看某个卷详情
docker volume inspect data_vo1
删除数据卷
docker volume rm 数据卷名
删除未用的数据卷
docker volume prune
4.实例演示
具名挂载:
docker run -d -p 8083:8080 --name tomcat3 \ -v data_vo1:/usr/local/tomcat/webapps tomcat ls /var/lib/docker/volumes/data_vo1/_data
匿名挂载:
docker run -d -p 8084:8080 --name tomcat4 \ -v /usr/local/tomcat/webapps tomcat =======================================
实例2:数据卷挂载mysql
1.下载mysql5.7镜像
docker pull mysql5.7
2.启动mysql容器,映射端口、设置密码、挂载自动数据卷
docker run -itd --name mysql1 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-v mysqldata:/var/lib/mysql mysql:5.
3.连接数据库,创建测试表
4.删除mysql1容器
docker stop mysql1
docker rm mysql1
5.查看数据卷是否还有数据
ls /var/lib/docker/volume/mysqldata/_data
6.新建容器,复用旧数据卷
删除所有容器
docker rm -f $(docker ps -aq)
docker run -itd --name mysql1 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123.com \
-v mysqldata:/var/lib/mysql mysql:5.7
7.连接数据库,查看旧数据表是否存在
8.再新建容器,以修改后的配置文件启动
删除所有容器
docker rm -f $(docker ps -aq) docker run -itd --name mysql1 -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123.com \ -v mysqldata:/var/lib/mysql \ -v mysqlconf:/etc/mysql mysql:5.7 =======================================
Dockerfile挂载数据卷
1.创建目录
mkdir /root/data_volume
cd /root/data_volume
2.创建Dockerfile
vim Dockerfile FROM centos:7 VOLUME ["volume01","volume02"] CMD echo "---end---" CMD /bin/bash
3.构建镜像
docker build -t testvolume .
4.启动容器
docker run -itd --name testvolume1 testvolume /bin/bash
5.查看测试数据卷
数据卷容器:容器间数据双向同步共享
1.创建两个容器,数据卷共享testvolume1
docker run -itd --name testvolume2 --volumes-from testvolume1 testvolume
docker run -itd --name testvolume3 --volumes-from testvolume1 testvolume
2.进入容器,测试共享
docker exec -it testvolume2 /bin/bash cd volume1 touch test2 docker exec -it testvolume3 /bin/bash cd volume1 ls touch test3
3.关闭testvolume1,查看数据是否在
Elasticsearch + Kibana
一 安装Elasticsearch
1.下载ES镜像
docker pull elasticsearch:7.7.1
2.运行镜像
docker run -itd --name es1 -p 9200:9200 -p 9300:9300 \ -v esdata:/usr/share/elasticsearch/data \ -v esconfig:/usr/share/elasticsearch/config \ -v esplugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" elasticsearch:7.7.1
3.安装ik分词器插件
docker inspect esplugins cd /var/lib/docker/volumes/esplugins/_data mkdir ik cd ik 上传elasticsearch-analysis-ik-7.7.1.zip unzip elasticsearch-analysis-ik-7.7.1.zip docker restart es1
二.安装在kibana,并连接到ES
1.下载kibana镜像
docker pull kibana:7.7.1
2.运行容器
docker run -itd --name kibana1 -p 5601:5601 \ -e ELASTICSEARCH_HOSTS=http://192.168.8.10:9200 kibana:7.7.1
3.访问kibana,测试分词器
Dev tools GET _analyze { "analyzer": "ik_max_word", "text": ["中华人民共和国"] }
三 另开一台虚拟机安装nginx,并通过filebeat收集日志到es
yum -y install nginx
systemctl start nginx
复制filebeat7.7.1到虚拟机/root
cd /root rpm -ivh filebeat-7.7.1-x86_64.rpm vim /etc/filebeat/filebeat.yml
添加:
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log output.elasticsearch: hosts: ["192.168.8.10:9200"] 保存退出 systemctl start filebeat ==================================
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。
Spring Boot目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
1.开发springboot微服务
2.对springboot应用程序进行打包
war 过渡 tomcat
jar 主流 jdk
3.打包项目
aliyun-sdk-oss-2.6.1.jar
4.在服务器中创建Dockerfile目录
mkdir /root/springboot 上传jar包到 /root/springboot vim Dockerfile FROM openjdk:8-jre WORKDIR /app ADD aliyun-sdk-oss-2.6.1.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar"]
5.构建镜像
docker build -t app1 .
6.运行容器
docker run -d -p 8081:8080 --name apptest app1 ==================================
Node.js
是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个让 JavaScript 运行在服务端的开发平台。
1.拉取 node 镜像
docker pull node
2.查看本地镜像
docker images
3.运行容器
docker run -itd --name node-test node
4.进入查看容器
docker exec -it node-test /bin/bash
node -v