前述
能看到搜索到这篇文章想必你已经了解了什么是 Docker,什么是 Samba 了。如果你不了解这两样东西,那么我建议你在网上搜索一下,仔细了解下这两样比较实用的工具。
我就以我通俗的语言简述下这两样东西,Docker 是一种标准化的软件单元,说白了有了它,我们使用一个软件就像手机上使用 APP 一样,我们不用管这个软件怎么写的,以及运行这个软件需要什么环境啊。当我们手机需要某个软件的时候,我们都直接在应用商店里直接搜索下载某个软件,然后打开运行。Docker 跟这种道理差不多,如果我们需要某个软件,那么我们也直接从镜像仓库里直接拉取(手机上我们说下载应用,Docker 使用的是 pull 命令那么就该翻译成拉取,道理是一样的),手机上我们下载的称做安装包,Docker 中对应就是应该是镜像。手机上下载好软件包后安装的这个步骤对应 Docker 中就应该是创建容器的这个步骤了,创建容器的时候只需要你配置一些简单的参数。手机安装包在你的手机上能下载并安装,在别人的手机上也一样。Docker 也是如此,同一镜像都可以在同样的 CPU 架构下创建容器运行。只要你装了 Docker 就不在乎你用的什么系统了,就只有 CPU 架构的区分了。这样就大大为应用的部署提供了方便,而且通常来说一个容器是非常 轻量的,创建和删除它都非常的方便。这就是为什么要使用 Docker 来搭建 Samba 服务的原因了。
至于 Samba 就是适用与 Linux 和 Unix 的标准 Windows 互操作性程序套件。有了它我们就可以把任意文件在我们的 Windows 系统和 Linux 系统中任意的转移了。
启动容器
sudo docker run -it --name samba --restart always \
--net host -p 139:139 -p 455:455 -v /home:/shared \
-d dperson/samba -s "share;/shared;yes;no;yes" -n
我们来说下每个参数的含义:
sudo -> 使用 root 权限执行后续命令
docker -> docker 命令
run -> docker 命令的参数,用于启动容器
-i -> 让容器的标准保持打开
-t -> 为容器分配一个伪终端
–name -> 容器名, samba 这里就给该容器命名为 samba
–restart -> 重启参数,always 我们这里选的就是一直重启,只要是启动失败了它就会不断的重启,这里的作用主要是为了开机启动
–net -> 加入网络,host 就是说该容器加入到主机网络中
-p -> 端口映射,139、455 是 Samba 协议的端口
-v -> 文件映射, /home:/shared 就是把主机中的 /home 目录映射到 容器中的 /shared 目录中
-d -> 后台运行
dperson/samba 使用的镜像名,当我们的本地没有该镜像时,它会自动去网络仓库里搜索并拉取, 镜像可以是我们自己写的,也可以是别人写好的,我们这里所使用的就是别人已经写的了的
这上面的都是 Docker 命令中的参数,而镜像名后面跟的参数就是该镜像自己设定的参数了,有的镜像可能有,有的镜像可能也没有。这主要就要看这个镜像是怎么写的了
-s -> 设置共享目录, “share;/shared;yes;no;yes” 给共享的文件夹取名为 share,共享的是容器中的 shared 文件夹(前面的参数就已经把主机中的文件映射到这里了),可见,非只读,启用访客
关于更多的 dperson/samba 详细设置请见 dperson/samba