在这里,我们将给大家分享关于DockerMacvlan应用部署的知识,让您更了解dockernetworkmacvlan的本质,同时也会涉及到如何更有效地Docker04应用部署与迁移备份Docker
在这里,我们将给大家分享关于Docker Macvlan 应用部署的知识,让您更了解docker network macvlan的本质,同时也会涉及到如何更有效地Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库、Docker Macvlan 介绍 or 工作原理、Docker Macvlan 网络部署、Docker macvlan实战的内容。
本文目录一览:- Docker Macvlan 应用部署(docker network macvlan)
- Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库
- Docker Macvlan 介绍 or 工作原理
- Docker Macvlan 网络部署
- Docker macvlan实战
Docker Macvlan 应用部署(docker network macvlan)
Docker Macvlan 应用部署
MacVLAN有两种桥接模式
- Bridge模式:不创建子接口的情况下直接去桥接物理接口。直接桥接到与宿主级的同网段。
- VLAN Bridge模式:创建子接口去桥接物理接口。可划分多个VLAN。
Macvlan Bridge模式 容器专属网络
1、节点1节点2操作:创建macvlan网络
docker network create -d macvlan --subnet=172.100.1.0/24 --gateway=172.100.1.1 -o parent=ens33 macvlan_net


docker network create 创建网络
-d 指定网络驱动程序为macvlan
--subnet 指定一个子网段
--gateway 指定网关
-o parent=ens33 指定宿主接口
macvlan_net 自定义网络名称


命令:docker network ls
NETWORK ID NAME DRIVER SCOPE
0a48ab454840 macvlan_net macvlan local
注:如果需要访问外网,需要将网络设置为与宿主级相同网络下。
注:本地不可访问,因为桥接的本地网络。
注:单个网卡只能绑定一次如重复添加会报如下错误。


# ens33网卡已被绑定,不多次绑定。
Error response from daemon: network dm-0a48ab454840 is already using parent interface ens33
# 删除绑定网卡网络集
docker network rm ID号
2、测试通信
macvlan-01# docker run -it --net macvlan_net --ip=172.100.1.10 busybox
macvlan-02# docker run -it --net macvlan_net --ip=172.100.1.11 busybox ping 172.100.1.10
docker run -it --net macvlan_net --ip=172.100.1.11 busybox ping 172.100.1.10
PING 172.100.1.10 (172.100.1.10): 56 data bytes
64 bytes from 172.100.1.10: seq=0 ttl=64 time=0.949 ms
64 bytes from 172.100.1.10: seq=1 ttl=64 time=0.316 ms
64 bytes from 172.100.1.10: seq=2 ttl=64 time=0.317 ms
64 bytes from 172.100.1.10: seq=3 ttl=64 time=0.310 ms
Macvlan VLAN Bridge模式 容器专属网络
1、节点1节点2操作:创建一个VLAN,VLAN ID 50
# ip link add link 宿主网卡 name 宿主网卡名字.子网卡名称id type vlan id 50
ip link add link ens33 name ens33.50 type vlan id 50
# 重启docker激活网卡
systemctl restart docker
2、节点1节点2操作:创建Macvlan网络
docker network create -d macvlan --subnet=172.99.0.0/24 --gateway=172.99.0.1 -o parent=ens33.50 macvlan_net99


docker network create 创建网络
-d 指定网络驱动程序为macvlan
--subnet 指定一个子网段
--gateway 指定网关
-o parent=ens33 指定宿主接口
macvlan_net99 自定义网络名称


