ssh your-synolody-username@your-DS118-ip
# or ssh your-synolody-username@DS118
sudo su
cd ~
创建并进入临时的工作目录
mkdir docker_install
cd docker_install
wget URL_TO_DOCKER_BINARY_GOES_HERE
URL_TO_DOCKER_BINARY_GOES_HERE请用最新版,这个上文链接中给出的链接:https://download.docker.com/linux/static/stable/armhf/
tar xvf docker-x.x.x.tgz
cd docker
./docker --version
Docker version 24.0.2, build cb74dfc
这里创建一个存储数据的文件夹,而这个文件夹是在volume1下的,而这个文件夹就是我们插在synology的硬盘。
mkdir /volume1/docker-images
创建配置文件
vim /etc/docker/daemon.json
输入
{
"storage-driver": "vfs",
"iptables": false,
"bridge": "none",
"data-root": "/volume1/docker-images"
}
cd ..
cp docker/* /usr/bin/
dockerd
没错误消息就成功了
按 Ctrl+C 停止正在运行的进程。
vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Daemon
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
以下是"/etc/systemd/system/docker.service"文件中各个配置项的含义(ps: 这段介绍是gpt生成的,请注意甄别内容的正确性,你觉得我会写的这么详细吗》):
[Unit]
:这个部分包含了服务的元信息,比如描述和文档链接。
Description
:这是服务的简短描述。在这个例子中,它是 “Docker Daemon”。
Documentation
:这是指向服务文档的 URL。在这个例子中,它是 Docker 的官方文档页面。
After
:这个指定了服务启动的顺序。在这个例子中,Docker 服务会在 network.target
和 docker.socket
服务后启动。这意味着 Docker 服务需要网络和 Docker socket 已经就绪才能启动。
Requires
:这个指定了服务启动需要的其他服务或资源。在这个例子中,Docker 服务需要 docker.socket
服务。
[Service]
:这个部分定义了服务的行为。
ExecStart
:这是服务启动时要运行的命令。在这个例子中,它是启动 Docker 守护进程的命令。
ExecReload
:这是服务重新加载配置时要运行的命令。在这个例子中,它是发送 HUP 信号给 Docker 守护进程的命令。HUP 信号通常用于让一个程序重新读取它的配置文件。
Restart
:这指定了服务在失败时是否应该自动重新启动,以及如何重新启动。在这个例子中,如果 Docker 守护进程失败了,systemd 会尝试重新启动它。
RestartSec
:这是在服务失败后,systemd 重新启动服务前等待的秒数。在这个例子中,如果 Docker 守护进程失败了,systemd 会等待 5 秒然后重新启动它。
[Install]
:这个部分定义了服务的安装行为。
WantedBy
:这个指定了服务应该被哪个目标所需要。在 systemd 中,一个目标是一组相关的服务。在这个例子中,multi-user.target
是一个基本的运行级别,它包括了多用户环境需要的所有服务。vim /etc/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=root
[Install]
WantedBy=sockets.target
需要注意的是这里我将用户组(SocketGroup)设置为根用户了,因为这是所有人都有的用户,也是当前的用户,不过这可能导致安全问题,所以请根据自己的情况去修改。
systemctl daemon-reload
systemctl enable docker.service
reboot
docker run hello-world