Docker-数据卷、网络、dockerfile、挂载

目录

一、数据卷

二、MySQL数据

三、具名和匿名挂载

1、匿名挂载

2、具名挂载

3、指定挂载

四、Dockerfile

1、数据卷容器

2、dockerfile构建步骤

五、数据卷容器

1、实现多个容器之间数据共享

2、多个mysql之间共享数据库

六、Docker网络

1、Docker0

1、查看容器IP

2、evth-pair技术

4、自定义网络

创建网络

使用自己创建的网络,创建容器,同网段之间的连通

跨网段互通


一、数据卷

镜像运行就会产生容器,容器停止,程序停止,程序内的数据消失,所以需要使用数据卷来保存数据,避免容器停止数据消失。

数据卷:目录挂载,即将容器上的目录挂在到宿主机上。用于容器数据持久化和容器之间数据共享

-v 宿主机目录:容器目录

二、MySQL数据

mysql启动前需要配置密码

docker run    -d -p 3306:3306 --name mysql5.7 -it  -e MYSQL_ROOT_PASSWORD=123456       #配置root用户给的密码为123456-v ./mysql/conf:/etc/mysql/conf.d   #配置文件数据卷映射-v ./mysql/data:/var/lib/mysql      #数据持久化数据卷映射mysql:5.7

三、具名和匿名挂载

1、匿名挂载

docker -v /var/lib/mysql/data

在-v时,只声明了容器的路径,没有声明宿主机的路径,就为匿名挂载

系统会宿主机的路径

2、具名挂载

docker -v mysqljuming:/var/lib/mysql/data

在-v时,声明的宿主机不是路径,而是一个字符串。

无论是匿名挂载还是具名挂载,其数据卷安装的路径都在/var/lib/docker/volumes/xxxx

命令:

docker volumes inspect 具名   #查看具名挂载的数据卷路径

3、指定挂载

docker -v /home/mysql:/var/lib/mysql/data

四、Dockerfile

Dockerfile用来构建镜像的构建文件

1、数据卷容器

创建数据卷Dockerfile文件,编写代码,保存

FROM tomcat
VOLOMU ["volume1","volume2"]
CMD echo "hello"

构建dockerfile文件

docker build -f /home/dcokerfile1  #dockerfile源文件路径-t tomcatfile         #dockerfile构建的镜像名

2、dockerfile构建步骤

1、编写一个dockerfile文件

2、构建docker build

3、运行docker run

4、发布 docker push(发布到docker hub、阿里云镜像库)

CMD :程序的启动入口程序,程序启动时,如果追加了其他命令,那么就会将dockerfile中的CMD命令替换掉

ENTRYPOINT:程序启动时,可以在追加其他命令,误会替换

查看docker build过程:

docker history 镜像ID

五、数据卷容器

1、实现多个容器之间数据共享

docker run --name mysql01 mysql:5.7  #启动容器musql1
docker run --name mysql02-volumes-from musql01   mysql:5.7 # -volumes-from,01作为父容器,02作为子容器,02共享01内的数据卷

数据共享,即使父容器镜像关闭,子容器的共享数据卷依旧存在。子父容器之间共享数据卷是一个双向复制的概念。

2、多个mysql之间共享数据库

docker run -d --name mysql01 -it -e MYSQL_ROOT_PASSWORD=123456 -v /etc/mysql/conf.d -v /var/lib/mysql mysql:5.7
docker run -d --name mysql02 -p 3307:3306 --volume-from mysql01 mysql:5.7

容器的生命周期一直持续到没有容器使用为止,所以容器之间的数据卷,只有所有的容器都关闭,共享的数据卷才会丢失。但是如果共享的数据卷同步到宿主机,那么所有的数据就会永久保存。

六、Docker网络

1、Docker0

docker如何处理容器网络互访?

1、查看容器IP
docker inspect ID

在这里查看容器ip

2、evth-pair技术

docker每启动一个容器,就会在宿主机上出现一个接口IP,同时每一个容器里面也会有一个接口IP,ecth-pair技术就相当一个桥梁,链接各个虚拟设备;

docker每一次启动都会非容器重新分配IP,在使用时,如果我们吧IP地址写死,那么就失去了高可用性,为了解决这个问题,引入--link这个技术。

--link建立两个容器之间的链接,可以通过容器名 进行ping

docker run -d --name tomcat03 --link tomcat02 tomcat
docker exec -it tomcat03 ping tomcat02

通过容器名可以实现互访

只能tomcat03ping通tomcat02,02ping不通03

docker exec -it 容器名 cat /etc/hosts

4、自定义网络