命令:docker network ls
NETWORK ID NAME DRIVER SCOPE
f3b3b084f580 macvlan_net99 macvlan
3、测试互通
macvlan-01# docker run -it --net macvlan_net99 --ip=172.99.0.10 busybox
macvlan-02# docker run -it --net macvlan_net99 --ip=172.99.0.11 busybox ping 172.99.010
注:像这样创建多个子网卡,来实现划分多个VLAN环境。
Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库
MySQL 部署
拉取 mysql 镜像 docker pull centos/mysql-57-centos7
创建 MySQL 容器 docker run -di --name=mysql01 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=320512 centos/mysql-57-centos7
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登录密码
Tomcat 部署
拉取镜像 docker pull tomcat:7-jre7
创建容器 创建容器 -p 表示地址映射
docker run ‐di ‐‐name=mytomcat ‐p 9000:8080
‐v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7‐jre7
Nginx 部署
拉取镜像 docker pull nginx
创建容器 docker run ‐di ‐‐name=mynginx ‐p 80:80 nginx
Redis 部署
拉取镜像 docker pull redis
创建容器 docker run ‐di ‐‐name=myredis ‐p 6379:6379 redis
迁移与备份
容器保存为镜像
我们可以通过以下命令将容器保存为镜像
docker commit 容器名称 镜像名称
镜像备份
我们可以通过以下命令将镜像保存为 tar 文件
docker save -o tar 文件名称 镜像名称
恢复镜像
docker load -i tar 文件名称
Dockerfile
Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植。
常用命令
命令 | 作用 |
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | 是 Dockerfile 的核心部分 (可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和 ADD 相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
使用脚本创建镜像
步骤:
(1)创建目录
mkdir –p /usr/local/dockerjdk8
(2)下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器(虚拟机)中的 /usr/local/dockerjdk8 目录
(3)创建文件 Dockerfile vi Dockerfile
#依赖镜像名称和 ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径 jar, 把 java 添加到容器中
ADD jdk‐8u171‐linux‐x64.tar.gz /usr/local/java/
#配置 java 环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(4)执行命令构建镜像(注意后边的空格和点,不能省略)
docker build ‐t=''jdk1.8'' .
参看镜像是否建立完成
docker images
Docker 私有仓库
私有仓库搭建与配置
(1)拉取私有仓库镜像(此步省略)
docker pull registry
(2)启动私有仓库容器
docker run ‐di ‐‐name=registry ‐p 5000:5000 registry
(3) 打开浏览器输入地址 http://ip:5000/v2/_catalog,看到 {"repositories":[]} 表示私有仓库搭建成功并且内容为空。
(4) 修改 daemon.json vi /etc/docker/daemon.json
添加以下内容,保存退出,这是为了让 docker 信任私有仓库地址 {"insecure-registries":["ip:5000"]}
重启 docker 服务
systemctl restart docker
镜像上传到私有仓库
标记此镜像为私有仓库的镜像 docker tag jdk1.8 ip:5000/jdk1.8
再次启动私服容器
docker start registry
上传标记的镜像
docker push ip:5000/jdk1.8
Docker Macvlan 介绍 or 工作原理
Docker Macvlan Network
- Macvlan Network:属于Docker的网络驱动。
- Macvlan Network:Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识一个VLAN。容器接口直接连接Docker主机网卡接口,通过路由策略转发到另一台Docker主机。
- Macvlan Network :macvlan最大的优势,它支持能去连接子接口,linux 网卡子接口最大 4094个。
工作原理解析
Docker Macvlan 网络部署
Macvlan Bridge 模式
节点 1 创建
docker network create -d macvlan --subnet=172.100.1.0/24 --gateway=172.100.1.1 -o parent=ens33 macvlan_net
网段为 172.100.1.0/24 桥接的网卡为 ens33 macvlan_net 为指定的名称
查看
节点 2 也创建
创建容器测试互通
节点 1 创建 需要指定 IP 地址
docker run -it --net macvlan_net --ip=172.100.1.10 busybox
节点 2 创建
docker run -it --net macvlan_net --ip=172.100.1.11 busybox
可以 ping 通
再创建一个网络与宿主机网段是一样的
一个 macvlan 只能绑定一个物理接口
需要删除原来的才能创建
docker network rm 2cd49002aec0
创建
docker network create -d macvlan --subnet=192.168.56.0/24 --gateway=192.168.56.2 -o parent=ens33 macvlan_net
节点 2 同样的操作
启动容器
docker run -it --net macvlan_net --ip=192.168.56.130 busybox
这个容器和宿主机桥接的是一样的网络,可以访问宿主机和公网
MacvlanVLAN Bridge 模式
创建一个 vlan
ip link add link ens33 name0.50 type vlan id 50
查看
创建一个 Macvlan 的网络
docker network create -d macvlan --subnet=172.99.0.0/24 --gateway=172.99.0.1 -o parent=name0.50 macvlan_net50
节点 2 也是同样操作
创建容器测试互通
docker run -it --net macvlan_net50 --ip=172.99.0.10 busybox
启动子接口网卡
ifconfig ens33.50 up
Docker macvlan实战
docker swarm模式不支持同宿主机网段ip,非swarm模式才支持同网段ip,那就是macvlan模式。
ubuntu16.04-1 | 172.31.68.241 | |
ubuntu16.04-2 | 172.31.68.242 | 172.31.68.222 |
ubuntu16.04-3 | 172.31.68.243 | 172.31.68.223 |
ps:第二列为宿主机ip,第三列为容器ip
创建macvlan网络
docker network create -d macvlan --subnet=172.31.68.0/24 --gateway=172.31.68.1 -o parent=ens3 my-macvlan
ps:在ubuntu16.04-2/ubuntu16.04-3上都需要创建,由于不需要在ubuntu16.04-1创建容器,所以ubuntu16.04-1上不需要创建macvlan网络
创建容器
ubuntu16.04-2
docker run --net=my-macvlan --name=test2 --ip=172.31.68.222 -it 172.31.68.241/library/xenial3 /bin/bash
ubuntu16.04-3
docker run --net=my-macvlan --name=test3 --ip=172.31.68.223 -it 172.31.68.241/library/xenial3 /bin/bash
参数解释
-d macvlan 加载kernel的模块名
--subnet 宿主机所在网段
--gateway 宿主机所在网段网关
-o parent 继承指定网段的网卡
联通测试
test2 -> test3
test3 -> ubuntu16.04-1
ubuntu16.04-1 -> test3
我们今天的关于Docker Macvlan 应用部署和docker network macvlan的分享已经告一段落,感谢您的关注,如果您想了解更多关于Docker 04 应用部署与迁移备份 Dockerfile 与 Docker 私有仓库、Docker Macvlan 介绍 or 工作原理、Docker Macvlan 网络部署、Docker macvlan实战的相关信息,请在本站查询。
本文标签: