群晖nas中使用registry搭建docker镜像私人服务器以及设置群晖远程docker服务
折腾群晖服务器很有快感,一是因为自家群晖ds216+低功耗,24小时开机也不觉得费电,二是因为群晖系统也是linux,精简版的debian,其他linux的方案它也行的通。DIY乐趣多。
首先介绍我的开发环境:
服务器:群晖ds216+,X86的cpu,IP:192.168.1.216
开发机:联想T430笔记本,Deepin 20.1系统,安装了InteliJ IDEA 2020.2,IP:192.168.4.100
下面是操作步骤:
1.服务器:群晖套件中心下载安装docker
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEpH4cPq-1615723658249)(https://i.loli.net/2021/03/14/GXRpbehvc6tJL8g.png)]
2.运行docker套件,下载registry镜像。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33ClptQS-1615723658256)(https://i.loli.net/2021/03/14/9lGai5xCESfNRzU.png)]
设置挂载的目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aWH0abj-1615723658261)(https://i.loli.net/2021/03/14/1FgLTOdYsHlbUPC.png)]
为避免与DSM默认登陆冲突,修改为占用群晖5555的端口开放给局域网机器访问。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LaKVUhGD-1615723658265)(https://i.loli.net/2021/03/14/hP4GTyQZvbwR9JK.png)]
设置完毕,启动镜像,生成为容器。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tjh1HSkz-1615723658268)(https://i.loli.net/2021/03/14/fgyDdiFlYwLBhxO.png)]
测试一下群晖
[email protected]:~# curl http://192.168.1.216:5555/v2/_catalog {"repositories":["test"]}
上面显示test镜像是我之前测试过,实际上首次使用应为空,显示为
{
"repositories":[]}
这就说明架设registry成功。
3.设置开发机器的docker有关设置
回到本地机器:192.168.4.100这台主机。
修改/etc/docker/daemon.json文件
sudo vi /etc/docker/daemon.json
增加”insecure-registries”: [“192.168.56.101:5000”]。我的文件修改完毕如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FAQZLMs-1615723658273)(https://i.loli.net/2021/03/14/yoWH1MAf25GiJha.png)]
4.IDEA程序测试,可以推送镜像。
如果上面没有添加insecure-registries那一行,将会因为ip是非https而出现系统报错:
[email protected]:~# docker push 192.168.1.216:5555/test:1.0
The push refers to repository [192.168.1.216:5555/test]
Get "https://192.168.1.216:5555/v2/": http: server gave HTTP response to HTTPS client
修改了json添加了第3步的非安全源参数,重启docker,就可以顺利push镜像了。
[email protected]:~# vi /etc/docker/daemon.json
[email protected]:~# service docker restart
[email protected]:~# docker push 192.168.1.216:5555/test:1.0
The push refers to repository [192.168.1.216:5555/test]
b537eb7339bc: Pushed
f2df42e57d5e: Pushed
01b7eeecc774: Pushed
c16b4f3a3f99: Pushed
f973e3e0e07c: Pushed
9eb82f04c782: Pushed
1.0: digest: sha256:bce83ebf77f45d62c3e6a01ba423d87242a7371b6daada7197b4e683ceda6341 size: 1572
[email protected]:~#
push之前先tag一个镜像,例如我把redis:5.0的镜像标记为test:1.0。
[email protected]:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
345c6e691070 nginx:jeecgboot "/docker-entrypoint.…" 22 hours ago Up 22 hours 0.0.0.0:80->80/tcp, 443/tcp jeecg-boot-nginx
5541892ed60d redis:5.0 "docker-entrypoint.s…" 4 days ago Up 25 hours 0.0.0.0:6379->6379/tcp jeecg-boot-redis
a411ade5ce87 jeecg-boot-system "/bin/sh -c 'sleep 6…" 4 days ago Up 25 hours 0.0.0.0:8080->8080/tcp jeecg-boot-system
8d8aa8147812 jeecg-boot-mysql "docker-entrypoint.s…" 4 days ago Up 25 hours 0.0.0.0:3306->3306/tcp, 33060/tcp jeecg-boot-mysql
[email protected]:~# docker tag redis:5.0 192.168.1.216:5555/test:1.0
[email protected]:~# docker push 192.168.1.216:5555/test:1.0
The push refers to repository [192.168.1.216:5555/test]
Get "https://192.168.1.216:5555/v2/": http: server gave HTTP response to HTTPS client
顺利push镜像,看到本机的redis:5.0被添加了192.168.1.216…的标记。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EvyrLz5F-1615723658275)(https://i.loli.net/2021/03/14/2ED4jdMQwFSspJr.png)]
5.设置群晖可以远程调用docker
5.1查找群晖docker配置文件
首先根据进程查看docker配置文件路径
[email protected]:~# ps -ef|grep docker
root 4877 1 0 Mar11 ? 00:03:01 /var/packages/Docker/target/usr/bin/dockerd --config-file /var/packages/Docker/etc/dockerd.json
root 4885 4877 0 Mar11 ? 00:02:15 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
root 5167 4877 0 Mar11 ? 00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5201 -container-ip 172.17.0.2 -container-port 5201
root 5185 4877 0 Mar11 ? 00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5555 -container-ip 172.17.0.3 -container-port 5000
root 5193 4885 0 Mar11 ? 00:00:04 containerd-shim -namespace moby -workdir /volume1/@docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/cb9fff63a0497cbd6b1ddf6f7faa6e7dbb9c1b5bdec79882871bd6d5083a9aed -address /var/run/docker/containerd/containerd.sock -containerd-binary /volume1/@appstore/Docker/usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root 5234 4885 0 Mar11 ? 00:00:04 containerd-shim -namespace moby -workdir /volume1/@docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/8231cc54a44a58fde1cd9e390483159c5373b29668da73249778d7c98c8f7eae -address /var/run/docker/containerd/containerd.sock -containerd-binary /volume1/@appstore/Docker/usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root 18633 13420 0 23:34 pts/0 00:00:00 grep --color=auto docker
如输出所示,dockerd启动配置文件路径为–config-file那一行,vi编辑一下
sudo vi /var/packages/Docker/etc/dockerd.json
5.2修改json文件配置
在上述json中添加如下配置:
"hosts": ["unix:///var/run/docker.sock", "tcp://192.168.1.216:2375"]
完成配置文件,如我的nas中json文件内容如下:
{
"data-root":"/var/packages/Docker/var/docker",
"log-driver":"db",
"registry-mirrors":["https://pqmwn1pe.mirror.aliyuncs.com"],
"insecure-registries":["192.168.1.216:5555"],
"storage-driver":"btrfs",
"hosts": ["unix:///var/run/docker.sock", "tcp://192.168.1.216:2375"]
}
重新载入deamon,再启动docker服务。
systemctl daemon-reload
5.3测试IDEA可以连接群晖docker服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUghsUak-1615723658277)(https://i.loli.net/2021/03/14/pNrfEqIg5BFGx31.png)]
里面运行的镜像也可以看到
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vXJy2RtZ-1615723658278)(https://i.loli.net/2021/03/14/M6CvRl5HbkYqotn.png)]
5.3群晖服务器docker套件可以下载镜像私服
选择注册表设置自己服务器192.168.1.216:5555那一行,就能搜索到刚才push的镜像了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVjHIW9h-1615723658280)(https://i.loli.net/2021/03/14/DVOYLCeynJ4WuIT.png)]