前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 配置安装(Ⅲ)

Docker 配置安装(Ⅲ)

作者头像
老七Linux
发布2018-05-31 10:41:33
5750
发布2018-05-31 10:41:33
举报
文章被收录于专栏:Laoqi's Linux运维专列
一、数据卷备份恢复

其实只要是把容器和本地宿主机做了目录映射直接存在本地,那我们只需对本地的硬盘定期备份下不就好了么?那这个备份就是多余的,但是偏偏就有这么干的。备份和恢复也就接踵而来。

1.1 本地创建备份目录

代码语言:javascript
复制
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目录下面。

也许有点乱,看下下面这个图:

mark
mark

宿主机也就是我们的服务器分享一个/data/backup/ 目录,本地的这个backup目录和新建容器内的backup相互映射,而我们现在的新建容器挂载了数据卷容器的/data/ 也就是意味着数据卷的data目录和容器的data目录数据是一致的,现在两两互通,下面也就是把新建容器中的data目录中的数据copy到backup中就可以了!这样就完成了真实的备份!

1.2 恢复

思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。

新建数据卷容器:

代码语言:javascript
复制
docker run -itd -v /data/ --name testvol2 centos bash

挂载数据卷新建容器,并解包:

代码语言:javascript
复制
docker run --volumes-from testvol2 -v /data/backup/:/backup centos tar xf /backup/data.tar

恢复也就是按照刚刚的思路反着来就可以了。实用性不高,因为多数情况下我们还是用宿主机映射的比较广泛。

二、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网络模式。同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的。

在开始之前先分享一个错误,进入容器后不可以连接yum任何服务和不可以ping任何网络,最后发现原因是之前我们搭建了内网的容器平台,导致问题产生。 修改后并重启docker服务:

代码语言:javascript
复制
vi /etc/docker/daemon.json  //加入如下内容
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}

systemctl restart docker
  1. 首先使用centos镜像新建一个容器,然后在该容器中安装nginx服务,并启动
代码语言:javascript
复制
[[email protected] /]# systemctl restart nginx
Failed to get D-Bus connection: Operation not permitted

//显然报错了! 操作不允许。

解决方案:

后面再来分析↓

  1. 再把该容器导成一个新的镜像(centos_nginx),然后再使用新镜像创建容器,并指定端口映射。
代码语言:javascript
复制
docker commit -m "installed nginx" -a "zhdya" dbef333372c2 centos_nginx
代码语言:javascript
复制
docker run -itd -p 8088:80 centos_nginx bash  //-p 可以指定端口映射,本例中将容器的80端口映射为本地的8088端口
也就是说,现在任何主机只要通过 宿主机IP:8088 就可以访问容器的80端口
如上问题解决方案:operation not permitted
代码语言:javascript
复制
①先关闭 已经启动的docker容器
②重新指定特定的参数启动

[root@zhdy01 ~]# docker run -itd --privileged -e "container=docker" -p 8088:80 centos_nginx /usr/sbin/init
519c0e50ce837ec2f2d5ab60549b77b0c69e8f635b173f991f3b178d7efc8254

进入容器并启动:
[root@zhdy01 ~]# docker exec -it 519c0e50ce837e bash
[root@519c0e50ce83 /]# systemctl  start nginx
[root@519c0e50ce83 /]# ps aux | grep nginx
root         88  0.0  0.2 122812  2076 ?        Ss   02:50   0:00 nginx: master process /usr/sbin/nginx
nginx        89  0.0  0.3 123244  3112 ?        S    02:50   0:00 nginx: worker process
测试

使用其它机器测试容器的80端口:

代码语言:javascript
复制
[[email protected] ~]# curl 192.168.59.131:8088
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Page for the Nginx HTTP Server on Fedora</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

//一个nginx的欢迎页!
代码语言:javascript
复制
-p后面也支持IP:port:ip:port 的格式,比如

-p 127.0.0.1:8080:80

也可以不写本地的端口,只写ip,这样会随意分配一个端口

-p 127.0.0.1::80  //注意这里是两个冒号
三、配置网桥网络

这种模式应该不陌生,这种模式就是相当于配置咱们的容器和宿主机在同一局域网模式下,这样我们就可以认为这台docker容器也是一台真正的宿主机!

代码语言:javascript
复制
[[email protected] ~]# cd /etc/sysconfig/network-scripts/

[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-br0

[[email protected] network-scripts]# vim ifcfg-br0 

TYPE="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="516645c7-9bd8-490e-a61a-d9e70a87180b"
DEVICE="br0"
ONBOOT="yes"
IPADDR="192.168.59.131"
NETMASK=255.255.255.0
GATEWAY=192.168.59.2
DNS1=61.177.7.1
DNS2=119.29.29.29

//重启网卡
[[email protected] network-scripts]# systemctl  restart network
查看配置
mark
mark

如上只有ens33没有IP,这样才能实验咱们真正的目的,试想一下,这种模式未来是不是咱们只要把镜像配置好,按照如上模式配置IP这样不就轻易实现了,轻轻松松部署各种服务!

安装pipwork
代码语言:javascript
复制
git clone https://github.com/jpetazzo/pipework

//不需要任何的编译,直接copy配置文件到bin目录下即可:
cp pipework/pipework /usr/local/bin/

开启一个容器 <设置成没有网络模式:>

代码语言:javascript
复制
[root@zhdy01 ~]# docker run -itd --net=none centos_nginx bash
780d7478ff8687cd66bec908948d0dbe09e39cdfff51284dcfb533cf008015ef

[root@zhdy01 ~]# docker exec -it 780d7478ff8 bash

[root@780d7478ff86 /]# ifconfig 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

给容器设置一个指定的IP地址:

代码语言:javascript
复制
[[email protected] ~]# pipework br0 780d747 192.168.59.159/[email protected]

[[email protected] ~]# docker exec -it 780d7478ff8 bash

[[email protected] /]# ifconfig 
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.59.159  netmask 255.255.255.0  broadcast 192.168.59.255
        ether 86:0f:3e:8d:b3:2d  txqueuelen 1000  (Ethernet)
        RX packets 7  bytes 578 (578.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 42 (42.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如上就理所当然的生成了咱们指定的IP。(网络肯定也是通的,只要在同一局域网其它的server也完全可以ping通)

这个就是咱们使用pipework软件所搭建起来的bridge模式,当然,这种模式才是真正的网桥模式,官方的bridge模式我认为就是虚拟机下面的NAT模式!

现在是不是我们完全就可以使用各种咱们自己所需的服务?当然醉醉醉方便的就是 随时可移植到另外一台服务器!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/03/16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数据卷备份恢复
  • 二、Docker 网络模式
    • 如上问题解决方案:operation not permitted
      • 测试
      • 三、配置网桥网络
        • 查看配置
          • 安装pipwork
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档