软件容器化-从调研到制作-(重点:macvlan跨宿主机访问)

658人浏览 / 0人评论

一、背景

公司要求某个软件需要容器化,因为单独部署浪费资源。

二、选择

部署:docker

管理:docker-compose

监控:初步使用shell监控

存储:Bind mount

Volume:docker管理

Bind mount:自行管理、比较适用于此业务场景

网络:macvlan
 

 

docker默认网络-bridge: 端口不能相同、容器可以访问外部、外部不能通过容器ip直接访问

macvlan网络: 配置简单、网络效率高、(需要做iplink)

Flannle:需要部署etcd数据库(成本高、网络效率高)

netmaster:需要部署etcd数据库(成本高、网络效率高)

 

三、制作镜像 

Dockerfile

FROM registry-vpc.cn-beijing.cr.aliyuncs.com/base/centos:7.7 
ADD centhos-os-7.7.repo /etc/yum.repos.d/ 
ADD netmaster.conf /etc/rsyslog.d/ 
RUN mv /etc/yum.repos.d/CentOS-* /tmp/ && yum clean all && yum makecache &&yum install netmaster -y 
RUN yum install net-tools git rsyslog -y && chmod 755 /usr/local/netmaster/bin/*
docker build -t -registry-vpc.cn-beijing.cr.aliyuncs.com/apps/netmaster:20221203 .

 

四、创建mavclan和其他配置

docker network create -d macvlan -o parent=eth0 \ --subnet 10.110.120.0/24 \ --gateway 10.110.120.254 \ --ip-range 10.110.120.128/27 \ docker-net

拉取镜像

安装和启动docker

 五、创建iplink

ip link add docker-net link bond0 type macvlan mode bridge

ip addr add 10.110.120.129/32 dev docker-net

ip link set docker-net up

ip route add 10.110.120.128/27 dev docker-net

 [root@ops-netmaster-120-11 ~]# docker network ls

NETWORK ID NAME DRIVER SCOPE

11009fe58467 bridge bridge local

83e1f291519b host host local

6fa8b719cfe4 none null local

84ee49eb0f49 vlan239 macvlan local

 六、创建容器

docker命令创建

docker run -it --network docker-net --ip 10.110.120.132 --restart=always --privileged=true --name dev_app2_10-110-120-132_netmaster -v /data/netmaster/dev_app2_10-110-120-132_netmaster/:/data/netmaster/netmaster_9999/ -v /data/netmaster/dev_app2_10-110-120-132_netmaster/etc/:/var/contiv/config/ registry-vpc.cn-beijing.cr.aliyuncs.com/apps/netmaster:20221203 /usr/sbin/init

docker-compose创建

[root@ops-netmaster-120-11 bin]# cat ../etc/docker-compose.yml 
version: '3'
services:
  app1_10-110-120-130_netmaster_9999:
    image: registry-vpc.cn-beijing.cr.aliyuncs.com/apps/netmaster:20221203
    container_name: app1_10-110-120-130_netmaster_9999
    restart: always
    privileged: true
    volumes:
      - /data/netmaster/app1_10-110-120-130_netmaster_9999/:/data/netmaster/netmaster_9999/
      - /data/netmaster/app1_10-110-120-130_netmaster_9999/var/contiv/config/:/var/contiv/config/
    networks:
      docker-net:
        ipv4_address: 10.110.120.130
    command: /usr/sbin/init

networks:
  docker-net:
    external: true

 

全部评论