手把手教你把命令行转换为图形化建立docker及macvlan的简单介绍--笔记

大家好,我是群里的骑着神马的帅锅,可以叫我神马或者阔落、千万不要叫帅锅,谢谢。
今天带大家熟悉下我们在命令行建立docker的时候使用到的命令详解。方便我等小白深入学习docker的使用,我是看了油管里面esir的教程学会的,大家要是感兴趣的话可以去观摩一下。附上esir的频道:eSir PlayGround
我这期教程也是看完esir的教程的一个相关总结吧,文字转换的那种。

  • docker命令解说篇
    首先先熟悉一下在ssh里面新建docker用到的命令及参数说明。

引用
docker run:意思是要容器运行的意思
docker create 是创建的意思 run是运行
-P port 端口
-V volume卷
-d daemon 后台运行
-e environment 环境变量
–name 是名称的意思
–networl=host 这个这个容器直接使用你宿主机的网络,相当于是宿主机下面的一个子进程。
–restart unless-stopped \ 这个是容器自动启动的命令,如果容器因为某些原因导致他退出的话,他回自动重启,除非你手动停了他,这个可以理解为开机自启吧

这个缩进关系没搞懂,我截图吧
image
下面那些命令参找图上的,不知为啥边–了

说完这个,大家是不是还是一脸懵逼,没关系,我们来个命令,直观的讲解给大家知道,这些命令的效果是什么。

示例:此次参照linuxserver大佬的qbittorrent镜像来做讲解,附上docker hub链接:linuxserver/qbittorrent

这边直接复制linuxserver大佬的命令行