查看所有的docker网络

docker network ls

docker网络模式

bridge:桥接模式

none:不配置网络

host:与宿主机共享网络

container:容器网络连通

创建网络
docker network create --driver bridge            #桥接模式创建网络--subnet 192.168.0.0/16    #网络号--gateway 192.168.0.1      #网关mynet                      #网络名
使用自己创建的网络,创建容器,同网段之间的连通
docker run -d --name tomcat-net-01 --network mynet tomcat
docker run -d --name tomcat-net-02 --network mynet tomcat

查看自定义网络下的容器

docker network inspect mynet

自定义网络是可以实现容器之间,使用容器名互通。

不同的集群使用不同的网络,保证网络的健康。

跨网段互通

docker network connect tomcat01 mynet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bpmn-js系列之Palette

前边写了四篇文章介绍了bpmn.js的基本使用,最近陆续有小伙伴加我催更,感谢对我这个半吊子前端的信任,接着更新bpmn.js的一些高级用法,本篇介绍对左侧工具栏Palette的隐藏和自定义修改 隐藏shape 左侧工具栏Palette有些图标我用不…

MATLAB:一些杂例

a 2; b 5; x 0:pi/40:pi/2; %增量为pi/40 y b*exp(-a*x).*sin(b*x).*(0.012*x.^4-0.15*x.^30.075*x.^22.5*x); %点乘的意义 z y.^2; %点乘的意义 w(:,1) x; %组成w,第一列为x w(:,2) y; %组成w,第二列为y w(:,3) z; %组成w,第三列为z…

MySQL一些命令记录

查看数据引擎 show engines;创建数据库,并选择库 CREATE DATABASE IF NOT EXISTS test_database; USE test_database;创建表 CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY,field1 VARCHAR(50),field2 VARCHAR(50),field3 VARCHAR(50),field4 …

2024最新注册谷歌账号(Gmail邮箱),解决此号码无法用于验证的方法,亲测有用!

我们知道,拥有一个谷歌账号/Gmail邮箱注册在全球互联网冲浪时会比较方便。但不少人在注册过程中,遇到了“此号码无法用于验证”的问题,如图: 有些人可能会认为是因为国内的手机号才没办法用于验证的,这简直是在胡说&am…

续上篇 qiankun 微前端配置

上篇文章地址:微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客 主应用: src/main.js 配置: import Vue from vue import App from ./App.vue import router from ./router import { registerMicroApps, start } …

云计算与APP开发,如何利用云端服务提升应用性能?

随着移动应用程序(APP)的普及,如何提升应用性能成为了开发者们关注的重点之一。而云计算技术的发展为APP开发者提供了全新的解决方案。本文将探讨云计算与APP开发的结合,以及我们公司提出的解决方案,帮助开发者利用云端…

使用阿里云服务器查看网站备案的方法和注意事项

随着互联网的发展,网站注册已成为在中国建设网站的必要步骤。 在使用阿里云服务器时,我们可以通过以下步骤查看网站注册状态。 备案概述: 在中国,互联网信息服务提供者必须进行登记,以监管互联网内容、规范市场运营和…

3.14号arm

1. 计算机基础理论 1.1 计算机的组成 输入设备:将数据转换成计算机可以识别,存储,处理的形式,发送到计算机中 输出设备:将计算机对程序和数据的运算结果输送到外部的设备 存储器:用于将数据保存的模块。 …

phy接口不用网络变压器

phy接口不用网络变压器 Hqst华强盛导读:网络变压器的作用原理是基于电磁感应的原理。当电流通过一个线圈时,会产生一个磁场。如果将另一个线圈放置在这个磁场中,磁场就会穿过另一个线圈,从而在另一个线圈中产生电流。这个过程被称…

识别和定位 - 实现工业自动化及生产数字化,推动现代工业4.0

工业4.0的定义 工业 4.0 是指将智能数字化技术集成到制造和工业流程,包括工业物联网网络、人工智能、大数据、机器人和自动化等一系列技术。工业 4.0 能帮助企业实现智能制造,建立智能工厂,目标是提高生产力、效率和灵活性,同时在…

vue2之过滤器

过滤器 过滤器的实现类似Django的过滤器。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>过…

程序人生——Java数组和集合使用建议(1)

目录 引出数组和集合建议60&#xff1a;性能考虑&#xff0c;数组是首选建议61&#xff1a;若有必要&#xff0c;使用变长数组建议62&#xff1a;警惕数组的浅拷贝 建议63&#xff1a;在明确的场景下&#xff0c;为集合指定初始容量建议64&#xff1a;多种最值算法&#xff0c;…