一.背景
公司主机管理组的兄弟安装了1Panel(社区版v1.10.10-lts),期望我们开发的小项目都通过docker来部署。我第一步要配置的就是怎么将docker镜像构建能力共享的问题,因为我本机是windows,不想再去折腾安装docker环境。
二.设置过程
个人的粗浅认识:docker的核心能力就是构建轻量化虚拟机文件(镜像文件)和运行轻量化虚拟机。它的构建能力可以对本机服务,也可以对局域网服务。因此,是否安装1Panel与docker构建能力开放无关,只是通过1Panel工具可能编辑文件等更方便。
通过网络收索,发现共享docker构建能力的核心其实就是网络监听,因为外部机器要通过网络传递构建指令。主要包括3种方式:/etc/default/docker、/usr/lib/systemd/system/docker.service、/etc/docker/daemon.json。3种方式到底适合哪种,各有什么区别,我没有深度学习,我的建议是依次看3个文件,看到了就修改,然后重启docker试试。
1.查看docker是否已经开放
我的思路是docker对外开放有默认的端口2375,我们可以先看看端口开放了没有。在1Panel中,可以在“主机”=》“终端”里面输入命令“netstat -tulnp”查看使用端口情况。我的已经打开了,所以显示里面有如下的:
tcp6 0 0 :::2375 :::* LISTEN 2378/dockerd
2.查找修改上面3个文件
有就修改,没有就找下一个,修改一个就行。我就熟悉简单的命令,比如:cd、dir、ls、cat。这里要说明的是初学者建议用cat去编辑文件,容易上手一些。我就偷懒,直接用的1Panel的web编辑工具(“主机”=》“文件”)。
1)没有 /etc/default/docker 文件
2)有 /usr/lib/systemd/system/docker.service 文件,我修改的这个
其中,我 修改了 “[Service]”中“ExecStart”这部分,插入了 “ -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock”的内容。
[Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutStartSec=0 RestartSec=2 Restart=always
3)有/etc/docker/daemon.json 文件,我没有修改这个
3.重启docker
我的理解这个重启不是重启docker下面的容器实例,只是重启docker的守护进程。 我还是在1Panel的“主机”=》“终端”里面输入命令重启的。
sudo service docker restart
4.再查看端口使用情况
参考第一步。
三.总结
docker核心功能包括镜像的构建和容器的运行,它可以开放端口将镜像构建的能力暴露。docker daeson就是docker的守护进程,开放能力是通过指定docker守护进程监听端口来实现的。后面开发人员就可以通过maven中docker插件来远程调用docker镜像构建能力了。
参考文章: