docker 基本操作Ⅲ
1 数据卷备份恢复
- 我们一般用的最多的是把容器和本地宿主机做目录映射直接存在本地,但是还有一种就是数据卷的备份与恢复,如下就来介绍:
先来一副图来了解一下数据卷的恢复与备份
宿主机也就是我们的服务器分享一个/data/backup/ 目录,本地的这个backup目录和新建容器内的backup相互映射,而我们现在的新建容器挂载了数据卷容器的/data/ 也就是意味着数据卷的data目录和容器的data目录数据是一致的,现在两两互通,下面也就是把新建容器中的data目录中的数据copy到backup中就可以了!这样就完成了真实的备份!
- 备份(本地创建备份目录)
1 2 3 | mkdir /data/backup docker run --volumes-from testvol - v /data/backup/ : /backup centos tar cvf /backup/data . tar /data/ 说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的 /data/backup/ 目录挂载到该容器的 /backup 下,这样在容器中 /backup 目录里面新建的文件,我们就可以直接在 /data/backup/ 目录中看到了。 然后再把 /data/ 目录下面的文件打包到成data. tar 文件放到 /backup 目录下面。 |
恢复:
- 思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。
1 2 | docker run -itd - v /data/ --name testvol2 centos bash 新建数据卷容器 docker run --volumes-from testvol2 - v /data/backup/ : /backup centos tar xf /backup/data . tar // 挂载数据卷新建容器,并解包 |
2 Docker网络模式
- host模式,使用docker run时使用--net=host指定docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机ip
- container模式,使用--net=container:container_id/container_name多个容器使用共同的网络,看到的ip是一样的
- none模式,使用--net=none指定这种模式下,不会配置任何网络
- bridge模式,使用--net=bridge指定默认模式,不用指定默认就是这种网络模式。这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式。同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的。
- 现在我们默认使用的是bridge,容器本身和外部是不能通信的,那我们怎么让容器与外界通信呢?如下来介绍怎么访问外部
首先使用centos镜像新建一个容器,然后在该容器中安装nginx服务,并启动
[root@chy ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08dd3d386d00 centos7 "bash" 3 seconds ago Up 3 seconds pensive_brattain
[root@chy ~]# docker exec -it 08dd3d386d00 bash //进入容器
[root@08dd3d386d00 /]# yum install -y epel-release
//需要先安装epel扩展源
[root@08dd3d386d00 /]# yum install -y nginx //开始安装nginx
[root@08dd3d386d00 /]# systemctl start nginx //启动nginx,启动是出现了一个报错
Failed to get D-Bus connection: Operation not permitted
这个是这是因为dbus-daemon没有启动,解决该问题可以这样做
[root@chy ~]# docker rm -f 794b4d5ed700
794b4d5ed700
先删除这个容器之后在启动容器
[root@chy ~]# docker run -itd --privileged -e "container=docker" -p 808:80 centos7 /usr/sbin/init //启动容器时,要加上--privileged -e "container=docker" ,并且最后面的命令改为/usr/sbin/init
5896f605586a5697f5bd8e8ae16e207f6716a70adf1c422c2da8909a2496c8df
[root@5896f605586a /]# systemctl start nginx //启动nginx时就没有问题了
[root@08dd3d386d00 /]# rpm -qa nginx //查看nginx的rpm包
nginx-1.10.2-2.el7.x86_64
2 再把该容器导成一个新的镜像(centos_nginx),然后再使用新镜像创建容器,并指定端口映射。
1 2 3 4 5 6 7 8 | [root@chy ~] # docker commit -m "install nginx" -a "chylinux" 08dd3d386d00 centos7 //将容器导成镜像 sha256:8170b76bc6a875bebfa1860dcc3ad9bade4640e0dc73421bcd30ebe80bc1f973 [root@chy ~] # docker images //查看成功 REPOSITORY TAG IMAGE ID CREATED SIZE centos7 latest 8170b76bc6a8 About a minute ago 569MB [root@chy ~] # docker run -itd -p 808:80 centos7 bash -p 可以指定端口映射,本例中将容器的80端口映射为本地的808端口(这里是容器的端口映射为本地的端口,本地的端口自定义即可) 794b4d5ed700cfaffa0cbe6e8755cbf1b072e0b298e8ade609b6accd6430cb9e [root@chy ~] # curl localhost:808 本地可以访问了 |
测试外部机器访问内部的容器
1 | [root@chy01 ~] # curl 192.168.212.10:808 //访问成功 |
3 配置桥接网络
- 为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求。这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | [root@chy ~] # cd /etc/sysconfig/network-scripts/ [root@chy network-scripts] # cp ifcfg-ens33 ifcfg-br0 [root@chy network-scripts] # vi ifcfg-br0 TYPE=Bridge // 将这个变为bridge BOOTPROTO=static DEFROUTE= yes PEERDNS= yes PEERROUTES= yes IPV4_FAILURE_FATAL=no IPV6INIT= yes IPV6_AUTOCONF= yes IPV6_DEFROUTE= yes IPV6_PEERDNS= yes IPV6_PEERROUTES= yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=br0 // 改为网卡的名称 UUID=9921878c-a733-4564-8737-ee6af48d5015 DEVICE=br0 // 改为网卡的名称 ONBOOT= yes IPADDR=192.168.212.10 NETMASK=255.255.255.0 GATEWAY=192.168.212.2 DNS1=119.29.29.29 [root@chy network-scripts] # vi ifcfg-ens33 //之后在编辑ens33 TYPE=Ethernet BOOTPROTO=static DEFROUTE= yes PEERDNS= yes PEERROUTES= yes IPV4_FAILURE_FATAL=no IPV6INIT= yes IPV6_AUTOCONF= yes IPV6_DEFROUTE= yes IPV6_PEERDNS= yes IPV6_PEERROUTES= yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 #UUID=9921878c-a733-4564-8737-ee6af48d5015 //需要注释 DEVICE=ens33 ONBOOT= yes #IPADDR=192.168.212.10 //需要注释 #NETMASK=255.255.255.0 //需要注释 #GATEWAY=192.168.212.2 //需要注释 #DNS1=119.29.29.29 //需要注释 BRIDGE=br0 增加刚修改的ifcfg-br0 [root@chy network-scripts] # systemctl restart network //重启网卡 [root@chy network-scripts] # ifconfig //查看到用的是一个网卡(即ens33与bro用的一个网卡) br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.212.10 netmask 255.255.255.0 broadcast 192.168.212.255 inet6 fe80::4228:9a24:3718:ba9e prefixlen 64 scopeid 0x20<link> ether 00:0c:29:70:77:62 txqueuelen 1000 (Ethernet) RX packets 36 bytes 3544 (3.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 28 bytes 2456 (2.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:77ff:fe70:d168 prefixlen 64 scopeid 0x20<link> ether 02:42:77:70:d1:68 txqueuelen 0 (Ethernet) RX packets 3 bytes 96 (96.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 11 bytes 806 (806.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
- 安装pipwork
pipework是由Docker的工程师Jérme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用.
1 2 3 4 5 6 7 8 9 10 11 12 | [root@chy ~] # git clone https://github.com/jpetazzo/pipework [root@chy ~] # cd pipework/ 进入到目录下 [root@chy pipework] # cp pipework /usr/local/bin/ [root@chy pipework] # docker run -itd --net=none centos7 bash //启动一个容器 a9655415cca39879f21d51ca8a658aeb2d66ba3d6f9cb35cf81fa7d0cc00f308 [root@chy pipework] # docker exec -it a96554 bach //进入容器 [root@a9655415cca3 /] # ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1 /8 scope host lo valid_lft forever preferred_lft forever 查看没有地址,现在来配置一个Ip地址 |
pipwork配置ip地址并且测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [root@chy pipework] # pipework br0 a9655415cca3 192.168.212.18/24@192.168.212.2 // br0是网卡的名称,后面是容器的名字(id也可以)后面跟给容器设置的ip地址与子网掩码,@后面跟的是网关 [root@chy pipework] # docker exec -it a96554 bash [root@a9655415cca3 /] # ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1 /8 scope host lo valid_lft forever preferred_lft forever 14: eth1@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link /ether 46:6f:8b:5b:28:17 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.212.18 /24 brd 192.168.212.255 scope global eth1 valid_lft forever preferred_lft forever 如上已经查看到有设置的ip地址 [root@a9655415cca3 /] # ping baidu.com //在容器中是可以 PING baidu.com (220.181.57.217) 56(84) bytes of data. 64 bytes from 220.181.57.217: icmp_seq=1 ttl=128 time =5.57 ms 64 bytes from 220.181.57.217: icmp_seq=2 ttl=128 time =5.69 ms 现在来进行测试,用一台chy01的机器测试 [root@chy01 ~] # ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.212.11 netmask 255.255.255.0 broadcast 192.168.212.255 inet6 fe80::243b:ddac:7a2b:a5b prefixlen 64 scopeid 0x20<link> ether 00:0c:29:13:b3:3b txqueuelen 1000 (Ethernet) RX packets 96358 bytes 6128391 (5.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 11801 bytes 742577 (725.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@chy01 ~] # ping 192.168.212.18 PING 192.168.212.18 (192.168.212.18) 56(84) bytes of data. 64 bytes from 192.168.212.18: icmp_seq=1 ttl=64 time =1.17 ms 64 bytes from 192.168.212.18: icmp_seq=2 ttl=64 time =0.452 ms 64 bytes from 192.168.212.18: icmp_seq=3 ttl=64 time =0.584 ms (如上用其它的机器也可以 ping 通) |
这个就是咱们使用pipework软件所搭建起来的bridge模式,当然,这种模式才是真正的网桥模式,官方的bridge模式我认为就是虚拟机下面的NAT模式!
希望看过的童鞋多多指教,谢谢!
本文转自我不是瘦子51CTO博客,原文链接:http://blog.51cto.com/chy940405/1982433,如需转载请自行联系原作者
相关文章:

jquery操作mysql_使用jQuery从数据库访问对象
[{“日期”:“2019-02-10”,“诉状”:1},{“日期”:“2019-02-12”,“诉状”:1},{“日期”:“2019-02-14”,“诉状”:1}]我可以通过Jquery代码轻松地访问它// AJAX Request to get the data by UserID and Week 1$.get(/dashboard/performance?name document.getElementById(…

中国AI专利申请量超美国,百度居国内首位
整理 | 非主流本文数据来自《人工智能技术专利深度分析报告》随着人工智能成为新一轮科技革命和产业变革的重要驱动力量,AI 成为科技企业研发重点,专利申请量也在逐年提升。中国专利保护协会近日发布的《人工智能技术专利深度分析报告》显示,…

MySQL数据库中文模糊检索问题
我在这里谈一下 MYSQL的中文模糊搜索。我的MYSQL版本。version()5.1.22-rc-community-log这里用到的表:Table Create Table ------ -------------------------------------------------------a1 CREATE TABLE a1…

最新Python学习项目Top10!
作者 | Mybridge译者 | Linstancy整理 | Jane出品 | AI科技大本营【导读】过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项目。这份清单涵盖了包括Web App, Geospatial Data, Time Paradox, Testing in Python, Crash repor…
理解HTTP消息头【很完整,例子也很丰富】
(一)初识HTTP消息头 但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过Socket编程的人都知道,当我们设计一…

css样式分类
1.内联式(直接在标签里写属性,属性名为style) 2.内嵌式 (直接嵌入到head标签里面,以标签形式出现,标签名为style) 选择器:用来选择标签 1:用标签选择 2:用ID选择 关键符…

hadoop mysql mybatis_MyBatis简介与配置MyBatis+Spring+MySql
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言…

MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
### 第3篇:MySQL基本操作语句- MySQL基础操作#### 排序检索数据- 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的- SELECT语句的ORDER BY 子句进行排序mysql# 没有特定的顺序查询 (虽然结果看起来是有序的,是因为数据表中就是这…

如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践
作者 | Jeremy Hermann & Mike Del Balso 译者 | 王天宇 整理 | Jane 出品 | AI科技大本营 【导读】2017年9月,Uber 在技术社区发表了一篇文章向大家介绍了 Uber 的机器学习平台 —— Michelangelo。随着平台的日渐成熟,Uber 的业务数量与能力也随…

Api 函数: GetCursorPos 与转换
//获取鼠标在窗体中的当前位置 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); varstr: string; beginstr : Format(%d,%d,[X,Y]);ShowMessage(str); end;//用 GetCursorPos 获取的是鼠标相对与屏幕的位置 varps:…

向下滚动页面导航悬浮
为什么80%的码农都做不了架构师?>>> 做两个导航,第二个隐藏 下拉到一定位置,显示第二个,position:fixed $(function(){$(window).scroll(function () {var top $(document).scrollTop();var m$(".nav")…

胜过iPhone XS?Google Pixel的“夜视功能”是怎样炼成的
作者 | Marc Levoy、Yael Pritch译者 | 刘旭坤整理 | Jane出品 | AI科技大本营【导读】随着智能手机的不断发展成熟,为了寻找差异化的厂商不断增加摄像头的数量。然而,摄像头的数量越多,就代表拍照的质量越好吗?Google Pixel 手机…

npm导入bootstrap_vue cli3.0如何通过npm引入jquery和bootstrap?
不建议通过npm的方式引入这两个东西,因为这两个东西本身就是打包好的,通过npm的方式过去,还得在webpack中排除掉,迂回。要用就直接在html中通过script和link标签引入。jQuery是时代的产物,如果要用到vue,那…

ABAP 一个隐藏 selection-screen block的实例
以下是一个演示如何通过 selection-screen 中的pushbutton来动态改变屏幕上的字段的显示状态的(即显示或者隐藏)。注意:显示 通过本示例可知selection-screen 中的 field 的显示状态都是 的,在程序中修改其属性 active 的值为 0 时…

python计算文件中字母出现次数_python – 计算文本文件中字母的频率
使用collections.Counter():from collections import Counterwith open(file) as f:c Counter()for x in f:c Counter(x.strip())正如mgilson指出的那样,如果文件不是那么大,你可以简单地做:c Counter(f.read().strip())例:>>> c…

公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用
近年来,在深度学习技术的帮助下,语音识别取得了极大的进展,从实验室开始走向市场,走向实用化。基于语音识别技术的输入法、搜索和翻译等人机交互场景都有了广泛的应用。Librispeech是当前衡量语音识别技术的最权威主流的开源数据集…

Ruby开发环境配置
一、 RoR IDE http://deadlock.netbeans.org/hudson/job/ruby/ 你可以从这个地方下载Ruby IDE专用版本的netbeans,只有30MB大小,速度比RadRails还快!netbeans的RoR支持很强大,但也要注意两点: 1) 一定要用JDK6.0&am…

net localgroup 命令详解
http://www.jb51.net/article/24733.htm windows 核心安装中,关闭防火墙的命令 netsh advfirewall set allprofiles state off Hyper-v使用远程管理工具的相关设置: http://technet.microsoft.com/zh-cn/library/cc794756(vws.10).aspx 在SCVMM中添加Hyp…

ii 第七单元 访问网络共享文件系统
挂载网络文件系统 网络文件系统是由网络附加存储服务器通过网络向多个主机提供的一种文件系统 , 而不是由块设备 ( 例如硬盘驱动器 ) 提供的。客户端通过特殊的文件系统协议和格式访问远程存储 Linux 中有两种主要协议可用访问网络文件系统 : NFS 和CIFS 。 访问网络共享的三个…

最新机器学习开源项目Top10
作者 | Mybridge译者 | Linstancy整理 | Jane出品 | AI科技大本营【导读】过去一个月里,我们对近 1400 个机器学习项目进行了排名,并挑选出热度前 10 的项目。这份清单涵盖了包括 OpenAI 最新开发的 RND 算法、Uber 构建的第一个自然语言处理平台、由 Be…

linux批处理mysql数据库_使用批处理对MySQL进行数据批量操作
批处理是一种非交互式运行MySQL程序的方法,如同您在MySQL中使用的命令一样,你仍然将使用这些命令。为了实现批处理,您重定向一个文件到MySQL程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在MySQL中输入的…

JDBC Driver常用连接方法列表
Microsoft SQL Server series (6.5, 7.x and 2000) and Sybase 10JDBC Name: jTDSURL: [url]http://jtds.sourceforge.net/[/url]Version: 0.5.1Download URL: [url]http://sourceforge.net/project/show...?group_id33291[/url]语法: Class.forName("net.sourceforge.jt…

C#强化系列文章四:匿名方法的使用
匿名方法相信很多人都听过,它是C#2.0的一个新特性,顾名思义,匿名方法就是没有名称的方法。那么在C#中的匿名方法有哪些好处,在C#中如何使用呢?匿名方法最明显的好处就是可以降低另写一个方法的工作量,另外一…

AI人才抢夺“生猛”: 应届博士年薪涨到80万元
作者 | 王玉凤来源 | 本文授权转自第一财经人工智能(AI)人才薪水之高、涨幅之大,颇有令人瞠目结舌之感。一年前,针对AI领域的应届毕业生,硕士生约莫能拿到30万元的年薪,博士生则高达50万元。今年࿰…

mysql的表空间是否自动扩展_Oracle修改指定表空间为自动扩展
1.数据文件自动扩展的好处1)不会出现因为没有剩余空间可以利用到数据无法写入2)尽量减少人为的维护3)可以用于重要级别不是很大的数据库中,如测试数据库等2.数据文件自动扩展的弊端1)如果任其扩大,在数据量不断变大的过程中会导致某个数据文件异常的大2)…

3.15好水指数N1能否让饮水健康不失控?
题记:3.15晚会曾曝光碱性水无益健康,过度饮用对人体有害。但现在市场上仍然有企业打着“碱性水有益健康”的招牌做营销,其居心何在呢?饮用水指数N1和中国优水地图在3.15这天正式发布,它们能对我们的饮水健康产生多大的影响? 凯文…

【iOS-cocos2d-X 游戏开发之十四】cocos2dx(c++)中访问object函数
Cocos2dx系列博文的上一篇详细介绍了如何在Xcode中利用jni调用Android的Java层代码,还没有看过的童鞋,请移步到如下博文: 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用…

mysql实验报告四_实验报告四
实 实 验 报 告 课程名称 数据库实验及课程设计 实验项目 数据查询 实验 仪器 ___________________________ 系 别______信息管理学院______ 专 业________ ____________ 班级/ / 学号_ _ 学生姓名 _____ _____________ 实验日期 成 绩 _______________________ 指导教师 施永香…

京东数科业务架构全披露,陈生强发布城市操作系统和京东钼媒
11 月 20 日,在 JDD-2018 京东数字全球探索者大会上,陈生强宣布,京东数字科技(JD Digits)正式成为京东金融的母品牌,这也意味着它的业务架构逐渐明晰,主要下设了京东金融、京东城市、京东农牧、…

自动化测试十大要点
当一款自动化测试工具引入到一个项目中,我们通常对它给予很高的期望;项目成员希望工具能够尽可能的缩小测试范围、节约成本并缩短项目进度,然而可悲的是,很多采用自动化测试的项目依然失败了。 以下几个方面严重影响着自动化测试的…