刚才想到其实samba也是可以使用docker来管理的,并且可以使用桥接网络,不占用宿主机的端口,于是操作一番成功搭建好了,在此做个记录
创建一个桥接网络:
1 | docker network create -d macvlan \ |
- 其中
macvlan
是网络类型 192.168.2.0/24
是子网网段192.168.2.1
是网关地址eth0
是父网卡physical
是新建出来的网络名称
docker不会使用dhcp client来设定容器的局域网IP地址,而是按照docker网络的subnet参数直接递增分配IP,所以就有可能和局域网的其他主机产生冲突。
解决方法是创建容器时使用--ip=xxx.xxx.xxx.xxx
来手动指定一个内网IP地址,然后在路由器上做好dhcp绑定来防止IP冲突
可以使用--ip-range=192.168.2.128/26
选项来限制docker分配的ip范围,防止和dhcp分配的范围冲突
创建samba容器
先拉取镜像,我这里使用的ARM的samba镜像 docker pull dastrasmue/rpi-samba
然后启动镜像
1 | docker run -d \ |
- -u 后面是 用户名:密码 的格式, -s 是 共享名:目录 的格式
-h filer3
hostname,就是网络主机名称,就是在windows网络共享里将会看到的机器名称--network=physical
中的physical
就是我们刚才创建的网络名称- 使用桥接网络不需要使用
-p
进行端口映射了 --name
之后的行都是容器里面的执行点的参数,而非docker容器启动参数
创建多个samba容器请注意不要使用相同的hostname,否则会导致局域网搜索hostname出现问题,无法使用主机名访问samba