引用 ```
$ docker create
–name=qbittorrent
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-e UMASK_SET=022
-e WEBUI_PORT=8080
-p 6881:6881
-p 6881:6881/udp
-p 8080:8080
-v /path/to/appdata/config:/config
-v /path/to/downloads:/downloads
–restart unless-stopped
linuxserver/qbittorrent

看这个就是linuxserver大的建立qbittorrent的命令行,我们一步一步的来解析这个命令行的意思,用白话文来解释。

引用
docker create 是创建的意思 run是运行
–name=qbittorrent 创建的容器名叫qbittorrent
-e PUID:是用户的id
-e PGID:也是用户id
-e TZ=Europe/London:是容器内时区的意思,国内用Asia/Shanghai
-e UMASK_SET=022:是用这个qb下载的东西权限是755也就是所有人都可读
-e WEBUI_PORT=8080:是容器内部监听8080端口,他的数据会从8080端口走
-p 6881:6881
-p 6881:6881/udp: 这三行就是把容器内的端口映射到宿主机上
-p 8080:8080 :这个8080是因为上面你监听了内部的8080,外部是不知道的,所以你也要映射出来。外部你可以自己设,只要你外部端口不冲突就ok
-v /path/to/appdata/config:/config
-v /path/to/downloads:/downloads:这两个是映射文件的意思,第一个是配置文件的位置,第二个是下载的,目录
–restart unless-stopped \ 这个是容器自动启动的命令,如果容器因为某些原因导致他退出的话,他回自动重启,除非你手动停了他,这个可以理解为开机自启吧
linuxserver/qbittorrent 这个是我们在docker hub上拉取一个叫 linuxserver的作者发布的镜像,这个镜像叫qbittorrent

不知道对这样的解释清不清楚,如有错误,请大佬及时提出,避免翻车。

下面是网络篇

  • Macvlan介绍

Macvlan是docker里面使用的网络虚拟技术 上面使用的是网桥模式,相比网桥,Macvlan的效率会比网桥模式要高,看下面这张图


左边是网桥模式,右边是macvlan模式。

Bridge:这个是容器通过虚拟的网卡接到网桥上在接到你的网卡,中间通过了地址转换

Macvlan:这个是给每个容器分配了独立的mac地址,这些地址在进行数据通讯的时候就不需经过网桥,直接跟硬件进行通讯 ,macvlan更接近真正意义上的桥接,无需地址转换,所以效率就搞了。而已,macvlan给每个容器分配了一个mac地址,这样我们就可以依据这个mac地址指定固定ip,这样容器就更方方便管理。

不过要提醒一下,这个Macvlan模式下,宿主机和容器不能直接通信,即使分批的IP在同一网段内也不行。比如说你的宿主机的ip地址是192.168.199.1,你的容器分配的地址是199.2、199.3、199.4,其中199.2、199.3、199.4之间是可以非常流畅的进行通讯的,但是跟宿主机即199.1是无法交互的。

Macvlan的4种模式

  1. Bridge Mode

  2. Private Mode

  3. VEPA

  4. Passthrough

主要使用Bridge Mode

下面开始教程
image
这是我们熟悉的网络接口,常用的就是bridge ,拿到的地址都是些172.17.x.xd的ip

我们选新建,其实都是大同小异的,其他的docker可以参照

看图
image
网络名 :就是你要设置的名字

驱动:选macvlan

父接口:br-lan(这是你的软网桥的地址接口)

macvlan模式:bridge(就是桥接的意思)

敲黑板,下面是重要部分

子网络:这个就是你要容器在什么网段的ip,也就是他的网段在什么地址范围内,比如你的局域网范围是192.168.199.x这个网段里面,那么你就设置为192.168.199.0/24,如果你家的网段是10.0.0.x那么你就写成10.0.0.0/24设置成用一个网段的好处是,跟你的局域网是通的,不需要再次路由了,这个我是这么理解的,小白的理解。

网关这个不能和br-lan设置的ip地址相同

这个不能和br-lan设置的ip地址相同

这个不能和br-lan设置的ip地址相同

重要的事情说三遍,有人问br-lan是什么ip呢?这里解释一下,这个就是你宿主机的ip,你设置成一样的话,那么你的macvlan的所以容器都不通,原理就是macvlan的主机跟你的宿主机是不相通的。但是可以跟你的局域网相通,不知大家懂不懂,有点绕。 比如,我的宿主机的ip是192.168.199.132,那么我这个就要设置成跟这个宿主机的ip不一样,你可以设置为199.133。(不知这样解释对不对,如有错误,大佬请指出,避免耽误别人)

Ip范围:是给你的macvlan的主机设置一个范围,这样容易自动分配ip的时候,就这这个范围内。比如192.168.199.188/28。设置里范围的话,是要自己去计算的,下面我会附上一个连接,这个就是计算表 子网计算表地址 计算链接

当然可以不写,不写的话,就从你上面设置的子网络里面从1开始到254的范围获取,有可能跟你的局域网的ip会冲突,像我的esxi的管理地址是199.3的ip,我不写的话,可能第三个docker的ip就是199.3的ip。这就跟我的局域网的ip冲突了,所以建议大家设置一个范围,这样就可以尽可能的排除ip冲突的发生。其实不写也行,就是你使用了macvlan的话就要强制指定你要建立的docker的ip地址,不跟你局域网冲突的ip地址,不知讲的对不对,希望懂的大神来讲解一下,我也是一知半解。这个真的有点绕,我也是看了半天才看明白。

这样我们的macvlan就设置好 了

我这个是在openwrt上的docker上的设置,其他的设置应该也差不多,无非就是中文变英文,或者是有大神帮忙出一个命令,直接设置的macvlan的命令或者脚本。我这个小白只会图形化操作。其他的不太懂,然后为了更好的使用容器,将命令行翻译成图形界面的模式建立docker。

当然,大名鼎鼎的portainer也是可以在图形化上设置的。看图


其中还有几个命令不太懂的,比如;-it --mount,还有些忘记存了,求大佬解答下疑惑。

剩下的就靠你们细品了,请仔细细的品。
品出好东西了,记得分享一下

笔记到此结束。如有不对的地方,麻烦大神指点,小白一枚。纯白的那种
有大佬能讲解一下docker-compose的使用吗,我看了教程,看的一脸懵逼,完全看不懂。。。。。。。

经过修仙搜索。找到一个大佬写的说明,好全的说,附上


最后附上大佬的地址:Docker run命令参数中文介绍

好文推荐 :+1:

:+1: macvlan希望我能学会

懒,我还没搞定debain的macvlan

这才是教程,哈哈,给大佬端茶。